trait Unapplies extends TreeDSL
- Alphabetic
- By Inheritance
- Unapplies
- TreeDSL
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Type Members
- class ClassForCaseCompanionAttachment extends AnyRef
Concrete Value Members
- object CODE
- Definition Classes
- TreeDSL
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (Unapplies, B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def caseClassCopyMeth(cdef: Global.ClassDef): Option[Global.DefDef]
Generates copy methods for case classes.
Generates copy methods for case classes. Copy only has defaults on the first parameter list, as of scala/bug#5009.
The parameter types of the copy method need to be exactly the same as the parameter types of the primary constructor. Just copying the TypeTree is not enough: a type
C
might refer to something else *inside* the class (i.e. as parameter type ofcopy
) than *outside* the class (i.e. in the class parameter list).One such example is t0054.scala: class A { case class B(x: C) extends A { def copy(x: C = x) = ... } class C {} } (1) (2)
The reference (1) to C is
A.this.C
. The reference (2) isB.this.C
- not the same.This is fixed with a hack currently.
Unapplies.caseClassCopyMeth
, which creates the copy method, uses emptyTypeTree()
nodes for parameter types.In
Namers.enterDefDef
, the copy method gets a special type completer (enterCopyMethod
). Before computing the body type ofcopy
, the class parameter types are assigned the copy method parameters.This attachment class stores the copy method parameter ValDefs as an attachment in the ClassDef of the case class.
- def caseModuleApplyMeth(cdef: Global.ClassDef): Global.DefDef
The apply method corresponding to a case class
- def caseModuleDef(cdef: Global.ClassDef): Global.ModuleDef
The module corresponding to a case class; overrides toString to show the module's name
- def caseModuleUnapplyMeth(cdef: Global.ClassDef): Global.DefDef
The unapply method corresponding to a case class
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def companionModuleDef(cdef: Global.ClassDef, parents: List[Global.Tree] = Nil, body: List[Global.Tree] = Nil): Global.ModuleDef
- def directUnapplyMember(tp: Global.Type): Global.Symbol
Returns unapply or unapplySeq if available, without further checks.
- def ensuring(cond: (Unapplies) => Boolean, msg: => Any): Unapplies
- def ensuring(cond: (Unapplies) => Boolean): Unapplies
- def ensuring(cond: Boolean, msg: => Any): Unapplies
- def ensuring(cond: Boolean): Unapplies
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def factoryMeth(mods: Global.Modifiers, name: Global.TermName, cdef: Global.ClassDef): Global.DefDef
The apply method corresponding to a case class
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def formatted(fmtstr: String): String
- 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()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def unapplyMember(tp: Global.Type): Global.Symbol
Filters out unapplies with invalid shapes: extractor methods must have either one unary param list or one unary param list and an implicit param list.
- final def validateUnapplyMember(tp: Global.Type): UnapplyMemberResult.Value
- Annotations
- @tailrec()
- 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()
- object HasUnapply
- object UnapplyMemberResult extends Enumeration
Deprecated Value Members
- def →[B](y: B): (Unapplies, B)
- Implicit
- This member is added by an implicit conversion from Unapplies toArrowAssoc[Unapplies] 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.
The Scala compiler and reflection APIs.