summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching/PatternMatcher.java
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-09-01 15:02:07 +0000
committerburaq <buraq@epfl.ch>2003-09-01 15:02:07 +0000
commit3c896b4d739a5bc2de49f9554263050720aa81bf (patch)
tree595273b5292fccd883d622a6e7aa722d3fc46549 /sources/scalac/transformer/matching/PatternMatcher.java
parent8ac36547ea50936a87963dfc2ac8d2da6771c76f (diff)
downloadscala-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.java27
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):