abstract class UnCurry extends SubComponent with InfoTransform with reflect.internal.transform.UnCurry with TypingTransformers with TreeDSL
- uncurry all symbol and tree types (@see UnCurryPhase) -- this includes normalizing all proper types.
- for every curried parameter list: (ps_1) ... (ps_n) ==> (ps_1, ..., ps_n)
- for every curried application: f(args_1)...(args_n) ==> f(args_1, ..., args_n)
- for every type application: f[Ts] ==> f[Ts]() unless followed by parameters
- for every use of a parameterless function: f ==> f() and q.f ==> q.f()
- for every def-parameter: x: => T ==> x: () => T
- for every use of a def-parameter: x ==> x.apply()
- for every argument to a def parameter
x: => T': if argument is not a reference to a def parameter: convert argument
eto (expansion of)
() => e' - for every repeated Scala parameter
x: T*' --> x: Seq[T].
- for every repeated Java parameter
x: T...' --> x: Array[T], except: if T is an unbounded abstract type, replace --> x: Array[Object]
- for every method defining repeated parameters annotated with @varargs, generate a synthetic Java-style vararg method
- for every argument list that corresponds to a repeated Scala parameter (a_1, ..., a_n) => (Seq(a_1, ..., a_n))
- for every argument list that corresponds to a repeated Java parameter (a_1, ..., a_n) => (Array(a_1, ..., a_n))
- for every argument list that is an escaped sequence (a_1:_*) => (a_1) (possibly converted to sequence or array, as needed)
- convert implicit method types to method types
- convert non-trivial catches in try statements to matches
- convert non-local returns to throws with enclosing try statements.
- convert try-catch expressions in contexts where there might be values on the stack to a local method and a call to it (since an exception empties the evaluation stack):
meth(x_1,..., try { x_i } catch { ..}, .. x_b0) ==> { def liftedTry$1 = try { x_i } catch { .. } meth(x_1, .., liftedTry$1(), .. ) }
- remove calls to elidable methods and replace their bodies with NOPs when elide-below requires it
- Source
- UnCurry.scala
- Alphabetic
- By Inheritance
- UnCurry
- TreeDSL
- TypingTransformers
- UnCurry
- InfoTransform
- Transform
- SubComponent
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new UnCurry()
Type Members
- abstract class StdPhase extends GlobalPhase
A standard phase template
A standard phase template
- Definition Classes
- SubComponent
- class Phase extends InfoTransform.Phase
- Definition Classes
- InfoTransform
- abstract class ThicketTransformer extends TypingTransformer
A base class for typing transformers that need to perform "thicket expansion".
A base class for typing transformers that need to perform "thicket expansion". A thicket is the output of a transformation that is flattened into the enclosing block.
- Definition Classes
- TypingTransformers
- abstract class TypingTransformer extends Global.Transformer
- Definition Classes
- TypingTransformers
- class UnCurryTransformer extends TypingTransformer
- case class VarargsSymbolAttachment extends Product with Serializable
- Definition Classes
- UnCurry
Abstract Value Members
- abstract val global: Global
The global environment; overridden by instantiation in Global.
The global environment; overridden by instantiation in Global.
- Definition Classes
- UnCurry → TreeDSL → TypingTransformers → UnCurry → SubComponent
- abstract val runsAfter: List[String]
Names of phases that must run before this phase.
Names of phases that must run before this phase.
- Definition Classes
- SubComponent
- abstract val runsRightAfter: Option[String]
Name of the phase that this phase must follow immediately.
Name of the phase that this phase must follow immediately.
- Definition Classes
- SubComponent
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): (UnCurry, B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def afterOwnPhase[T](op: => T): T
- Definition Classes
- SubComponent
- Annotations
- @inline()
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def beforeOwnPhase[T](op: => T): T
- Definition Classes
- SubComponent
- Annotations
- @inline()
- def changesBaseClasses: Boolean
- Definition Classes
- UnCurry → InfoTransform
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def enabled: Boolean
Is this component enabled? Default is true.
Is this component enabled? Default is true.
- Definition Classes
- SubComponent
- def ensuring(cond: (UnCurry) => Boolean, msg: => Any): UnCurry
- def ensuring(cond: (UnCurry) => Boolean): UnCurry
- def ensuring(cond: Boolean, msg: => Any): UnCurry
- def ensuring(cond: Boolean): UnCurry
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): 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
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
SubComponents are added to a HashSet and two phases are the same if they have the same name.
SubComponents are added to a HashSet and two phases are the same if they have the same name.
- Definition Classes
- SubComponent → AnyRef → Any
- val initial: Boolean
True if this phase runs before all other phases.
True if this phase runs before all other phases. Usually,
parser
.- Definition Classes
- SubComponent
- val internal: Boolean
True if this phase is not provided by a plug-in.
True if this phase is not provided by a plug-in.
- Definition Classes
- SubComponent
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def keepsTypeParams: Boolean
- Attributes
- protected
- Definition Classes
- InfoTransform
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def newPhase(prev: nsc.Phase): StdPhase
Create a new phase which applies transformer
Create a new phase which applies transformer
- Definition Classes
- InfoTransform → Transform → SubComponent
- def newRootLocalTyper(unit: Global.CompilationUnit): (analyzer)#Typer
- Attributes
- protected
- Definition Classes
- TypingTransformers
- def newTransformer(unit: Global.CompilationUnit): Global.Transformer
The transformer factory
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def ownPhase: nsc.Phase
The phase corresponding to this subcomponent in the current compiler run.
The phase corresponding to this subcomponent in the current compiler run.
- Definition Classes
- SubComponent
- val phaseName: String
The name of the phase
The name of the phase
- Definition Classes
- UnCurry → SubComponent
- def phaseNewFlags: Long
New flags defined by the phase which are not valid before
New flags defined by the phase which are not valid before
- Definition Classes
- SubComponent
- def phaseNextFlags: Long
New flags defined by the phase which are not valid until immediately after it
New flags defined by the phase which are not valid until immediately after it
- Definition Classes
- SubComponent
- val requires: List[String]
Names of phases required by this component.
Names of phases required by this component. Default is
Nil
.- Definition Classes
- SubComponent
- val runsBefore: List[String]
Names of phases that must run after this phase.
Names of phases that must run after this phase. Default is
Nil
.- Definition Classes
- SubComponent
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- val terminal: Boolean
True if this phase runs after all other phases.
True if this phase runs after all other phases. Usually,
terminal
.- Definition Classes
- SubComponent
- def toString(): String
- Definition Classes
- AnyRef → Any
- def transformInfo(sym: Global.Symbol, tp: Global.Type): Global.Type
- Definition Classes
- UnCurry
- val uncurry: Global.TypeMap
- Definition Classes
- UnCurry
- 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 DesugaredParameterType
- Definition Classes
- UnCurry
Deprecated Value Members
- def →[B](y: B): (UnCurry, B)
- Implicit
- This member is added by an implicit conversion from UnCurry toArrowAssoc[UnCurry] 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.