diff options
author | Martin Odersky <odersky@gmail.com> | 2005-08-29 14:38:38 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-08-29 14:38:38 +0000 |
commit | 184a284ccc9c842adaaec728914f11a2cad33c18 (patch) | |
tree | 25ae4ff123300b6dc24f4c1a2ec0182105e75ec6 /sources/scala/tools/nsc/ast/parser/Parsers.scala | |
parent | 7d50bd127a071b84cc3d5e6e989b5f57d5988aaf (diff) | |
download | scala-184a284ccc9c842adaaec728914f11a2cad33c18.tar.gz scala-184a284ccc9c842adaaec728914f11a2cad33c18.tar.bz2 scala-184a284ccc9c842adaaec728914f11a2cad33c18.zip |
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/ast/parser/Parsers.scala')
-rwxr-xr-x | sources/scala/tools/nsc/ast/parser/Parsers.scala | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sources/scala/tools/nsc/ast/parser/Parsers.scala b/sources/scala/tools/nsc/ast/parser/Parsers.scala index 79bc2b024c..b002dfd967 100755 --- a/sources/scala/tools/nsc/ast/parser/Parsers.scala +++ b/sources/scala/tools/nsc/ast/parser/Parsers.scala @@ -753,7 +753,7 @@ abstract class Parsers: SyntaxAnalyzer { * | SimpleExpr1 ArgumentExprs */ def simpleExpr(): Tree = { - var t: Tree = _; + var t: Tree = null; var isNew = false; in.token match { case CHARLIT | INTLIT | LONGLIT | FLOATLIT | DOUBLELIT | STRINGLIT | @@ -1111,6 +1111,7 @@ abstract class Parsers: SyntaxAnalyzer { */ def paramClauses(owner: Name, implicitViews: List[Tree], ofCaseClass: boolean): List[List[ValDef]] = { var implicitmod = 0; + var caseParam = ofCaseClass; def param(): ValDef = { atPos(in.pos) { var mods = Flags.PARAM; @@ -1119,8 +1120,9 @@ abstract class Parsers: SyntaxAnalyzer { if (in.token == VAL) in.nextToken() else { if (mods != Flags.PARAMACCESSOR) accept(VAL); - if (!ofCaseClass) mods = mods | Flags.PRIVATE | Flags.LOCAL; + if (!(caseParam)) mods = mods | Flags.PRIVATE | Flags.LOCAL; } + if (caseParam) mods = mods | Flags.CASEACCESSOR; } val name = ident(); accept(COLON); @@ -1149,13 +1151,14 @@ abstract class Parsers: SyntaxAnalyzer { in.nextToken(); vds += paramClause(); accept(RPAREN); + caseParam = false } val result = vds.toList; if (owner == nme.CONSTRUCTOR && (result.isEmpty || (!result.head.isEmpty && (result.head.head.mods & Flags.IMPLICIT) != 0))) syntaxError(pos, "auxiliary constructor needs non-implicit parameter list", false); - addImplicitViews(result, implicitViews) + addImplicitViews(owner, result, implicitViews) } /** ParamType ::= Type | `=>' Type | Type `*' |