summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2004-05-17 09:55:26 +0000
committerburaq <buraq@epfl.ch>2004-05-17 09:55:26 +0000
commit987b57f6b4b3470c49dbc352ad648c681cde5ca9 (patch)
tree207e44f438f912ee97a73ddfc7592c4e7ddc6842
parent54cb878b8b6fab9e10dc72580c207cb4b5caad77 (diff)
downloadscala-987b57f6b4b3470c49dbc352ad648c681cde5ca9.tar.gz
scala-987b57f6b4b3470c49dbc352ad648c681cde5ca9.tar.bz2
scala-987b57f6b4b3470c49dbc352ad648c681cde5ca9.zip
obsolete, scala versions work
-rw-r--r--sources/scalac/transformer/TransMatch.java146
-rw-r--r--sources/scalac/transformer/TransMatchPhase.java44
2 files changed, 0 insertions, 190 deletions
diff --git a/sources/scalac/transformer/TransMatch.java b/sources/scalac/transformer/TransMatch.java
deleted file mode 100644
index e64191f385..0000000000
--- a/sources/scalac/transformer/TransMatch.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/* ____ ____ ____ ____ ______ *\
-** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
-** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
-** /_____/\____/\___/\____/____/ **
-\* */
-
-// $Id$
-
-package scalac.transformer;
-
-import java.io.*;
-import java.util.*;
-import scalac.*;
-import scalac.ast.*;
-import scalac.symtab.*;
-import scalac.util.*; // Names
-import Tree.*;
-
-import scalac.transformer.matching.PatternMatcher ;
-import scalac.transformer.matching.TestRegTraverser ;
-import scalac.transformer.matching.AlgebraicMatcher ;
-
-/** A transformer for expanding match expressions into
- * flat sequences of .is and .as method calls
- *
- * @author Matthias Zenger, Burak Emir
- * @version 1.1
- */
-public class TransMatch extends OwnerTransformer {
-
- /** container. classes AlgebraicMatcher and SequenceMatcher get input and store their results in here.
- * resembles the 'Memento' design pattern, could also be named 'Liaison'
- */
- public static class Matcher {
-
- /** owner of the code we create (input)
- */
- public Symbol owner;
-
- /** the selector value (input)
- */
- public Tree selector;
-
- /** type of the result of the whole match (input)
- */
- public Type resultType;
-
- /** tree representing the matcher (output)
- */
- public Tree tree;
-
- public int pos;
-
- public HashMap varMap; // needed in LeftTracerInScala
- public Tree[] stms; // needed in LeftTracerInScala
-
- public Matcher(Symbol owner,
- Tree root,
- Type resultType) {
-
- assert( owner != null ) : "owner is null";
- assert owner != Symbol.NONE ;
- this.owner = owner;
-
- assert root != null;
- assert root.type != null;
- this.selector = root;
-
- assert this.resultType != Type.NoType;
- this.resultType = resultType;
-
- this.pos = root.pos; // for convenience only
-
- }
-
- }
-
- Unit unit;
-
- public TransMatch(Global global) {
- super(global);
- }
-
- public void apply(Unit unit) {
- this.unit = unit;
- super.apply(unit);
- }
-
- protected Tree transform(Tree root, CaseDef[] cases, Type restpe) {
- boolean containsReg = false;
- int i = 0;
- while (i < cases.length) {
- containsReg = TestRegTraverser.apply(cases[i]) || containsReg;
- Set nilvars = TestRegTraverser.getNilVariables();
- if(!nilvars.isEmpty()) {
- //System.err.println("nilvars present");
- Tree[] newBody = new Tree[ nilvars.size() ];
- int j=0;
- for( Iterator it = nilvars.iterator(); it.hasNext(); ) {
- Symbol v = (Symbol) it.next();
- newBody[ j++ ] = gen.ValDef(v, gen.mkNil(cases[i].pos));
- }
- cases[i].body = gen.mkBlock( newBody, cases[i].body );
- }
- i++;
- }
- if (containsReg) {
- AlgebraicMatcher am = new AlgebraicMatcher( unit );
- Matcher matcher = new Matcher( currentOwner, root, restpe );
- am.construct( matcher, cases );
- return matcher.tree;
- } else {
- PatternMatcher pm = new PatternMatcher(unit, root,
- currentOwner, restpe);
- pm.construct(cases);
- if (global.log()) {
- global.log("internal pattern matching structure");
- pm.print();
- }
- return pm.toTree();
- }
- }
-
- public Tree transform(Tree tree) {
- if (tree == null)
- return null;
- switch (tree) {
- case Apply(Select( Tree receiver, Names.match ), Tree[] args):
- if ((args != null) && (args.length == 1))
- switch (args[0]) {
- case Visitor(CaseDef[] cases):
- return transform(transform(receiver), transform(cases), tree.type);
- }
- return tree;
- case Apply(TypeApply(Select( Tree receiver, Names.match ), Tree[] targs), Tree[] args):
- if ((args != null) && (args.length == 1))
- switch (args[0]) {
- case Visitor(CaseDef[] cases):
- return transform(transform(receiver), transform(cases), tree.type);
- }
- return tree;
- default:
- return super.transform(tree);
- }
- }
-}
diff --git a/sources/scalac/transformer/TransMatchPhase.java b/sources/scalac/transformer/TransMatchPhase.java
deleted file mode 100644
index 2d9fea2eae..0000000000
--- a/sources/scalac/transformer/TransMatchPhase.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/* ____ ____ ____ ____ ______ *\
-** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
-** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
-** /_____/\____/\___/\____/____/ **
-\* */
-
-// $Id$
-
-package scalac.transformer;
-
-import scalac.Global;
-import scalac.Phase;
-import scalac.PhaseDescriptor;
-import scalac.Unit;
-import scalac.checkers.*;
-
-public class TransMatchPhase extends Phase {
-
- //########################################################################
- // Public Constructors
-
- /** Initializes this instance. */
- public TransMatchPhase(Global global, PhaseDescriptor descriptor) {
- super(global, descriptor);
- }
-
- //########################################################################
- // Public Methods
-
- /** Applies this phase to the given compilation units. */
- public void apply(Unit[] units) {
- for (int i = 0; i < units.length; i++)
- new TransMatch(global).apply(units[i]);
- }
-
- public Checker[] postCheckers(Global global) {
- return new Checker[] {
- new CheckSymbols(global),
- new CheckTypes(global),
- };
- }
-
- //########################################################################
-}