summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-07-14 12:09:30 +0000
committerburaq <buraq@epfl.ch>2003-07-14 12:09:30 +0000
commit7477cf8c1c33589da731eba9df057754f800ff10 (patch)
treead21a5a02c93e2400b7fb0fcd1746ae325d70632 /sources/scalac/transformer
parent05b3783bba650d33729f0f13d04a656dbe09b229 (diff)
downloadscala-7477cf8c1c33589da731eba9df057754f800ff10.tar.gz
scala-7477cf8c1c33589da731eba9df057754f800ff10.tar.bz2
scala-7477cf8c1c33589da731eba9df057754f800ff10.zip
code cleanup
Diffstat (limited to 'sources/scalac/transformer')
-rw-r--r--sources/scalac/transformer/matching/AlgebraicMatcher.java42
-rw-r--r--sources/scalac/transformer/matching/CollectVariableTraverser.java10
-rw-r--r--sources/scalac/transformer/matching/RightTracerInScala.java12
-rw-r--r--sources/scalac/transformer/matching/SequenceMatcher.java6
-rw-r--r--sources/scalac/transformer/matching/SplitNested.java20
5 files changed, 24 insertions, 66 deletions
diff --git a/sources/scalac/transformer/matching/AlgebraicMatcher.java b/sources/scalac/transformer/matching/AlgebraicMatcher.java
index 5cda065dbd..6b0afd8fa5 100644
--- a/sources/scalac/transformer/matching/AlgebraicMatcher.java
+++ b/sources/scalac/transformer/matching/AlgebraicMatcher.java
@@ -156,15 +156,7 @@ public class AlgebraicMatcher extends PatternTool {
/** adds a case definition to the intermediate presentation
*/
protected CaseEnv addCase(int pos, Tree pat, Tree guard, Tree body, int case_index) {
- // TMP
- /*
- System.out.print("AM: addCase... pattern has variables:");
- CollectVariableTraverser cvt = new CollectVariableTraverser();
- cvt.traverse( pat );
- System.out.println(cvt.vars);
- */
-
- // TMP
+
CaseEnv env = new CaseEnv( _m.owner, unit );
//PatternNode matched = match(pat, root);
@@ -172,13 +164,6 @@ public class AlgebraicMatcher extends PatternTool {
//if (target.and != null)
// unit.error(pat.pos, "duplicate case");
- /*
- System.out.print( "AM.addCase boundvars:{");
- ValDef bvs[] = env.boundVars();
- for( int j = 0; j < bvs.length; j++ )
- System.out.print(" "+bvs[ j ].symbol() );
- */
-
if (target.and == null)
target.and = mk.Body(pos, env.boundVars(), guard, body);
else if (target.and instanceof Body)
@@ -279,25 +264,12 @@ public class AlgebraicMatcher extends PatternTool {
case Literal(Object value):
return mk.ConstantPat(tree.pos, theType, value);
- case Sequence( _ ):
- throw new ApplicationError("Illegal pattern");
- //return mk.SeqContainerPat(tree.pos, tree, case_index);
- //return mk.SeqContainerPat(tree.pos, null, 0, tree);
-
- //case Subsequence( _ ): // this may not appear here.
- /*case Bind( Name n, Tree t ): // ignore for now, treat as var x
-
- return patternN( gen.Ident( tree.pos, tree.symbol() ),
- castType,
- headerSel
- env,
- case_index);
- */
- //case Alternative( _ ): // ignore for now
- default:
- throw new ApplicationError("cannot handle "+tree);
- }
- }
+ case Sequence( _ ):
+ throw new ApplicationError("Illegal pattern");
+ default:
+ throw new ApplicationError("cannot handle "+tree);
+ }
+ }
/** returns true if p and q are pattern nodes of the same kind and p matches
* whenever q matches, possibly even more often
diff --git a/sources/scalac/transformer/matching/CollectVariableTraverser.java b/sources/scalac/transformer/matching/CollectVariableTraverser.java
index 5223bdee46..f8c4ddc1aa 100644
--- a/sources/scalac/transformer/matching/CollectVariableTraverser.java
+++ b/sources/scalac/transformer/matching/CollectVariableTraverser.java
@@ -8,7 +8,7 @@ import java.util.Vector;
class CollectVariableTraverser extends VariableTraverser {
- Vector vars;
+ protected Vector vars;
boolean isVariableName( Name name ) {
return ( name.toString().indexOf("$") == -1 )
@@ -24,7 +24,7 @@ class CollectVariableTraverser extends VariableTraverser {
this.vars = new Vector();
}
- static boolean containsBinding( Tree pat ) {
+ static boolean containsBinding( Tree pat ) {
CollectVariableTraverser cvt = new CollectVariableTraverser();
cvt.traverse( pat );
@@ -32,4 +32,10 @@ class CollectVariableTraverser extends VariableTraverser {
}
+ static Vector collectVars( Tree pat ) {
+ CollectVariableTraverser cvt = new CollectVariableTraverser();
+ cvt.traverse( pat );
+ return cvt.vars;
+ }
+
}
diff --git a/sources/scalac/transformer/matching/RightTracerInScala.java b/sources/scalac/transformer/matching/RightTracerInScala.java
index b2d242d6eb..3ae2854860 100644
--- a/sources/scalac/transformer/matching/RightTracerInScala.java
+++ b/sources/scalac/transformer/matching/RightTracerInScala.java
@@ -58,17 +58,7 @@ public class RightTracerInScala extends Autom2Scala {
}
this.seqVars = seqVars;
-
- //System.out.println("seqVars:" +seqVars);
- //Vector varsToExport = NoSeqVariableTraverser.varsNoSeq( pat );
- //System.out.println("var2expo:" +varsToExport);
-
-
- CollectVariableTraverser cv = new CollectVariableTraverser();
- cv.traverse( pat );
-
- //System.out.println("allVars:" +allVars);
- this.allVars = cv.vars;
+ this.allVars = CollectVariableTraverser.collectVars( pat );
helpMap = new HashMap();
helpMap2 = new HashMap();
diff --git a/sources/scalac/transformer/matching/SequenceMatcher.java b/sources/scalac/transformer/matching/SequenceMatcher.java
index 7a952ce556..c33ec529b2 100644
--- a/sources/scalac/transformer/matching/SequenceMatcher.java
+++ b/sources/scalac/transformer/matching/SequenceMatcher.java
@@ -92,11 +92,11 @@ public class SequenceMatcher extends PatternTool {
* precondition: pat.type() corresponds to element type
*/
Tree addBinderToBody( Tree pat, Tree body ) {
-
+ /*
SplitNested spn = new SplitNested( pat, _m.owner, cf );
- pat = spn.flatPat; // flat pattern - no nested sequences present
+ pat = spn.flatPat; //
for( Iterator it = spn.nestedVarToPats.keySet().iterator();
it.hasNext(); ){
@@ -110,7 +110,7 @@ public class SequenceMatcher extends PatternTool {
_m = saveM;
body = nbody;
}
-
+ */
Type elementType = cf.getElemType_Sequence( pat.type() );
BindingBerrySethi build = new BindingBerrySethi();
diff --git a/sources/scalac/transformer/matching/SplitNested.java b/sources/scalac/transformer/matching/SplitNested.java
index 74af71ccc7..befe6045d1 100644
--- a/sources/scalac/transformer/matching/SplitNested.java
+++ b/sources/scalac/transformer/matching/SplitNested.java
@@ -9,7 +9,10 @@ import java.util.* ;
import scalac.ast.printer.TextTreePrinter ;
/** given Sequence pattern pat, create flatpatterns flatPat and
- * extract the nested (not necessarily flat) patterns pat_1,...,pat_n */
+ * extract the nested (not necessarily flat) patterns pat_1,...,pat_n
+ *
+ * this class does not do anything useful anymore. soon to be removed
+ */
public class SplitNested {
CodeFactory cf;
@@ -30,20 +33,7 @@ public class SplitNested {
case Sequence( Tree[] trees ): // FIXED like Subseq now// remove nested sequences, make vars
return Tree.Sequence( split( trees ));
- /*
- Name n = cf.fresh.newName("nestseq");
- Symbol v = new TermSymbol( 0,
- n,
- owner,
- 0)
- .setType( pat.type() );
- nestedVarToPats.put( v, pat );
- return new Tree.ExtBind( n,
- cf.make.Ident( 0, Name.fromString("_"))
- .setType( v.type() ))
- .setSymbol( v )
- .setType( v.type() );
- */
+
case Bind(Name name, Tree subtree): // remove nested sequences, make vars
return new Tree.ExtBind(name, split( subtree ))
.setType( pat.type() )