summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching/PatternNode.java
diff options
context:
space:
mode:
authorMatthias Zenger <mzenger@gmail.com>2003-08-25 22:16:12 +0000
committerMatthias Zenger <mzenger@gmail.com>2003-08-25 22:16:12 +0000
commit20b0001740186773e222b1341c234e4cfb988045 (patch)
tree1a44763de7b7ef90daa7772ac664a6636ef9b877 /sources/scalac/transformer/matching/PatternNode.java
parentca6bfb0f68cb26e1105fbea373b30cf4772d95fe (diff)
downloadscala-20b0001740186773e222b1341c234e4cfb988045.tar.gz
scala-20b0001740186773e222b1341c234e4cfb988045.tar.bz2
scala-20b0001740186773e222b1341c234e4cfb988045.zip
Included optimization for top-level switches on...
Included optimization for top-level switches on expressions of type Int. It is switched off in the checked in version.
Diffstat (limited to 'sources/scalac/transformer/matching/PatternNode.java')
-rw-r--r--sources/scalac/transformer/matching/PatternNode.java41
1 files changed, 25 insertions, 16 deletions
diff --git a/sources/scalac/transformer/matching/PatternNode.java b/sources/scalac/transformer/matching/PatternNode.java
index a1f6f38863..da028b2a6d 100644
--- a/sources/scalac/transformer/matching/PatternNode.java
+++ b/sources/scalac/transformer/matching/PatternNode.java
@@ -23,46 +23,55 @@ public class PatternNode {
public PatternNode or;
public PatternNode and;
- public case Header( Tree selector, Header next );
- public case Body( Tree.ValDef[][] bound, Tree[] guard, Tree[] body );
+ public case Header(Tree selector, Header next);
+ public case Body(Tree.ValDef[][] bound, Tree[] guard, Tree[] body);
public case DefaultPat();
- public case ConstrPat( Symbol casted );
- public case SequencePat( Symbol casted, int len ); // only used in PatternMatcher
- public case SeqContainerPat( Symbol casted, Tree seqpat ); // in AlgebraicMatcher
- public case ConstantPat( Object value );
- public case VariablePat( Tree tree );
+ public case ConstrPat(Symbol casted);
+ public case SequencePat(Symbol casted, int len); // only used in PatternMatcher
+ public case SeqContainerPat(Symbol casted, Tree seqpat); // in AlgebraicMatcher
+ public case ConstantPat(Object value);
+ public case VariablePat(Tree tree);
public Symbol symbol() {
switch (this) {
- case ConstrPat( Symbol casted ):
+ case ConstrPat(Symbol casted):
return casted;
- case SequencePat( Symbol casted, _ ):
+ case SequencePat(Symbol casted, _):
return casted;
- case SeqContainerPat( Symbol casted, _ ):
+ case SeqContainerPat(Symbol casted, _):
return casted;
default:
return Symbol.NONE;
}
}
+ public PatternNode next() {
+ switch (this) {
+ case Header(_, Header next):
+ return next;
+ default:
+ return null;
+ }
+ }
+
public String toString() {
switch (this) {
- case Header( Tree selector, Header next ):
+ case Header(Tree selector, Header next):
return "Header(" + selector + ")";
case Body( _, _, _ ):
return "Body";
case DefaultPat():
return "DefaultPat";
- case ConstrPat( Symbol casted ):
+ case ConstrPat(Symbol casted):
return "ConstrPat(" + casted + ")";
- case SequencePat( Symbol casted, int len ):
+ case SequencePat(Symbol casted, int len):
return "SequencePat(" + casted + ", " + len + "...)";
- case SeqContainerPat( Symbol casted, Tree seqpat ):
+ case SeqContainerPat(Symbol casted, Tree seqpat):
return "SeqContainerPat(" + casted + ", " + seqpat + ")";
- case ConstantPat( Object value ):
+ case ConstantPat(Object value):
return "ConstantPat(" + value + ")";
- case VariablePat( Tree tree ):
+ case VariablePat(Tree tree):
return "VariablePat";
default:
return "<unknown pat>";