Implement support for additional receivers in the backend

This commit is contained in:
Ilya Chernikov
2018-03-13 11:07:16 +01:00
parent 611aff6b61
commit 00320bad8d
10 changed files with 138 additions and 37 deletions
@@ -26,7 +26,12 @@ open class BasicJvmScriptRunner<ScriptBase : Any>(val baseClass: KClass<ScriptBa
if (scriptObject !is Class<*>)
ResultWithDiagnostics.Failure(ScriptDiagnostic("expecting class in this implementation, got ${scriptObject?.javaClass}"))
else {
scriptObject.getConstructor().newInstance()
val receivers = scriptEvaluationEnvironment.getOrNull(ScriptEvaluationEnvironmentParams.implicitReceivers)
if (receivers == null) {
scriptObject.getConstructor().newInstance()
} else {
scriptObject.getConstructor(Array<Any>::class.java).newInstance(receivers.toTypedArray())
}
ResultWithDiagnostics.Success(EvaluationResult(null, scriptEvaluationEnvironment))
}