summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-08-13 13:17:01 +0000
committerMartin Odersky <odersky@gmail.com>2003-08-13 13:17:01 +0000
commit43eaf5cb6424932f48e4fef582d855c56e6f7291 (patch)
tree364862faa51b0d35fdac6fc59d235437bc54e423 /sources
parentab3ad145b7ca542eda46b89cd6f9b08175339f6c (diff)
downloadscala-43eaf5cb6424932f48e4fef582d855c56e6f7291.tar.gz
scala-43eaf5cb6424932f48e4fef582d855c56e6f7291.tar.bz2
scala-43eaf5cb6424932f48e4fef582d855c56e6f7291.zip
*** empty log message ***
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/ast/parser/Parser.java2
-rw-r--r--sources/scalac/typechecker/Analyzer.java14
-rw-r--r--sources/scalac/typechecker/DeSugarize.java2
3 files changed, 11 insertions, 7 deletions
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java
index c58c8af46e..8c01c53b41 100644
--- a/sources/scalac/ast/parser/Parser.java
+++ b/sources/scalac/ast/parser/Parser.java
@@ -1841,6 +1841,8 @@ public class Parser implements Tokens {
Tree[] templateBody() {
accept(LBRACE);
Tree[] body = templateStatSeq();
+ if (body.length == 0)
+ body = new Tree[]{Tree.Empty};
accept(RBRACE);
return body;
}
diff --git a/sources/scalac/typechecker/Analyzer.java b/sources/scalac/typechecker/Analyzer.java
index d8bcef64f2..91be325a8a 100644
--- a/sources/scalac/typechecker/Analyzer.java
+++ b/sources/scalac/typechecker/Analyzer.java
@@ -1022,7 +1022,11 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
owntype = Type.ErrorType;
}
} else {
- ((ValDef) tree).rhs = rhs = transform(rhs, EXPRmode);
+ if ((sym.flags & CASEACCESSOR) != 0) {
+ rhs.type = rhs.symbol().type();
+ } else {
+ ((ValDef) tree).rhs = rhs = transform(rhs, EXPRmode);
+ }
owntype = rhs.type;
}
popContext();
@@ -1429,12 +1433,13 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
qual = infer.mkTypeApply(qual, tparams, restype, Symbol.type(tparams));
uninst = tparams;
}
- Symbol sym = typeToConstructor(tree.pos, qual.type.lookup(name));
+ Symbol sym = qual.type.lookup(name);
if (sym.kind == NONE) {
//System.out.println(qual.type + " has members " + qual.type.members());//DEBUG
return error(tree.pos,
decode(name) + " is not a member of " + qual.type.widen());
} else {
+ sym = typeToConstructor(tree.pos, sym);
checkAccessible(tree.pos, sym, qual);
sym.flags |= ACCESSED;
if (!TreeInfo.isSelf(qual, context.enclClass.owner))
@@ -1835,10 +1840,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
Tree rhs1 = rhs;
if (rhs != Tree.Empty) {
pushContext(tree, sym, context.scope);
- if ((sym.flags & CASEACCESSOR) != 0)
- rhs1.type = rhs1.symbol().type();
- else
- rhs1 = transform(rhs, EXPRmode, tpe1.type);
+ rhs1 = transform(rhs, EXPRmode, tpe1.type);
popContext();
}
sym.flags |= LOCKED;
diff --git a/sources/scalac/typechecker/DeSugarize.java b/sources/scalac/typechecker/DeSugarize.java
index 2a82dd0586..87cea76d13 100644
--- a/sources/scalac/typechecker/DeSugarize.java
+++ b/sources/scalac/typechecker/DeSugarize.java
@@ -714,7 +714,7 @@ public class DeSugarize implements Kinds, Modifiers {
//vparam.symbol().initialize();
ts.append(
make.ValDef(
- vparam.pos, CASEACCESSOR, vparam.name, vparam.tpe,
+ vparam.pos, CASEACCESSOR, vparam.name, Tree.Empty,
make.Ident(vparam.pos, vparam.name)
.setSymbol(vparam.symbol())));
}