Migrate throw evaluator to Kotlin

This commit is contained in:
2020-03-07 20:01:59 +01:00
parent c9e612a492
commit 31e194a566
3 changed files with 23 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
package io.smnp.error
class CustomException(message: String?) : Exception(message)

View File

@@ -9,6 +9,7 @@ class DefaultEvaluator : Evaluator() {
override fun tryToEvaluate(node: Node, environment: Environment): EvaluatorOutput {
return oneOf(
ThrowEvaluator(),
ExpressionEvaluator()
).evaluate(node, environment)
}

View File

@@ -0,0 +1,19 @@
package io.smnp.evaluation.evaluator
import io.smnp.dsl.ast.model.node.Node
import io.smnp.dsl.ast.model.node.ThrowNode
import io.smnp.error.CustomException
import io.smnp.evaluation.environment.Environment
import io.smnp.evaluation.model.entity.EvaluatorOutput
class ThrowEvaluator : Evaluator() {
override fun supportedNodes() = listOf(ThrowNode::class)
override fun tryToEvaluate(node: Node, environment: Environment): EvaluatorOutput {
val evaluator = ExpressionEvaluator()
val valueNode = (node as ThrowNode).value
val value = evaluator.evaluate(valueNode, environment)
throw CustomException(value.value!!.value.toString())
}
}