From 791345238b62c96f0800d00284426fe797d45145 Mon Sep 17 00:00:00 2001 From: buraq Date: Tue, 7 Oct 2003 16:57:57 +0000 Subject: scala version of test reg traverser --- .../transformer/matching/TestRegTraverser.scala | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 sources/scalac/transformer/matching/TestRegTraverser.scala diff --git a/sources/scalac/transformer/matching/TestRegTraverser.scala b/sources/scalac/transformer/matching/TestRegTraverser.scala new file mode 100644 index 0000000000..9db9dac492 --- /dev/null +++ b/sources/scalac/transformer/matching/TestRegTraverser.scala @@ -0,0 +1,45 @@ +/* ____ ____ ____ ____ ______ *\ +** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala ** +** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL ** +** /_____/\____/\___/\____/____/ ** +** ** +** $Id$ +\* */ + +package scalac.transformer.matching; + +import scalac.ast._; +import scalac.util._; +import scalac.symtab._; + +import java.util.{Set,HashSet}; + +object TestRegTraverser extends Traverser { + + var result:boolean = false; + var variables:Set = null:Set; + + override def traverse( tree:Tree ):Unit = { + + tree.match { + case Tree$Alternative(_) => + result = true; + case Tree$Bind(_, pat) => + variables.add(tree.symbol()); + traverse(pat); + case Tree$Ident( name ) => + result = ((name != Names.WILDCARD) + && variables.contains(tree.symbol())) + case Tree$CaseDef(pat, _, _) => + traverse(pat); + case _ => + super.traverse( tree ); + } + } + + def apply(t:Tree):boolean = { + variables = new HashSet(); + traverse(t); + result + } +} -- cgit v1.2.3