diff options
author | Martin Odersky <odersky@gmail.com> | 2004-09-09 15:10:45 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-09-09 15:10:45 +0000 |
commit | 4cdcb6dbae083ee02cd4896600a99a4191fc834a (patch) | |
tree | 579e8f1cedea09c7d227933730e07112f5063e50 | |
parent | de650b49b7d0f6dbcb5e67d12c1fd518b2878d14 (diff) | |
download | scala-4cdcb6dbae083ee02cd4896600a99a4191fc834a.tar.gz scala-4cdcb6dbae083ee02cd4896600a99a4191fc834a.tar.bz2 scala-4cdcb6dbae083ee02cd4896600a99a4191fc834a.zip |
*** empty log message ***
-rw-r--r-- | sources/scala/tools/scalac/ast/parser/Parser.scala | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/sources/scala/tools/scalac/ast/parser/Parser.scala b/sources/scala/tools/scalac/ast/parser/Parser.scala index d606e7d527..590eff857e 100644 --- a/sources/scala/tools/scalac/ast/parser/Parser.scala +++ b/sources/scala/tools/scalac/ast/parser/Parser.scala @@ -1491,7 +1491,8 @@ class Parser(unit: CompilationUnit) { .asInstanceOf[Array[Tree$ValDef]] } - /** Param ::= Id `:' [`=>'] Type [`*'] + /** Param ::= Id `:' ParamType + * ParamType ::= Type | Type `*' | `=>' Type * ClassParam ::= [[modifiers] val] Param */ def param(ofPrimaryConstructor: boolean): Tree$ValDef = { @@ -1512,18 +1513,21 @@ class Parser(unit: CompilationUnit) { } val name = ident(); accept(COLON); + var tp: Tree = null; if (s.token == ARROW) { mods = mods | Modifiers.DEF; s.nextToken(); - } - var tp = typ(); - if (s.token == IDENTIFIER && s.name == STAR) { - s.nextToken(); - mods = mods | Modifiers.REPEATED; - tp = make.AppliedType( - tp.pos, - scalaDot(tp.pos, Names.Seq.toTypeName()), - NewArray.Tree(tp)); + tp = typ(); + } else { + tp = typ(); + if (s.token == IDENTIFIER && s.name == STAR) { + s.nextToken(); + mods = mods | Modifiers.REPEATED; + tp = make.AppliedType( + tp.pos, + scalaDot(tp.pos, Names.Seq.toTypeName()), + NewArray.Tree(tp)); + } } make.ValDef(pos, mods, name, tp, Tree.Empty) } |