From 3ed42d394b414814567ac612d19c3141d4bc0c86 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 5 Aug 2020 19:18:43 +0300 Subject: [PATCH] [Gradle, JS] Support hyphenated range ^KT-41054 fixed --- .../gradle/targets/js/npm/NpmRangeVisitor.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRangeVisitor.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRangeVisitor.kt index 8a853362290..ba3c9a00fd8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRangeVisitor.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmRangeVisitor.kt @@ -9,7 +9,6 @@ import com.github.gundy.semver4j.generated.grammar.NodeSemverExpressionBaseVisit import com.github.gundy.semver4j.generated.grammar.NodeSemverExpressionParser import com.github.gundy.semver4j.model.Version import org.antlr.v4.runtime.tree.TerminalNode -import org.gradle.api.GradleException import org.jetbrains.kotlin.gradle.utils.toListOrEmpty class NpmRangeVisitor : NodeSemverExpressionBaseVisitor>() { @@ -31,7 +30,7 @@ class NpmRangeVisitor : NodeSemverExpressionBaseVisitor>() { val nextVersion = when { partialWildcardSemver.minor == null -> version.incrementMajor() partialWildcardSemver.patch == null -> version.incrementMinor() - else -> throw GradleException("Incorrect version pattern $versionText") + else -> return version(version) } return (gteq(version) intersect lt(nextVersion)) @@ -84,7 +83,14 @@ class NpmRangeVisitor : NodeSemverExpressionBaseVisitor>() { } override fun visitFullySpecifiedSemver(ctx: NodeSemverExpressionParser.FullySpecifiedSemverContext): List = - version(ctx.fullSemver().text) + visitFullSemver(ctx.fullSemver()) + + override fun visitFullSemver(ctx: NodeSemverExpressionParser.FullSemverContext): List = + version(ctx.text) + + override fun visitHyphenatedRangeOfFullySpecifiedVersions(ctx: NodeSemverExpressionParser.HyphenatedRangeOfFullySpecifiedVersionsContext): List = + (gteq(ctx.left.text) intersect lteq(ctx.right.text)) + .toListOrEmpty() override fun visitLogicalAndOfSimpleExpressions(ctx: NodeSemverExpressionParser.LogicalAndOfSimpleExpressionsContext): List = try { @@ -112,7 +118,7 @@ class NpmRangeVisitor : NodeSemverExpressionBaseVisitor>() { version(Version.fromString(version)) private fun version(version: Version): List = - gt(version) union lt(version) + (gteq(version) intersect lteq(version)).toListOrEmpty() private fun lt(version: String): NpmRange = lt(Version.fromString(version))