Fix creating DependenciesResolver with default arguments

This commit is contained in:
Pavel V. Talanov
2017-07-14 20:18:43 +03:00
parent 7aee51fd77
commit bc399444ab
2 changed files with 25 additions and 1 deletions
@@ -83,7 +83,7 @@ open class KotlinScriptDefinitionFromAnnotatedTemplate(
log.warn("[kts] ${resolverClass.qualifiedName} must have a constructor without parameters")
return null
}
return constructorWithoutParameters.call()
return constructorWithoutParameters.callBy(emptyMap())
}
catch (ex: ClassCastException) {
log.warn("[kts] Script def error ${ex.message}")
@@ -278,6 +278,18 @@ class ScriptTemplateTest {
Assert.assertNotNull(aClass)
}
@Test
fun testSeveralConstructors() {
val aClass = compileScript("fib.kts", ScriptWithSeveralConstructorsResolver::class, null)
Assert.assertNotNull(aClass)
}
@Test
fun testConstructorWithDefaultArgs() {
val aClass = compileScript("fib.kts", ScriptWithDefaultArgsResolver::class, null)
Assert.assertNotNull(aClass)
}
@Test
fun testSmokeScriptException() {
val aClass = compileScript("smoke_exception.kts", ScriptWithArrayParam::class)
@@ -493,6 +505,12 @@ class TestAcceptedAnnotationsLegacyResolver: ScriptDependenciesResolver, Accepte
}
}
class SeveralConstructorsResolver(val c: Int): TestKotlinScriptDependenciesResolver() {
constructor(): this(0)
}
class DefaultArgsConstructorResolver(val c: Int = 0): TestKotlinScriptDependenciesResolver()
@ScriptTemplateDefinition(
scriptFilePattern =".*\\.kts",
resolver = TestKotlinScriptDummyDependenciesResolver::class)
@@ -559,6 +577,12 @@ abstract class ScriptWithAcceptedAnnotationsAsyncResolver
@ScriptTemplateDefinition(resolver = TestAcceptedAnnotationsLegacyResolver::class)
abstract class ScriptWithAcceptedAnnotationsLegacyResolver
@ScriptTemplateDefinition(resolver = SeveralConstructorsResolver::class)
abstract class ScriptWithSeveralConstructorsResolver(val num: Int)
@ScriptTemplateDefinition(resolver = DefaultArgsConstructorResolver::class)
abstract class ScriptWithDefaultArgsResolver(val num: Int)
@Target(AnnotationTarget.FILE)
@Retention(AnnotationRetention.RUNTIME)
annotation class DependsOn(val path: String)