case class FunProto
extends UncachedGroundType with ApplyingProto

A prototype for expressions that appear in function position

: resultType

Constructors

FunProto ( args: List [ Tree ] , resType: Type , typer: Typer )
FunProto ( implicit ctx: Context )

Members

val args : List [ Tree ]
private implicit val ctx : Context
private var evalState : SimpleMap [ Tree, TyperState ]

A map recording the typer states in which arguments stored in myTypedArg were typed

A map recording the typer states in which arguments stored in myTypedArg were typed

private var myTupled : Type
private var myTypedArg : SimpleMap [ Tree, Tree ]

A map in which typed arguments can be stored to be later integrated in typedArgs.

A map in which typed arguments can be stored to be later integrated in typedArgs.

private var myTypedArgs : List [ Tree ]
val resType : Type
private var toDrop : Boolean

If true, the application of this prototype was canceled.

If true, the application of this prototype was canceled.

val typer : Typer
def _1 : T1
def _2 : T2
def _3 : T3
[+] def allArgTypesAreCurrent ( ) ( implicit ctx: Context ) : Boolean

Forget the types of any arguments that have been typed producing a constraint in a typer state that is not yet committed into the one of the current co...

Forget the types of any arguments that have been typed producing a constraint in a typer state that is not yet committed into the one of the current context ctx. This is necessary to avoid "orphan" TypeParamRefs that are referred to from type variables in the typed arguments, but that are not registered in the current constraint. A test case is pos/t1756.scala.

private def cacheTypedArg ( arg: Tree , typerFn: Tree => Tree ) ( implicit ctx: Context ) : Tree
def copy ( args: List [ Tree ] , resType: Type , typer: Typer ) ( implicit ctx: Context ) : FunProto
def copy$default$1 : List [ Tree ]
def copy$default$2 : Type
def copy$default$3 : Typer
override def deepenProto ( implicit ctx: Context ) : Type

If this is a prototype with some ignored component, reveal one more layer of it. Otherwise the type itself.

If this is a prototype with some ignored component, reveal one more layer of it. Otherwise the type itself.

def derivedFunProto ( args: List [ Tree ] , resultType: Type , typer: Typer ) : FunProto
def derivedFunProto$default$1 : List [ Tree ]
def derivedFunProto$default$3 : Typer
private def evalState_= ( x$1: SimpleMap [ Tree, TyperState ] ) : Unit

A map recording the typer states in which arguments stored in myTypedArg were typed

A map recording the typer states in which arguments stored in myTypedArg were typed

def fold ( x: T , ta: TypeAccumulator [ T ] ) ( implicit ctx: Context ) : T
def isDropped : Boolean
def isMatchedBy ( tp: Type ) ( implicit ctx: Context ) : Boolean
def isTupled : Boolean

Somebody called the tupled method of this prototype

Somebody called the tupled method of this prototype

def map ( tm: TypeMap ) ( implicit ctx: Context ) : FunProto
[+] def markAsDropped ( ) : Unit

Cancel the application of this prototype. This can happen for a nullary application f() if f refers to a symbol that exists both in parameterless form d...

Cancel the application of this prototype. This can happen for a nullary application f() if f refers to a symbol that exists both in parameterless form def f and nullary method form def f(). A common example for such a method is toString. If in that case the type in the denotation is parameterless, we compensate by dropping the application.

private def myTupled_= ( x$1: Type ) : Unit
private def myTypedArg_= ( x$1: SimpleMap [ Tree, Tree ] ) : Unit

A map in which typed arguments can be stored to be later integrated in typedArgs.

A map in which typed arguments can be stored to be later integrated in typedArgs.

private def myTypedArgs_= ( x$1: List [ Tree ] ) : Unit
override def notApplied : Type

If this is a FunProto or PolyProto, WildcardType, otherwise this.

If this is a FunProto or PolyProto, WildcardType, otherwise this.

override def resultType ( implicit ctx: Context ) : Type

The resultType of a LambdaType, or ExprType, the type itself for others

The resultType of a LambdaType, or ExprType, the type itself for others

private def toDrop_= ( x$1: Boolean ) : Unit

If true, the application of this prototype was canceled.

If true, the application of this prototype was canceled.

override def toString : String
def tupled : FunProto

The same proto-type but with all arguments combined in a single tuple

The same proto-type but with all arguments combined in a single tuple

def typeOfArg ( arg: Tree ) ( implicit ctx: Context ) : Type

The type of the argument arg.

The type of the argument arg.

def typedArg ( arg: Tree , formal: Type ) ( implicit ctx: Context ) : Tree

Type single argument and remember the unadapted result in myTypedArg. used to avoid repeated typings of trees when backtracking.

Type single argument and remember the unadapted result in myTypedArg. used to avoid repeated typings of trees when backtracking.

def typedArgs : List [ Tree ]

The typed arguments. This takes any arguments already typed using typedArg into account.

The typed arguments. This takes any arguments already typed using typedArg into account.