Class scala.reflect.macros.Attachments

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
Linear Supertypes
Known Subclasses

Instance Constructors

new Attachments()

Type Members

abstract type Pos >: Null

Abstract Value Members

abstract def pos: Pos

abstract def withPos(newPos: Pos): Attachments { type Pos = Attachments.this.Pos }

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

def all: Set[Any]

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

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 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
@inline()

def get[T](implicit arg0: ClassTag[T]): Option[T]

final def getClass(): Class[_]

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Definition Classes
AnyRef → Any
Annotations
@native()

def isEmpty: Boolean

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 }

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. 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

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala-reflect/scala/reflect/macros/Attachments.html