diff options
author | buraq <buraq@epfl.ch> | 2004-02-02 17:57:28 +0000 |
---|---|---|
committer | buraq <buraq@epfl.ch> | 2004-02-02 17:57:28 +0000 |
commit | b5d47b164f4993ff8e2d74dbe773bf5d7a63242f (patch) | |
tree | 8991e2dfc1529543d15e59556cbd2a4217e1425b /sources | |
parent | 37cfcbc4f55fd50c594d531ad054b46938c2825a (diff) | |
download | scala-b5d47b164f4993ff8e2d74dbe773bf5d7a63242f.tar.gz scala-b5d47b164f4993ff8e2d74dbe773bf5d7a63242f.tar.bz2 scala-b5d47b164f4993ff8e2d74dbe773bf5d7a63242f.zip |
oops, forgot a case in BindingBerrySethi
Diffstat (limited to 'sources')
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 ); |