summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching/FreshVariableTraverser.java
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-07-04 15:16:40 +0000
committerburaq <buraq@epfl.ch>2003-07-04 15:16:40 +0000
commit335a4e9588279ee5d45c6bd46b8771ce6b623723 (patch)
treeea1ba36629ac233b12d593bbd2f3229db630fe7c /sources/scalac/transformer/matching/FreshVariableTraverser.java
parent68f54db8331ae091a78f0f1cc0f5e0adf56394af (diff)
downloadscala-335a4e9588279ee5d45c6bd46b8771ce6b623723.tar.gz
scala-335a4e9588279ee5d45c6bd46b8771ce6b623723.tar.bz2
scala-335a4e9588279ee5d45c6bd46b8771ce6b623723.zip
pattern matching encore
Diffstat (limited to 'sources/scalac/transformer/matching/FreshVariableTraverser.java')
-rw-r--r--sources/scalac/transformer/matching/FreshVariableTraverser.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/sources/scalac/transformer/matching/FreshVariableTraverser.java b/sources/scalac/transformer/matching/FreshVariableTraverser.java
new file mode 100644
index 0000000000..7010aae5da
--- /dev/null
+++ b/sources/scalac/transformer/matching/FreshVariableTraverser.java
@@ -0,0 +1,46 @@
+package scalac.transformer.matching ;
+
+import scalac.ast.Traverser ;
+
+import scalac.ast.Tree;
+import Tree.Ident;
+import Tree.Bind;
+
+import scalac.util.Name;
+import scalac.util.FreshNameCreator ;
+
+import scalac.symtab.* ;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+class FreshVariableTraverser extends VariableTraverser {
+
+ int pos;
+ Symbol owner;
+ FreshNameCreator fresh;
+
+ public HashMap helpMap ;
+
+ public FreshVariableTraverser( int pos,
+ Symbol owner,
+ FreshNameCreator fresh) {
+ this.pos = pos;
+ this.owner = owner;
+ this.fresh = fresh;
+
+ helpMap = new HashMap();
+ }
+
+ void handleVariableSymbol( Symbol sym ) {
+ Symbol helpVar = new TermSymbol( pos,
+ fresh.newName( sym.name
+ .toString() ),
+ owner,
+ 0)
+ .setType( sym.type() );
+
+ helpMap.put( sym, helpVar );
+ }
+
+}