From 20b0001740186773e222b1341c234e4cfb988045 Mon Sep 17 00:00:00 2001 From: Matthias Zenger Date: Mon, 25 Aug 2003 22:16:12 +0000 Subject: 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. --- .../scalac/transformer/matching/PatternNode.java | 41 +++++++++++++--------- 1 file changed, 25 insertions(+), 16 deletions(-) (limited to 'sources/scalac/transformer/matching/PatternNode.java') 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 ""; -- cgit v1.2.3