The underlying position
Creates a copy of this attachment with the position replaced by newPos
The underlying payload with the guarantee that no two elements have the same type.
Check underlying payload contains an instance of type T.
An underlying payload of the given class type T.
Creates a copy of this attachment with the payload of the given class type T removed.
Creates a copy of this attachment with the payload slot of T added/updated with the provided value.
Creates a copy of this attachment with the payload slot of T added/updated with the provided value. Replaces an existing payload of the same type, if exists.
EXPERIMENTAL
Attachments provide a way to associate custom metadata with symbols and trees.
Along with
symbolandtpe, which represent core metadata of trees, each tree carries theattachmentsfield that can store other metadata: compiler-defined (e.g. positions) or user-defined. Same story is true for symbols, which also have extensible metadata by the virtue of the sameattachmentsfield.Typically attachments just store a scala.reflect.api.Position, but they can be extended to encompass arbitrary payloads. Payloads are stored in type-indexed slots, which can be read with
get[T]and written withupdate[T]andremove[T].This API doesn't have much use in the runtime reflection API (the scala.reflect.api package), but it might be of help for macro writers, providing a way to coordinate multiple macros operating on the same code. Therefore the
attachmentsfield is only declared in trees and symbols belonging to scala.reflect.macros.Universe.