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
- All
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 to any2stringadd[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 to ArrowAssoc[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( ... ) @native()
-
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 to Ensuring[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 to Ensuring[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 to Ensuring[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 to Ensuring[Attachments] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): 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[_]
- 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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
→[B](y: B): (Attachments, B)
- Implicit
- This member is added by an implicit conversion from Attachments to ArrowAssoc[Attachments] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
Deprecated Value Members
-
def
formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Attachments to StringFormat[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.