diff options
author | buraq <buraq@epfl.ch> | 2003-09-01 15:02:07 +0000 |
---|---|---|
committer | buraq <buraq@epfl.ch> | 2003-09-01 15:02:07 +0000 |
commit | 3c896b4d739a5bc2de49f9554263050720aa81bf (patch) | |
tree | 595273b5292fccd883d622a6e7aa722d3fc46549 /sources/scalac/transformer/matching/PatternMatcher.java | |
parent | 8ac36547ea50936a87963dfc2ac8d2da6771c76f (diff) | |
download | scala-3c896b4d739a5bc2de49f9554263050720aa81bf.tar.gz scala-3c896b4d739a5bc2de49f9554263050720aa81bf.tar.bz2 scala-3c896b4d739a5bc2de49f9554263050720aa81bf.zip |
made AlgebraicMatcher a subclass of PatternMatc...
made AlgebraicMatcher a subclass of PatternMatcher, sharing much code
Diffstat (limited to 'sources/scalac/transformer/matching/PatternMatcher.java')
-rw-r--r-- | sources/scalac/transformer/matching/PatternMatcher.java | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/sources/scalac/transformer/matching/PatternMatcher.java b/sources/scalac/transformer/matching/PatternMatcher.java index 532200cffd..c5ebd28afa 100644 --- a/sources/scalac/transformer/matching/PatternMatcher.java +++ b/sources/scalac/transformer/matching/PatternMatcher.java @@ -47,14 +47,11 @@ public class PatternMatcher extends PatternTool { */ protected PatternNodeCreator mk; - /** constructor + /** init method, also needed in subclass AlgebraicMatcher */ - public PatternMatcher(Unit unit, Infer infer, Tree selector, Symbol owner, Type resultType) { - super(unit, infer); - this.mk = new PatternNodeCreator(unit, infer, owner); - this.cf = new CodeFactory(unit, infer); - this.owner = owner; - this.selector = selector; + protected void initialize( Tree selector, Symbol owner, Type resultType) { + this.mk = new PatternNodeCreator( unit, infer, owner ); + this.cf = new CodeFactory( unit, infer, selector.pos ); this.root = mk.ConstrPat(selector.pos, selector.type.widen()); this.root.and = mk.Header(selector.pos, selector.type.widen(), @@ -65,6 +62,20 @@ public class PatternMatcher extends PatternTool { owner, Modifiers.MUTABLE); this.resultVar.setType(resultType); + + } + /** constructor, used in subclass ALgebraicMatcher + */ + protected PatternMatcher( Unit unit, Infer infer ) { + super( unit, infer ); + } + /** constructor + */ + public PatternMatcher(Unit unit, Infer infer, Tree selector, Symbol owner, Type resultType) { + super(unit, infer); + initialize( selector, owner, resultType ); + this.owner = owner; + this.selector = selector; this.optimize &= (unit.global.target == Global.TARGET_JVM); } @@ -487,6 +498,8 @@ public class PatternMatcher extends PatternTool { next = next.or; } + /** calls enter for an array of patterns, see enter + */ public PatternNode enter(Tree[] pats, PatternNode target, Symbol casted, CaseEnv env) { switch (target) { case ConstrPat(Symbol newCasted): |