summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-09-09 15:10:45 +0000
committerMartin Odersky <odersky@gmail.com>2004-09-09 15:10:45 +0000
commit4cdcb6dbae083ee02cd4896600a99a4191fc834a (patch)
tree579e8f1cedea09c7d227933730e07112f5063e50 /sources
parentde650b49b7d0f6dbcb5e67d12c1fd518b2878d14 (diff)
downloadscala-4cdcb6dbae083ee02cd4896600a99a4191fc834a.tar.gz
scala-4cdcb6dbae083ee02cd4896600a99a4191fc834a.tar.bz2
scala-4cdcb6dbae083ee02cd4896600a99a4191fc834a.zip
*** empty log message ***
Diffstat (limited to 'sources')
-rw-r--r--sources/scala/tools/scalac/ast/parser/Parser.scala24
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)
}