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
Cmight 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])
- 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 formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Unapplies toStringFormat[Unapplies] 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): (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.