summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-12-21 13:47:53 +0000
committerMartin Odersky <odersky@gmail.com>2005-12-21 13:47:53 +0000
commit99b6474dabc8a4bcc9282f041d48fb9671c4f2b8 (patch)
treec701a1fac4866e0c7c0d41e49edd69c0c633f06f /src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
parent7ccea812b72c15670fb3c5026acb7856a36e7fad (diff)
downloadscala-99b6474dabc8a4bcc9282f041d48fb9671c4f2b8.tar.gz
scala-99b6474dabc8a4bcc9282f041d48fb9671c4f2b8.tar.bz2
scala-99b6474dabc8a4bcc9282f041d48fb9671c4f2b8.zip
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/parser/Parsers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index 0634ace4d0..36f6d5890e 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -1552,8 +1552,11 @@ import Tokens._;
/** ClassTemplate ::= [`extends' TemplateParents] [[NL] TemplateBody]
* TemplateParents ::= SimpleType {`(' [Exprs] `)'} {`with' SimpleType}
*/
- def classTemplate(mods: Modifiers, name: Name, vparamss: List[List[ValDef]]): Template = {
- val ret = atPos(in.currentPos) {
+ def classTemplate(mods: Modifiers, name: Name, vparamss: List[List[ValDef]]): Template =
+ atPos(in.currentPos) {
+ def acceptEmptyTemplateBody(msg: String): unit =
+ if (!(in.token == SEMI || in.token == NEWLINE || in.token == COMMA || in.token == RBRACE))
+ syntaxError(msg, true);
val parents = new ListBuffer[Tree];
val argss = new ListBuffer[List[Tree]];
if (in.token == EXTENDS) {
@@ -1568,25 +1571,21 @@ import Tokens._;
in.nextToken();
parents += simpleType()
}
- } else argss += List();
+ } else {
+ if (in.token != LBRACE) acceptEmptyTemplateBody("`extends' or `{' expected");
+ argss += List()
+ }
if (name != nme.ScalaObject.toTypeName)
parents += scalaScalaObjectConstr;
if (mods.hasFlag(Flags.CASE)) parents += caseClassConstr;
val ps = parents.toList;
if (in.token == NEWLINE && in.next.token == LBRACE) in.nextToken();
var body =
- if (in.token == LBRACE) {
- templateBody()
- } else {
- if (!(in.token == SEMI || in.token == NEWLINE || in.token == COMMA || in.token == RBRACE))
- syntaxError("`extends' or `{' expected", true);
- List()
- }
+ if (in.token == LBRACE) templateBody()
+ else { acceptEmptyTemplateBody("`{' expected"); List() }
if (!mods.hasFlag(Flags.TRAIT)) Template(ps, vparamss, argss.toList, body)
else Template(ps, body)
}
- ret;
- }
////////// TEMPLATES ////////////////////////////////////////////////////////////