summaryrefslogtreecommitdiff
path: root/sources/scalac/checkers
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-04-06 08:52:16 +0000
committerpaltherr <paltherr@epfl.ch>2004-04-06 08:52:16 +0000
commit5dc50833450033d06f845bc7473808731a155f82 (patch)
tree79a532329ec0350504285ecc00decb3b7c16a045 /sources/scalac/checkers
parent43505887a331fbf647ba39a85bdf16c321ce8037 (diff)
downloadscala-5dc50833450033d06f845bc7473808731a155f82.tar.gz
scala-5dc50833450033d06f845bc7473808731a155f82.tar.bz2
scala-5dc50833450033d06f845bc7473808731a155f82.zip
- Added Tree.Create
Diffstat (limited to 'sources/scalac/checkers')
-rw-r--r--sources/scalac/checkers/TreeChecker.java23
1 files changed, 15 insertions, 8 deletions
diff --git a/sources/scalac/checkers/TreeChecker.java b/sources/scalac/checkers/TreeChecker.java
index 6e15c8cbfb..37446bd7ba 100644
--- a/sources/scalac/checkers/TreeChecker.java
+++ b/sources/scalac/checkers/TreeChecker.java
@@ -264,12 +264,18 @@ public class TreeChecker {
return expression(value, definitions.THROWABLE_TYPE());
case New(Tree init):
- Tree fun = TreeInfo.methPart(init);
- assert fun instanceof Tree.Ident: show(tree);
- Symbol symbol = fun.symbol();
- assert symbol != null && !symbol.isLabel(): show(tree);
- assert symbol.isInitializer(): show(tree);
- return expression(init, definitions.UNIT_TYPE());
+ switch (init) {
+ case Apply(Select(Create(_, Tree[] targs), _), Tree[] vargs):
+ return expression(init, definitions.UNIT_TYPE());
+ default:
+ throw Debug.abort("illegal case", show(tree));
+ }
+
+ case Create(Tree qualifier, Tree[] targs):
+ assert qualifier == Tree.Empty: show(tree);
+ Symbol symbol = tree.symbol();
+ assert symbol != null && symbol.isClass(): show(tree);
+ return true;
case Apply(Tree vfun, Tree[] vargs):
vapply(tree, vfun.type(), vargs);
@@ -298,7 +304,7 @@ public class TreeChecker {
return true;
default:
- throw Debug.abort("illegal case", tree);
+ throw Debug.abort("illegal case", show(tree));
}
}
@@ -339,10 +345,11 @@ public class TreeChecker {
switch (tree) {
case Select(Tree qualifier, _):
+ if (qualifier instanceof Tree.Create)
+ assert symbol.isInitializer(): show(tree);
return selection(tree);
case Ident(_):
- if (!symbol.isLabel() && symbol.isInitializer()) return true;
if (!symbol.isLabel() && symbol.isStatic()) return true;
assert labels.contains(symbol): show(tree);
assert symbol.owner() == currentMember(): show(tree);