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.
Returns string formatted according to given format
string.
Returns string formatted according to given format
string.
Format strings are as for String.format
(@see java.lang.String.format).
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
symbol
andtpe
, which represent core metadata of trees, each tree carries theattachments
field 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 sameattachments
field.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
attachments
field is only declared in trees and symbols belonging to scala.reflect.macros.Universe.