Migrate throw evaluator to Kotlin
This commit is contained in:
3
src/main/kotlin/io/smnp/error/CustomException.kt
Normal file
3
src/main/kotlin/io/smnp/error/CustomException.kt
Normal file
@@ -0,0 +1,3 @@
|
||||
package io.smnp.error
|
||||
|
||||
class CustomException(message: String?) : Exception(message)
|
||||
@@ -9,6 +9,7 @@ class DefaultEvaluator : Evaluator() {
|
||||
|
||||
override fun tryToEvaluate(node: Node, environment: Environment): EvaluatorOutput {
|
||||
return oneOf(
|
||||
ThrowEvaluator(),
|
||||
ExpressionEvaluator()
|
||||
).evaluate(node, environment)
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user