trait NamesDefaults extends AnyRef
- Alphabetic
- By Inheritance
- NamesDefaults
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Type Members
- class CaseApplyDefaultGetters extends AnyRef
- class ConstructorDefaultsAttachment extends AnyRef
- class DefaultsOfLocalMethodAttachment extends AnyRef
- case class NamedApplyInfo(qual: Option[Global.Tree], targs: List[Global.Tree], vargss: List[List[Global.Tree]], blockTyper: Analyzer.Typer) extends Product with Serializable
Value Members
- def addDefaults(givenArgs: List[Global.Tree], qual: Option[Global.Tree], targs: List[Global.Tree], previousArgss: List[List[Global.Tree]], params: List[Global.Symbol], pos: Position, context: Analyzer.Context): (List[Global.Tree], List[Global.Symbol])
Extend the argument list
givenArgs
with default arguments.Extend the argument list
givenArgs
with default arguments. Defaults are added as named arguments calling the corresponding default getter.Example: given def foo(x: Int = 2, y: String = "def") foo(y = "lt") the argument list (y = "lt") is transformed to (y = "lt", x = foo$default$1())
- def allArgsArePositional(a: Array[Int]): Boolean
returns
true
if every element is equal to its index - def defaultGetter(param: Global.Symbol, context: Analyzer.Context): Global.Symbol
For a parameter with default argument, find the method symbol of the default getter.
- def isNamedArg(arg: Global.Tree): Boolean
- def makeNamedTypes(syms: List[Global.Symbol]): collection.immutable.List[Global.NamedType]
- def missingParams[T](args: List[T], params: List[Global.Symbol], argName: (T) => Option[Global.Name]): (List[Global.Symbol], Boolean)
Returns the parameter symbols of an invocation expression that are not defined by the list of arguments.
Returns the parameter symbols of an invocation expression that are not defined by the list of arguments.
- args
The list of arguments
- params
The list of parameter symbols of the invoked method
- argName
A function that extracts the name of an argument expression, if it is a named argument.
- def removeNames(typer: Analyzer.Typer)(args: List[Global.Tree], params: List[Global.Symbol]): (List[Global.Tree], Array[Int])
Removes name assignments from args.
Removes name assignments from args. Additionally, returns an array mapping argument indices from call-site-order to definition-site-order.
Verifies that names are not specified twice, and positional args don't appear after named ones.
- def reorderArgs[T](args: List[T], pos: (Int) => Int)(implicit arg0: ClassTag[T]): List[T]
- pos
maps indices from old to new
- def transformNamedApplication(typer: Analyzer.Typer, mode: Mode, pt: Global.Type)(tree: Global.Tree, argPos: (Int) => Int): Global.Tree
Transform a function application into a Block, and assigns typer.context .namedApplyBlockInfo to the new block as side-effect.
Transform a function application into a Block, and assigns typer.context .namedApplyBlockInfo to the new block as side-effect. If tree has the form Apply(fun, args) first the function "fun" (which might be an application itself!) is transformed into a block of the form { val qual$1 = qualifier_of_fun val x$1 = arg_1_of_fun ... val x$n = arg_n_of_fun qual$1.fun[targs](x$1, ...)...(..., x$n) } then for each argument in args, a value is created and entered into the block. finally the application expression of the block is updated. { val qual$1 = .. ... val x$n = ... > val qual$n+1 = arg(1) > ... > val qual$n+m = arg(m) > qual$1.fun[targs](x$1, ...)...(..., x$n)(x$n+1, ..., x$n+m) }
- typer
the typer calling this method; this method calls typer.doTypedApply
- mode
the mode to use for calling typer.doTypedApply
- pt
the expected type for calling typer.doTypedApply
- tree
the function application tree
- argPos
a function mapping arguments from their current position to the position specified by the method type. example: def foo(a: Int, b: String) foo(b = "1", a = 2) calls transformNamedApplication(Apply(foo, List("1", 2), { 0 => 1, 1 => 0 })
- returns
the transformed application (a Block) together with the NamedApplyInfo. if isNamedApplyBlock(tree), returns the existing context.namedApplyBlockInfo
- object NamedApplyBlock
The Scala compiler and reflection APIs.