diff options
author | paltherr <paltherr@epfl.ch> | 2004-04-06 08:52:16 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-04-06 08:52:16 +0000 |
commit | 5dc50833450033d06f845bc7473808731a155f82 (patch) | |
tree | 79a532329ec0350504285ecc00decb3b7c16a045 /sources/scalac/checkers/TreeChecker.java | |
parent | 43505887a331fbf647ba39a85bdf16c321ce8037 (diff) | |
download | scala-5dc50833450033d06f845bc7473808731a155f82.tar.gz scala-5dc50833450033d06f845bc7473808731a155f82.tar.bz2 scala-5dc50833450033d06f845bc7473808731a155f82.zip |
- Added Tree.Create
Diffstat (limited to 'sources/scalac/checkers/TreeChecker.java')
-rw-r--r-- | sources/scalac/checkers/TreeChecker.java | 23 |
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); |