summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-11-17 13:12:31 +0000
committerMartin Odersky <odersky@gmail.com>2009-11-17 13:12:31 +0000
commit79cbdefa47d77b6785b614b895dc03ede84a7328 (patch)
treef68fc8ca3d9f617c85a219bf25cb444308e41146 /src
parent9aafbff378c3721cdc98ce3e9266950c3f443770 (diff)
downloadscala-79cbdefa47d77b6785b614b895dc03ede84a7328.tar.gz
scala-79cbdefa47d77b6785b614b895dc03ede84a7328.tar.bz2
scala-79cbdefa47d77b6785b614b895dc03ede84a7328.zip
Allow implicit modifier on single-parameter fun...
Allow implicit modifier on single-parameter function literals. Fixes and closes #1492.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index a4f228cffb..356f4621a4 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -957,7 +957,7 @@ self =>
*/
def statement(location: Int): Tree = expr(location) // !!! still needed?
- /** Expr ::= (Bindings | Id | `_') `=>' Expr
+ /** Expr ::= (Bindings | [`implicit'] Id | `_') `=>' Expr
* | Expr1
* ResultExpr ::= (Bindings | Id `:' CompoundType) `=>' Block
* | Expr1
@@ -1057,6 +1057,14 @@ self =>
atPos(in.skipToken()) {
Throw(expr())
}
+ case IMPLICIT =>
+ val start = in.skipToken()
+ val param0 = convertToParam(atPos(in.offset)(Ident(ident())))
+ val param = treeCopy.ValDef(param0, param0.mods | Flags.IMPLICIT, param0.name, param0.tpt, param0.rhs)
+ atPos(start, in.offset) {
+ accept(ARROW)
+ Function(List(param), if (location != InBlock) expr() else block())
+ }
case _ =>
var t = postfixExpr()
if (in.token == EQUALS) {