summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-09-26 13:19:43 +0000
committerburaq <buraq@epfl.ch>2003-09-26 13:19:43 +0000
commitbb0022e6f6111b017e77042cce2ec5736edbaccc (patch)
tree1e2333d5469b606819df3396af9329e56527820b /sources/scalac/transformer/matching
parent7a10026f29d2992b45e367e9a607b569cb448cbb (diff)
downloadscala-bb0022e6f6111b017e77042cce2ec5736edbaccc.tar.gz
scala-bb0022e6f6111b017e77042cce2ec5736edbaccc.tar.bz2
scala-bb0022e6f6111b017e77042cce2ec5736edbaccc.zip
fixed hashing of patterns
Diffstat (limited to 'sources/scalac/transformer/matching')
-rw-r--r--sources/scalac/transformer/matching/DetWordAutom.java14
-rw-r--r--sources/scalac/transformer/matching/Label.java16
-rw-r--r--sources/scalac/transformer/matching/RightTracerInScala.java4
-rw-r--r--sources/scalac/transformer/matching/SequenceMatcher.java1
4 files changed, 24 insertions, 11 deletions
diff --git a/sources/scalac/transformer/matching/DetWordAutom.java b/sources/scalac/transformer/matching/DetWordAutom.java
index 1f946f0b9c..8950c698ac 100644
--- a/sources/scalac/transformer/matching/DetWordAutom.java
+++ b/sources/scalac/transformer/matching/DetWordAutom.java
@@ -849,21 +849,21 @@ public class DetWordAutom {
*/
public void printBefore( TreeSet states, HashMap deftrans ) {
HashMap trans;
- //System.out.println( states );
+ System.out.println( states );
for( Iterator it = states.iterator(); it.hasNext(); ) {
TreeSet state = (TreeSet) it.next();
- //System.out.print("state:"+state.toString()+" transitions ");
+ System.out.print("state:"+state.toString()+" transitions ");
trans = (HashMap) delta.get( state );
for( Iterator labs = labels.iterator(); labs.hasNext() ;) {
Object label = labs.next();
TreeSet target = (TreeSet) trans.get( label );
- //System.out.print( " (" + label.toString()
- // + "," + target.toString()+")");
+ System.out.print( " (" + label.toString()
+ + "," + target.toString()+")");
}
- //System.out.print("default trans"+deftrans.get( state ));
- //System.out.println();
+ System.out.print("default trans"+deftrans.get( state ));
+ System.out.println();
}
- //System.out.println("final states:" + finals );
+ System.out.println("final states:" + finals );
}
diff --git a/sources/scalac/transformer/matching/Label.java b/sources/scalac/transformer/matching/Label.java
index 389139da0a..4c41f8a031 100644
--- a/sources/scalac/transformer/matching/Label.java
+++ b/sources/scalac/transformer/matching/Label.java
@@ -1,6 +1,7 @@
package scalac.transformer.matching ;
import scalac.ast.Tree ;
+import scalac.ast.TreeInfo ;
import scalac.symtab.Type ;
import Tree.Literal ;
@@ -28,6 +29,10 @@ public class Label {
case SimpleLabel( Literal lit ):
return lit.value.hashCode();
case TreeLabel( Tree pat ):
+ switch( pat ) {
+ case Apply( _, Tree[] args ):
+ return TreeInfo.methSymbol( pat ).hashCode() + args.hashCode(); // incorrect?
+ }
return pat.hashCode();
case TypeLabel( Type type ):
return type.hashCode();
@@ -57,8 +62,15 @@ public class Label {
break;
case TreeLabel( Tree pat ):
switch( oL ) {
- case TreeLabel( Tree pat2):
- return pat == pat2;
+ case TreeLabel( Tree pat2 ):
+ switch( pat ) {
+ case Apply( _, _ ):
+ switch( pat2 ) {
+ case Apply( _, _ ):
+ return TreeInfo.methSymbol( pat ) == TreeInfo.methSymbol( pat2 );
+ }
+ }
+ return pat == pat2;
}
break ;
case TypeLabel( Type tpe ):
diff --git a/sources/scalac/transformer/matching/RightTracerInScala.java b/sources/scalac/transformer/matching/RightTracerInScala.java
index fd4c37677a..08d3b6a17c 100644
--- a/sources/scalac/transformer/matching/RightTracerInScala.java
+++ b/sources/scalac/transformer/matching/RightTracerInScala.java
@@ -330,9 +330,9 @@ public class RightTracerInScala extends TracerInScala {
helpMap3.put( newSym, helpMap.get( key ));
}
- //System.out.println("RightTracerInScala:: -pat :"+pat);
- //System.out.println("RightTracerInScala::varsToExport :"+varsToExport);
//System.out.println("RightTracerInScala::freshenMap :"+freshenMap);
+ //System.out.println("RightTracerInScala:: -pat :"+pat.toString());
+ //System.out.println("RightTracerInScala::varsToExport :"+varsToExport);
// "freshening"
diff --git a/sources/scalac/transformer/matching/SequenceMatcher.java b/sources/scalac/transformer/matching/SequenceMatcher.java
index f921d94a37..f9d5b10e19 100644
--- a/sources/scalac/transformer/matching/SequenceMatcher.java
+++ b/sources/scalac/transformer/matching/SequenceMatcher.java
@@ -241,6 +241,7 @@ public class SequenceMatcher extends PatternTool {
{
manyNfa[ i ] = build.automatonFrom( pat[ i ],
new Integer( i ));
+ //manyNfa[ i ].print();
}
// merge nfas into one if necessary