diff options
Diffstat (limited to 'sources/scalac/transformer/PatternNode.java')
-rw-r--r-- | sources/scalac/transformer/PatternNode.java | 58 |
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>"; + } + } +} |