class Extender extends TypingTransformer
- Alphabetic
- By Inheritance
- Extender
- TypingTransformer
- Transformer
- InternalTransformer
- Transformer
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Instance Constructors
- new Extender(unit: Global.CompilationUnit)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (Extender, B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def atOwner[A](tree: Global.Tree, owner: Global.Symbol)(trans: => A): A
- Definition Classes
- TypingTransformer
- final def atOwner[A](owner: Global.Symbol)(trans: => A): A
- Definition Classes
- TypingTransformer → Transformer
- final def checkNonCyclic(pos: Global.Position, seen: Set[Global.Symbol], clazz: Global.Symbol): Unit
- Annotations
- @tailrec()
- def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- var curTree: Global.Tree
- Attributes
- protected
- Definition Classes
- TypingTransformer
- def currentClass: Global.Symbol
- Attributes
- protected
- Definition Classes
- Transformer
- def currentMethod: Global.Symbol
- Attributes
- protected
- Definition Classes
- Transformer
- var currentOwner: Global.Symbol
- Attributes
- protected[scala]
- Definition Classes
- Transformer
- def ensuring(cond: (Extender) => Boolean, msg: => Any): Extender
- def ensuring(cond: (Extender) => Boolean): Extender
- def ensuring(cond: Boolean, msg: => Any): Extender
- def ensuring(cond: Boolean): Extender
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def extensionMethInfo(extensionMeth: Global.Symbol, origInfo: Global.Type, clazz: Global.Symbol): Global.Type
We will need to clone the info of the original method (which obtains clones of the method type parameters), clone the type parameters of the value class, and create a new polymethod with the union of all those type parameters, with their infos adjusted to be consistent with their new home.
We will need to clone the info of the original method (which obtains clones of the method type parameters), clone the type parameters of the value class, and create a new polymethod with the union of all those type parameters, with their infos adjusted to be consistent with their new home. Example:
class Foo[+A <: AnyRef](val xs: List[A]) extends AnyVal { def baz[B >: A](x: B): List[B] = x :: xs // baz has to be transformed into this extension method, where // A is cloned from class Foo and B is cloned from method baz: // def extension$baz[B >: A <: Any, A >: Nothing <: AnyRef]($this: Foo[A])(x: B): List[B] }
TODO: factor out the logic for consolidating type parameters from a class and a method for re-use elsewhere, because nobody will get this right without some higher level facilities.
- def finalize(): Unit
- Attributes
- protected[java.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
- var localTyper: (analyzer)#Typer
- Definition Classes
- TypingTransformer
- 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 transform(tree: Global.Tree): Global.Tree
- Definition Classes
- Extender → TypingTransformer → InternalTransformer → Transformer
- def transformCaseDefs(trees: List[Global.CaseDef]): List[Global.CaseDef]
- Definition Classes
- Transformer
- def transformIdents(trees: List[Global.Ident]): List[Global.Ident]
- Definition Classes
- Transformer
- def transformMemberDefs(trees: List[Global.MemberDef]): List[Global.MemberDef]
- Definition Classes
- Transformer
- def transformModifiers(mods: Global.Modifiers): Global.Modifiers
- Definition Classes
- Transformer
- def transformStats(stats: List[Global.Tree], exprOwner: Global.Symbol): List[Global.Tree]
- Definition Classes
- Extender → Transformer
- def transformTemplate(tree: Global.Template): Global.Template
- Definition Classes
- Transformer
- def transformTrees(trees: List[Global.Tree]): List[Global.Tree]
- Definition Classes
- Transformer
- def transformTypeDefs(trees: List[Global.TypeDef]): List[Global.TypeDef]
- Definition Classes
- Transformer
- def transformUnit(unit: Global.CompilationUnit): Unit
- Definition Classes
- Transformer
- def transformValDef(tree: Global.ValDef): Global.ValDef
- Definition Classes
- Transformer
- def transformValDefs(trees: List[Global.ValDef]): List[Global.ValDef]
- Definition Classes
- Transformer
- def transformValDefss(treess: List[List[Global.ValDef]]): List[List[Global.ValDef]]
- Definition Classes
- Transformer
- val treeCopy: Global.TreeCopier
- Definition Classes
- Transformer
- 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 →[B](y: B): (Extender, B)
- Implicit
- This member is added by an implicit conversion from Extender toArrowAssoc[Extender] 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.