diff options
author | paltherr <paltherr@epfl.ch> | 2004-02-01 03:15:00 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-02-01 03:15:00 +0000 |
commit | e4731931589d6313988337a921747f9caf6fc3e7 (patch) | |
tree | 92c7298118201c435ef42d99d6b6d6c00a70c64a /sources/scalac/transformer/matching/PatternMatcher.java | |
parent | c9e045f5c67d44313e9e2436ec107e514548272e (diff) | |
download | scala-e4731931589d6313988337a921747f9caf6fc3e7.tar.gz scala-e4731931589d6313988337a921747f9caf6fc3e7.tar.bz2 scala-e4731931589d6313988337a921747f9caf6fc3e7.zip |
- Generalized use of AConstant to represent con...
- Generalized use of AConstant to represent constant values
Diffstat (limited to 'sources/scalac/transformer/matching/PatternMatcher.java')
-rw-r--r-- | sources/scalac/transformer/matching/PatternMatcher.java | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/sources/scalac/transformer/matching/PatternMatcher.java b/sources/scalac/transformer/matching/PatternMatcher.java index 2db3b81164..b2c45278ef 100644 --- a/sources/scalac/transformer/matching/PatternMatcher.java +++ b/sources/scalac/transformer/matching/PatternMatcher.java @@ -11,6 +11,7 @@ package scalac.transformer.matching; import ch.epfl.lamp.util.Position; import scalac.*; import scalac.ast.*; +import scalac.atree.AConstant; import scalac.util.*; import scalac.symtab.*; import PatternNode.*; @@ -134,7 +135,7 @@ public class PatternMatcher extends PatternTool { if (patNode.or != null) print(patNode.or, indent); break; - case ConstantPat(Object value): + case ConstantPat(AConstant value): String s = "-- CONST(" + value + ") -> "; String ind = indent; indent = (patNode.or != null) ? @@ -376,7 +377,7 @@ public class PatternMatcher extends PatternTool { return mk.ConstrPat(tree.pos, tree.type); else return mk.VariablePat(tree.pos, tree); - case Literal(Object value): + case Literal(AConstant value): return mk.ConstantPat(tree.pos, tree.type, value); case Sequence(Tree[] ts): if ( !delegateSequenceMatching ) { @@ -691,10 +692,10 @@ public class PatternMatcher extends PatternTool { // for one case we use a normal if-then-else instruction else if (ncases == 1) { switch (root.and.or) { - case ConstantPat(Object value): + case ConstantPat(AConstant value): return gen.If( cf.Equals(selector, - gen.mkLit(root.and.or.pos, value)), + gen.Literal(root.and.or.pos, value)), bodyToTree(root.and.or.and), defaultBody(root.and, matchError)); default: @@ -717,9 +718,9 @@ public class PatternMatcher extends PatternTool { defaultBody = bodyToTree(node.and); node = node.or; break; - case ConstantPat(Object value): + case ConstantPat(INT(int value)): mappings = insert( - ((Integer)value).intValue(), + value, bodyToTree(node.and), mappings); node = node.or; @@ -943,10 +944,10 @@ public class PatternMatcher extends PatternTool { gen.mkAsInstanceOf(selector.duplicate(), node.type)), toTree(node.and)}), toTree(node.or, selector.duplicate())); - case ConstantPat(Object value): + case ConstantPat(AConstant value): return gen.If( cf.Equals(selector.duplicate(), - gen.mkLit(selector.pos, value)), + gen.Literal(selector.pos, value)), toTree(node.and), toTree(node.or, selector.duplicate())); case VariablePat(Tree tree): |