diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/04-basic-declarations-and-definitions.md | 2 | ||||
-rw-r--r-- | spec/05-classes-and-objects.md | 2 | ||||
-rw-r--r-- | spec/06-expressions.md | 17 | ||||
-rw-r--r-- | spec/08-pattern-matching.md | 2 | ||||
-rw-r--r-- | spec/09-top-level-definitions.md | 2 |
5 files changed, 19 insertions, 6 deletions
diff --git a/spec/04-basic-declarations-and-definitions.md b/spec/04-basic-declarations-and-definitions.md index aca1c63d22..65d79dd5f4 100644 --- a/spec/04-basic-declarations-and-definitions.md +++ b/spec/04-basic-declarations-and-definitions.md @@ -631,7 +631,7 @@ For every parameter $p_{i,j}$ with a default argument a method named expression. Here, $n$ denotes the parameter's position in the method declaration. These methods are parametrized by the type parameter clause `[$\mathit{tps}\,$]` and all value parameter clauses -`($\mathit{ps}_1$)$\ldots$($\mathit{ps}_{i-1}$)` preceeding $p_{i,j}$. +`($\mathit{ps}_1$)$\ldots$($\mathit{ps}_{i-1}$)` preceding $p_{i,j}$. The `$f\$$default$\$$n` methods are inaccessible for user programs. diff --git a/spec/05-classes-and-objects.md b/spec/05-classes-and-objects.md index ef854b2abb..fd20d6ae2c 100644 --- a/spec/05-classes-and-objects.md +++ b/spec/05-classes-and-objects.md @@ -128,7 +128,7 @@ consists of the following steps. occurrence in the linearization. - Finally the statement sequence $\mathit{stats}\,$ is evaluated. -###### Delayed Initializaton +###### Delayed Initialization The initialization code of an object or class (but not a trait) that follows the superclass constructor invocation and the mixin-evaluation of the template's base diff --git a/spec/06-expressions.md b/spec/06-expressions.md index afd1492744..bb6cc2a89a 100644 --- a/spec/06-expressions.md +++ b/spec/06-expressions.md @@ -410,6 +410,19 @@ The final result of the transformation is a block of the form } ``` +### Signature Polymorphic Methods + +For invocations of signature polymorphic methods of the target platform `$f$($e_1 , \ldots , e_m$)`, +the invoked function has a different method type `($p_1$:$T_1 , \ldots , p_n$:$T_n$)$U$` at each call +site. The parameter types `$T_ , \ldots , T_n$` are the types of the argument expressions +`$e_1 , \ldots , e_m$` and `$U$` is the expected type at the call site. If the expected type is +undefined then `$U$` is `scala.AnyRef`. The parameter names `$p_1 , \ldots , p_n$` are fresh. + +###### Note + +On the Java platform version 7 and later, the methods `invoke` and `invokeExact` in class +`java.lang.invoke.MethodHandle` are signature polymorphic. + ## Method Values ```ebnf @@ -666,7 +679,7 @@ followed by operators starting with ``|`', etc. There's one exception to this rule, which concerns [_assignment operators_](#assignment-operators). -The precedence of an assigment operator is the same as the one +The precedence of an assignment operator is the same as the one of simple assignment `(=)`. That is, it is lower than the precedence of any other operator. @@ -1761,7 +1774,7 @@ trait Dynamic { ``` Assume a selection of the form $e.x$ where the type of $e$ conforms to `scala.Dynamic`. -Further assuming the selection is not followed by any function arguments, such an expression can be rewitten under the conditions given [here](#implicit-conversions) to: +Further assuming the selection is not followed by any function arguments, such an expression can be rewritten under the conditions given [here](#implicit-conversions) to: ```scala $e$.applyDynamic("$x$") diff --git a/spec/08-pattern-matching.md b/spec/08-pattern-matching.md index 3538457b5c..e75bddc096 100644 --- a/spec/08-pattern-matching.md +++ b/spec/08-pattern-matching.md @@ -609,7 +609,7 @@ case class If[T](c: Term[Boolean], There are terms to represent numeric literals, incrementation, a zero test, and a conditional. Every term carries as a type parameter the -type of the expression it representes (either `Int` or `Boolean`). +type of the expression it represents (either `Int` or `Boolean`). A type-safe evaluator for such terms can be written as follows. diff --git a/spec/09-top-level-definitions.md b/spec/09-top-level-definitions.md index 847fab548d..e3185d8b7d 100644 --- a/spec/09-top-level-definitions.md +++ b/spec/09-top-level-definitions.md @@ -159,7 +159,7 @@ The `main` method of a program can be directly defined in the object, or it can be inherited. The scala library defines a special class `scala.App` whose body acts as a `main` method. An objects $m$ inheriting from this class is thus a program, -which executes the initializaton code of the object $m$. +which executes the initialization code of the object $m$. ###### Example The following example will create a hello world program by defining |