summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching/CollectVariableTraverser.java
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-07-04 12:16:52 +0000
committerburaq <buraq@epfl.ch>2003-07-04 12:16:52 +0000
commit94cc5fb3985236c6a7a1ef7af7450c49648e06a9 (patch)
treea9a7419b6311ee5667ff320a3896ef012c73377f /sources/scalac/transformer/matching/CollectVariableTraverser.java
parent05d7f7c3b53dbd18251f64037ecbc5b49a762ff6 (diff)
downloadscala-94cc5fb3985236c6a7a1ef7af7450c49648e06a9.tar.gz
scala-94cc5fb3985236c6a7a1ef7af7450c49648e06a9.tar.bz2
scala-94cc5fb3985236c6a7a1ef7af7450c49648e06a9.zip
collect variables from patterns
Diffstat (limited to 'sources/scalac/transformer/matching/CollectVariableTraverser.java')
-rw-r--r--sources/scalac/transformer/matching/CollectVariableTraverser.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/sources/scalac/transformer/matching/CollectVariableTraverser.java b/sources/scalac/transformer/matching/CollectVariableTraverser.java
new file mode 100644
index 0000000000..5223bdee46
--- /dev/null
+++ b/sources/scalac/transformer/matching/CollectVariableTraverser.java
@@ -0,0 +1,35 @@
+package scalac.transformer.matching ;
+
+import scalac.util.Name ;
+import scalac.ast.Tree ;
+import scalac.symtab.Symbol ;
+
+import java.util.Vector;
+
+class CollectVariableTraverser extends VariableTraverser {
+
+ Vector vars;
+
+ boolean isVariableName( Name name ) {
+ return ( name.toString().indexOf("$") == -1 )
+ && super.isVariableName( name );
+ }
+
+
+ void handleVariableSymbol( Symbol sym ) {
+ vars.add( sym );
+ }
+
+ public CollectVariableTraverser() {
+ this.vars = new Vector();
+ }
+
+ static boolean containsBinding( Tree pat ) {
+
+ CollectVariableTraverser cvt = new CollectVariableTraverser();
+ cvt.traverse( pat );
+ return !cvt.vars.isEmpty();
+
+ }
+
+}