diff options
author | Matthias Zenger <mzenger@gmail.com> | 2003-08-25 22:16:12 +0000 |
---|---|---|
committer | Matthias Zenger <mzenger@gmail.com> | 2003-08-25 22:16:12 +0000 |
commit | 20b0001740186773e222b1341c234e4cfb988045 (patch) | |
tree | 1a44763de7b7ef90daa7772ac664a6636ef9b877 /sources/scalac/transformer/matching/PatternNode.java | |
parent | ca6bfb0f68cb26e1105fbea373b30cf4772d95fe (diff) | |
download | scala-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.java | 41 |
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>"; |