summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2004-02-02 17:57:28 +0000
committerburaq <buraq@epfl.ch>2004-02-02 17:57:28 +0000
commitb5d47b164f4993ff8e2d74dbe773bf5d7a63242f (patch)
tree8991e2dfc1529543d15e59556cbd2a4217e1425b /sources/scalac/transformer/matching
parent37cfcbc4f55fd50c594d531ad054b46938c2825a (diff)
downloadscala-b5d47b164f4993ff8e2d74dbe773bf5d7a63242f.tar.gz
scala-b5d47b164f4993ff8e2d74dbe773bf5d7a63242f.tar.bz2
scala-b5d47b164f4993ff8e2d74dbe773bf5d7a63242f.zip
oops, forgot a case in BindingBerrySethi
Diffstat (limited to 'sources/scalac/transformer/matching')
-rw-r--r--sources/scalac/transformer/matching/BindingBerrySethi.java5
-rw-r--r--sources/scalac/transformer/matching/RightTracerInScala.java8
-rw-r--r--sources/scalac/transformer/matching/SequenceMatcher.java1
3 files changed, 10 insertions, 4 deletions
diff --git a/sources/scalac/transformer/matching/BindingBerrySethi.java b/sources/scalac/transformer/matching/BindingBerrySethi.java
index e9da02fa92..5a0978bd15 100644
--- a/sources/scalac/transformer/matching/BindingBerrySethi.java
+++ b/sources/scalac/transformer/matching/BindingBerrySethi.java
@@ -56,6 +56,7 @@ public class BindingBerrySethi extends BerrySethi {
switch( pat ) {
case Apply(_, _):
case Literal( _ ):
+ case Typed(_,_):
this.varAt.put( i, activeBinders.clone() ); // below @ ?
break;
case Ident( Name name ):
@@ -68,7 +69,9 @@ public class BindingBerrySethi extends BerrySethi {
}
*/
this.varAt.put( i, binders );
-
+ break;
+ default:
+ throw new ApplicationError("unexpected atom:"+pat.getClass());
}
}
diff --git a/sources/scalac/transformer/matching/RightTracerInScala.java b/sources/scalac/transformer/matching/RightTracerInScala.java
index 50eb918afb..e7ef7ae029 100644
--- a/sources/scalac/transformer/matching/RightTracerInScala.java
+++ b/sources/scalac/transformer/matching/RightTracerInScala.java
@@ -73,6 +73,7 @@ public class RightTracerInScala extends TracerInScala {
makeHelpVar( varSym, true );
}
}
+
//System.out.println("allVars: "+allVars);
//System.out.println("seqVars: "+seqVars);
//System.out.println("helpVarDefs now: "+helpVarDefs);
@@ -362,9 +363,10 @@ System.out.println("RightTracerInScala - the seqVars"+seqVars);
Tree refv = gen.Ident(cf.pos, vsym);
Tree refhv = gen.Ident(cf.pos, hv);
res[ j++ ] = gen.Assign( refhv, refv );
+ // System.out.println( "the assign" + res[ j - 1 ] );
}
- res[ j ] = gen.mkBooleanLit( Position.FIRSTPOS, true ); // just `true'
+ res[ j ] = gen.mkBooleanLit( cf.pos, true ); // just `true'
Tree theBody = gen.mkBlock(res);
am.construct( m, new CaseDef[] {
@@ -409,11 +411,11 @@ System.out.println("RightTracerInScala - the seqVars"+seqVars);
Vector vars = dfa.qbinders[ i ];
+ //System.out.println("dfa.qbinders[ i ]"+vars);
+
if( vars == null ) vars = new Vector(); // TODO: make this more consistent
assert vars != null;
- //System.out.println("delta: theLab: " + theLab + " vars in current ="+ vars );
-
Tree stms[] = new Tree[ vars.size()
+ ((algMatchTree != null )? 1 : 0 )
+ 1 ];
diff --git a/sources/scalac/transformer/matching/SequenceMatcher.java b/sources/scalac/transformer/matching/SequenceMatcher.java
index 0b3cfdc4b1..68d698986c 100644
--- a/sources/scalac/transformer/matching/SequenceMatcher.java
+++ b/sources/scalac/transformer/matching/SequenceMatcher.java
@@ -62,6 +62,7 @@ public class SequenceMatcher extends PatternTool {
DetWordAutom dRight = new DetWordAutom( right, left, dLeft );
Set seqVars = NondetWordAutom.collectVariables( left );
+ //System.out.println("seqVars here are:"+seqVars);
final RightTracerInScala rtis =
new RightTracerInScala( dRight, seqVars, _m.owner,
cf, pat, elementType );