diff options
author | Martin Odersky <odersky@gmail.com> | 2009-11-17 13:12:31 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-11-17 13:12:31 +0000 |
commit | 79cbdefa47d77b6785b614b895dc03ede84a7328 (patch) | |
tree | f68fc8ca3d9f617c85a219bf25cb444308e41146 /src/compiler | |
parent | 9aafbff378c3721cdc98ce3e9266950c3f443770 (diff) | |
download | scala-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/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/parser/Parsers.scala | 10 |
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) { |