1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-06-09 16:29:34 +00:00
millfork/src/main/scala/millfork/node/opt/UnreachableCode.scala
Karol Stasiak 502faa3694 panic()
2018-01-08 01:17:48 +01:00

31 lines
1.0 KiB
Scala

package millfork.node.opt
import millfork.CompilationOptions
import millfork.node._
/**
* @author Karol Stasiak
*/
object UnreachableCode extends NodeOptimization {
override def optimize(nodes: List[Node], options: CompilationOptions): List[Node] = nodes match {
case (x:FunctionDeclarationStatement)::xs =>
x.copy(statements = x.statements.map(optimizeStatements(_, options))) :: optimize(xs, options)
case (x:IfStatement)::xs =>
x.copy(
thenBranch = optimizeExecutableStatements(x.thenBranch, options),
elseBranch = optimizeExecutableStatements(x.elseBranch, options)) :: optimize(xs, options)
case (x:WhileStatement)::xs =>
x.copy(body = optimizeExecutableStatements(x.body, options)) :: optimize(xs, options)
case (x:DoWhileStatement)::xs =>
x.copy(body = optimizeExecutableStatements(x.body, options)) :: optimize(xs, options)
case (x:ReturnStatement) :: xs =>
x :: Nil
case x :: xs =>
x :: optimize(xs, options)
case Nil =>
Nil
}
}