diff options
Diffstat (limited to 'examples/scala-js/ir/src/main/scala/scala/scalajs/ir/Traversers.scala')
-rw-r--r-- | examples/scala-js/ir/src/main/scala/scala/scalajs/ir/Traversers.scala | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/examples/scala-js/ir/src/main/scala/scala/scalajs/ir/Traversers.scala b/examples/scala-js/ir/src/main/scala/scala/scalajs/ir/Traversers.scala deleted file mode 100644 index 1b77e5e..0000000 --- a/examples/scala-js/ir/src/main/scala/scala/scalajs/ir/Traversers.scala +++ /dev/null @@ -1,197 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ __ ____ Scala.js IR ** -** / __/ __// _ | / / / _ | __ / // __/ (c) 2014, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ ** -** /____/\___/_/ |_/____/_/ | |__/ /____/ ** -** |/____/ ** -\* */ - - -package scala.scalajs.ir - -import Trees._ - -object Traversers { - - class Traverser { - def traverse(tree: Tree): Unit = tree match { - // Definitions - - case VarDef(ident, vtpe, mutable, rhs) => - traverse(rhs) - - // Control flow constructs - - case Block(stats) => - stats foreach traverse - - case Labeled(label, tpe, body) => - traverse(body) - - case Assign(lhs, rhs) => - traverse(lhs) - traverse(rhs) - - case Return(expr, label) => - traverse(expr) - - case If(cond, thenp, elsep) => - traverse(cond) - traverse(thenp) - traverse(elsep) - - case While(cond, body, label) => - traverse(cond) - traverse(body) - - case DoWhile(body, cond, label) => - traverse(body) - traverse(cond) - - case Try(block, errVar, handler, finalizer) => - traverse(block) - traverse(handler) - traverse(finalizer) - - case Throw(expr) => - traverse(expr) - - case Match(selector, cases, default) => - traverse(selector) - cases foreach (c => (c._1 map traverse, traverse(c._2))) - traverse(default) - - // Scala expressions - - case New(cls, ctor, args) => - args foreach traverse - - case StoreModule(cls, value) => - traverse(value) - - case Select(qualifier, item, mutable) => - traverse(qualifier) - - case Apply(receiver, method, args) => - traverse(receiver) - args foreach traverse - - case StaticApply(receiver, cls, method, args) => - traverse(receiver) - args foreach traverse - - case TraitImplApply(impl, method, args) => - args foreach traverse - - case UnaryOp(op, lhs) => - traverse(lhs) - - case BinaryOp(op, lhs, rhs) => - traverse(lhs) - traverse(rhs) - - case NewArray(tpe, lengths) => - lengths foreach traverse - - case ArrayValue(tpe, elems) => - elems foreach traverse - - case ArrayLength(array) => - traverse(array) - - case ArraySelect(array, index) => - traverse(array) - traverse(index) - - case RecordValue(tpe, elems) => - elems foreach traverse - - case IsInstanceOf(expr, cls) => - traverse(expr) - - case AsInstanceOf(expr, cls) => - traverse(expr) - - case Unbox(expr, charCode) => - traverse(expr) - - case GetClass(expr) => - traverse(expr) - - case CallHelper(helper, args) => - args foreach traverse - - // JavaScript expressions - - case JSNew(ctor, args) => - traverse(ctor) - args foreach traverse - - case JSDotSelect(qualifier, item) => - traverse(qualifier) - - case JSBracketSelect(qualifier, item) => - traverse(qualifier) - traverse(item) - - case JSFunctionApply(fun, args) => - traverse(fun) - args foreach traverse - - case JSDotMethodApply(receiver, method, args) => - traverse(receiver) - args foreach traverse - - case JSBracketMethodApply(receiver, method, args) => - traverse(receiver) - traverse(method) - args foreach traverse - - case JSDelete(prop) => - traverse(prop) - - case JSUnaryOp(op, lhs) => - traverse(lhs) - - case JSBinaryOp(op, lhs, rhs) => - traverse(lhs) - traverse(rhs) - - case JSArrayConstr(items) => - items foreach traverse - - case JSObjectConstr(fields) => - fields foreach { f => traverse(f._2) } - - // Atomic expressions - - case Closure(captureParams, params, body, captureValues) => - traverse(body) - captureValues.foreach(traverse) - - // Classes - - case ClassDef(name, kind, parent, ancestors, defs) => - defs foreach traverse - - case MethodDef(name, args, resultType, body) => - traverse(body) - - case PropertyDef(name, getterBody, setterArg, setterBody) => - traverse(getterBody) - traverse(setterBody) - - case ConstructorExportDef(fullName, args, body) => - traverse(body) - - // Trees that need not be traversed - - case _:Skip | _:Continue | _:LoadModule | _:JSEnvInfo | - _:Literal | _:VarRef | _:This | _:ModuleExportDef | EmptyTree => - - case _ => - sys.error(s"Invalid tree in traverse() of class ${tree.getClass}") - } - } - -} |