diff options
author | Martin Odersky <odersky@gmail.com> | 2003-11-28 18:28:10 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-11-28 18:28:10 +0000 |
commit | ee3559b8bd67e39638dd93e1dc832a210c2ac374 (patch) | |
tree | f1b0e56d241894a873b3b8020feb02b093eb9bfc /sources/scalac/typechecker/Analyzer.java | |
parent | daea8b76a5f9dd35e54f4d524691187850202182 (diff) | |
download | scala-ee3559b8bd67e39638dd93e1dc832a210c2ac374.tar.gz scala-ee3559b8bd67e39638dd93e1dc832a210c2ac374.tar.bz2 scala-ee3559b8bd67e39638dd93e1dc832a210c2ac374.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/typechecker/Analyzer.java')
-rw-r--r-- | sources/scalac/typechecker/Analyzer.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sources/scalac/typechecker/Analyzer.java b/sources/scalac/typechecker/Analyzer.java index b11f3ac85a..3457499228 100644 --- a/sources/scalac/typechecker/Analyzer.java +++ b/sources/scalac/typechecker/Analyzer.java @@ -917,9 +917,9 @@ public class Analyzer extends Transformer implements Modifiers, Kinds { enterSym(params[i]); switch (params[i]) { case ValDef(int mods, _, _, _): - if ((mods & REPEATED) != 0 && params.length > 1) + if ((mods & REPEATED) != 0 && i != params.length - 1) error(params[i].pos, - "`*' parameter must be the only parameter of a `('...`)' section"); + "`*' parameter must be the last parameter of a `('...`)' section"); } } return Tree.symbolOf(params); @@ -1782,11 +1782,13 @@ public class Analyzer extends Transformer implements Modifiers, Kinds { } } // desugarizing ident patterns - if (params.length == 1 && (params[0].flags & REPEATED) != 0) { + if (params.length > 0 && + (params[params.length - 1].flags & REPEATED) != 0) { if (( mode & PATTERNmode ) != 0 ) { desug_allIdentPatterns( args, context.owner ); } else { - assert (args.length != 1 || !(args[0] instanceof Tree.Sequence)); + assert (args.length != params.length || + !(args[params.length-1] instanceof Tree.Sequence)); } } return argtypes; @@ -2392,7 +2394,9 @@ public class Analyzer extends Transformer implements Modifiers, Kinds { switch (alttp) { case MethodType(Symbol[] params, _): if (params.length == args.length || - params.length == 1 && (params[0].flags & REPEATED) != 0) { + params.length > 0 && + args.length >= params.length - 1 && + (params[params.length-1].flags & REPEATED) != 0) { matching2 = matching1; matching1 = i; } |