From bc399444ab5dd0b0f3d6c1767b6aee72bfd74039 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 14 Jul 2017 20:18:43 +0300 Subject: [PATCH] Fix creating DependenciesResolver with default arguments --- ...inScriptDefinitionFromAnnotatedTemplate.kt | 2 +- .../kotlin/scripts/ScriptTemplateTest.kt | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt b/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt index 9c319ba089e..ca3f08afd47 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt +++ b/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt @@ -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}") diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTemplateTest.kt b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTemplateTest.kt index 2eb956bec53..d29dcf9f137 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTemplateTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTemplateTest.kt @@ -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)