From 4cdcb6dbae083ee02cd4896600a99a4191fc834a Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Thu, 9 Sep 2004 15:10:45 +0000 Subject: *** empty log message *** --- sources/scala/tools/scalac/ast/parser/Parser.scala | 24 +++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'sources') 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) } -- cgit v1.2.3