From 86c8986bd31757068df21d91c2db507c2e03c834 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 7 May 2020 19:25:08 +0300 Subject: [PATCH] [Gradle, JS] throw exception if dependency forbid generate external KT-38331 --- .../targets/js/npm/NpmDependencyExtension.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyExtension.kt index 31750a9caea..cc36d05eb1a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependencyExtension.kt @@ -171,7 +171,7 @@ private abstract class AbstractNpmDependencyExtension( private fun withName(name: String, vararg args: Any?): NpmDependency { val arg1 = if (args.size > 1) args[1] else null - val generateKotlinExternals = secondArgOrFalse(*args) + val generateKotlinExternals = generateKotlinExternalsIfPossible(*args) return when (arg1) { null -> invoke( @@ -212,9 +212,15 @@ private abstract class AbstractNpmDependencyExtension( return listOf("npm('name', 'version')" to "name:version") } - protected fun secondArgOrFalse(vararg args: Any?): Boolean { - val arg2 = if (args.size > 2) args[2] else null - return (arg2 as? Boolean) ?: defaultGenerateKotlinExternals + protected fun generateKotlinExternalsIfPossible(vararg args: Any?): Boolean { + val arg2 = (if (args.size > 2) args[2] else null) as? Boolean + + if (arg2 != null && !defaultGenerateKotlinExternals) { + npmDeclarationException(args) + } + + return arg2 + ?: defaultGenerateKotlinExternals } } @@ -241,7 +247,7 @@ private class DefaultNpmDependencyExtension( ) override fun processNonStringFirstArgument(arg: Any?, vararg args: Any?): NpmDependency { - val generateKotlinExternals = secondArgOrFalse(args) + val generateKotlinExternals = generateKotlinExternalsIfPossible(args) return when (arg) { is File -> invoke(