Script templates: search for parameterless constructor of resolver
This commit is contained in:
committed by
Pavel V. Talanov
parent
10e14103b6
commit
cf57e5a7a1
+7
-6
@@ -25,7 +25,6 @@ import kotlin.reflect.KClass
|
|||||||
import kotlin.reflect.KFunction
|
import kotlin.reflect.KFunction
|
||||||
import kotlin.reflect.KParameter
|
import kotlin.reflect.KParameter
|
||||||
import kotlin.reflect.full.memberFunctions
|
import kotlin.reflect.full.memberFunctions
|
||||||
import kotlin.reflect.full.primaryConstructor
|
|
||||||
import kotlin.script.dependencies.DependenciesResolver
|
import kotlin.script.dependencies.DependenciesResolver
|
||||||
import kotlin.script.dependencies.ScriptDependenciesResolver
|
import kotlin.script.dependencies.ScriptDependenciesResolver
|
||||||
import kotlin.script.templates.AcceptedAnnotations
|
import kotlin.script.templates.AcceptedAnnotations
|
||||||
@@ -71,15 +70,17 @@ open class KotlinScriptDefinitionFromAnnotatedTemplate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun <T : Any> instantiateResolver(resolverClass: KClass<T>): T? {
|
private fun <T : Any> instantiateResolver(resolverClass: KClass<T>): T? {
|
||||||
// TODO: logScriptDefMessage missing or invalid constructor
|
try {
|
||||||
return try {
|
val constructorWithoutParameters = resolverClass.constructors.find { it.parameters.all { it.isOptional } }
|
||||||
resolverClass.primaryConstructor?.call().also {
|
if (constructorWithoutParameters == null) {
|
||||||
if (it == null) log.warn("[kts] No default constructor found for ${resolverClass.qualifiedName}")
|
log.warn("[kts] ${resolverClass.qualifiedName} must have a constructor without parameters")
|
||||||
|
return null
|
||||||
}
|
}
|
||||||
|
return constructorWithoutParameters.call()
|
||||||
}
|
}
|
||||||
catch (ex: ClassCastException) {
|
catch (ex: ClassCastException) {
|
||||||
log.warn("[kts] Script def error ${ex.message}")
|
log.warn("[kts] Script def error ${ex.message}")
|
||||||
null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user