summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching/PatternMatcher.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-02-01 03:15:00 +0000
committerpaltherr <paltherr@epfl.ch>2004-02-01 03:15:00 +0000
commite4731931589d6313988337a921747f9caf6fc3e7 (patch)
tree92c7298118201c435ef42d99d6b6d6c00a70c64a /sources/scalac/transformer/matching/PatternMatcher.java
parentc9e045f5c67d44313e9e2436ec107e514548272e (diff)
downloadscala-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.java17
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):