abstract class Attachments extends AnyRef
EXPERIMENTAL
Attachments provide a way to associate custom metadata with symbols and trees.
Along with symbol and tpe, which represent core metadata of trees, each tree
carries the attachments 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 same attachments 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
with update[T] and remove[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.
- Self Type
- Attachments
- Source
- Attachments.scala
- Alphabetic
- By Inheritance
- Attachments
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Attachments()
Type Members
- abstract type Pos >: Null
The position type of this attachment
Abstract Value Members
- abstract def all: Set[Any]
The underlying payload with the guarantee that no two elements have the same type.
- abstract def isEmpty: Boolean
- abstract def pos: Pos
The underlying position
- abstract def withPos(newPos: Pos): Attachments { type Pos = Attachments.this.Pos }
Creates a copy of this attachment with the position replaced by
newPos
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- Implicit
- This member is added by an implicit conversion from Attachments toany2stringadd[Attachments] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
- def ->[B](y: B): (Attachments, B)
- Implicit
- This member is added by an implicit conversion from Attachments toArrowAssoc[Attachments] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def addElement[T](attachment: T): Attachments { type Pos = Attachments.this.Pos }
Creates a copy of this attachment with the given element added.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def cloneAttachments: Attachments { type Pos = Attachments.this.Pos }
- def contains[T](implicit arg0: ClassTag[T]): Boolean
Check underlying payload contains an instance of type
T. - final def containsElement(element: Any): Boolean
Tests if the given element is attached.
- def ensuring(cond: (Attachments) => Boolean, msg: => Any): Attachments
- Implicit
- This member is added by an implicit conversion from Attachments toEnsuring[Attachments] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: (Attachments) => Boolean): Attachments
- Implicit
- This member is added by an implicit conversion from Attachments toEnsuring[Attachments] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean, msg: => Any): Attachments
- Implicit
- This member is added by an implicit conversion from Attachments toEnsuring[Attachments] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean): Attachments
- Implicit
- This member is added by an implicit conversion from Attachments toEnsuring[Attachments] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def get[T](implicit arg0: ClassTag[T]): Option[T]
An underlying payload of the given class type
T. - final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def remove[T](implicit arg0: ClassTag[T]): Attachments { type Pos = Attachments.this.Pos }
Creates a copy of this attachment with the payload of the given class type
Tremoved. - final def removeElement[T](attachment: T): Attachments { type Pos = Attachments.this.Pos }
Creates a copy of this attachment with the given element removed.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def update[T](attachment: T)(implicit arg0: ClassTag[T]): Attachments { type Pos = Attachments.this.Pos }
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.
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
Deprecated Value Members
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Attachments toStringFormat[Attachments] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)instead ofvalue.formatted(formatString), or use thef""string interpolator. In Java 15 and later,formattedresolves to the new method in String which has reversed parameters.
- def →[B](y: B): (Attachments, B)
- Implicit
- This member is added by an implicit conversion from Attachments toArrowAssoc[Attachments] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.