summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-08-15 14:38:09 +0000
committerpaltherr <paltherr@epfl.ch>2003-08-15 14:38:09 +0000
commit0386aaf8b97b41e414639c92b28639a663de5102 (patch)
tree4ec1d57bfe41dc82441ae0f4c3007225e63927a0 /sources
parent8dbaa5dfc08019a27e2a251fcd9e42ae31507f1a (diff)
downloadscala-0386aaf8b97b41e414639c92b28639a663de5102.tar.gz
scala-0386aaf8b97b41e414639c92b28639a663de5102.tar.bz2
scala-0386aaf8b97b41e414639c92b28639a663de5102.zip
- Replaced use of AttributedTreeCopier by Trans...
- Replaced use of AttributedTreeCopier by Transformer
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/transformer/matching/SequenceMatcher.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/sources/scalac/transformer/matching/SequenceMatcher.java b/sources/scalac/transformer/matching/SequenceMatcher.java
index 02cf68ddf6..27386792c0 100644
--- a/sources/scalac/transformer/matching/SequenceMatcher.java
+++ b/sources/scalac/transformer/matching/SequenceMatcher.java
@@ -139,7 +139,7 @@ public class SequenceMatcher extends PatternTool {
//System.out.println( "vars: "+vars );
int j;
- RightTracerInScala rtis =
+ final RightTracerInScala rtis =
new RightTracerInScala( dRight, left, mL,
cf, pat, elementType );
@@ -157,12 +157,26 @@ public class SequenceMatcher extends PatternTool {
j = stms.length + stms2.length ;
items[ stms.length + stms2.length ] = body;
- AttributedTreeCopier treeCopier = new AttributedTreeCopier(unit.global, cf.make) ;
+ Transformer treeCloner = new Transformer(unit.global) {
+ public Tree transform(Tree tree) {
+ tree = super.transform(tree);
+ if (tree.hasSymbol()) {
+ Object symbol = rtis.helpMap2.get(tree.symbol());
+ if (symbol != null) tree.setSymbol((Symbol)symbol);
+ }
+ return tree;
+ }
+ };
//System.out.println("helpmap");
//System.out.println( rtis.helpMap2 );
- treeCopier.pushSymbolSubst( rtis.helpMap2 );
- items[ stms.length + stms2.length ] = treeCopier.copy( body );
+ items[ stms.length + stms2.length ] = treeCloner.transform( body );
+ for( Iterator it = rtis.helpMap2.entrySet().iterator(); it.hasNext(); ) {
+ Map.Entry e = (Map.Entry)it.next();
+ Symbol key = (Symbol)e.getKey();
+ Symbol val = (Symbol)e.getValue();
+ val.setInfo( key.type() ); // !!! ?
+ }
return cf.Block( body.pos, items, body.type );
}