diff options
author | buraq <buraq@epfl.ch> | 2003-07-14 12:09:30 +0000 |
---|---|---|
committer | buraq <buraq@epfl.ch> | 2003-07-14 12:09:30 +0000 |
commit | 7477cf8c1c33589da731eba9df057754f800ff10 (patch) | |
tree | ad21a5a02c93e2400b7fb0fcd1746ae325d70632 /sources/scalac/transformer | |
parent | 05b3783bba650d33729f0f13d04a656dbe09b229 (diff) | |
download | scala-7477cf8c1c33589da731eba9df057754f800ff10.tar.gz scala-7477cf8c1c33589da731eba9df057754f800ff10.tar.bz2 scala-7477cf8c1c33589da731eba9df057754f800ff10.zip |
code cleanup
Diffstat (limited to 'sources/scalac/transformer')
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() ) |