summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/PatternNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/transformer/PatternNode.java')
-rw-r--r--sources/scalac/transformer/PatternNode.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/sources/scalac/transformer/PatternNode.java b/sources/scalac/transformer/PatternNode.java
new file mode 100644
index 0000000000..24404d0242
--- /dev/null
+++ b/sources/scalac/transformer/PatternNode.java
@@ -0,0 +1,58 @@
+/* ____ ____ ____ ____ ______ *\
+** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
+** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
+** /_____/\____/\___/\____/____/ **
+** **
+** $Id$
+\* */
+
+package scalac.transformer;
+
+import scalac.*;
+import scalac.ast.*;
+import scalac.symtab.*;
+import scalac.typechecker.*;
+
+
+public class PatternNode {
+ public int pos = scalac.util.Position.NOPOS;
+ public Type type;
+ public PatternNode or;
+ public PatternNode and;
+
+ public case Header(Tree selector, Header next);
+ public case Body(Tree.ValDef[][] bound, Tree[] guard, Tree[] body);
+ public case DefaultPat();
+ public case ConstrPat(Symbol casted);
+ public case ConstantPat(Object value);
+ public case VariablePat(Tree tree);
+
+
+ public Symbol symbol() {
+ switch (this) {
+ case ConstrPat(Symbol casted):
+ return casted;
+ default:
+ return Symbol.NONE;
+ }
+ }
+
+ public String toString() {
+ switch (this) {
+ case Header(Tree selector, Header next):
+ return "Header(" + selector + ")";
+ case Body(_, _, _):
+ return "Body";
+ case DefaultPat():
+ return "DefaultPat";
+ case ConstrPat(Symbol casted):
+ return "ConstrPat(" + casted + ")";
+ case ConstantPat(Object value):
+ return "ConstantPat(" + value + ")";
+ case VariablePat(Tree tree):
+ return "VariablePat";
+ default:
+ return "<unknown pat>";
+ }
+ }
+}