[Gradle, JS] Support hyphenated range

^KT-41054 fixed
This commit is contained in:
Ilya Goncharov
2020-08-05 19:18:43 +03:00
parent a4de85da13
commit 3ed42d394b
@@ -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<List<NpmRange>>() {
@@ -31,7 +30,7 @@ class NpmRangeVisitor : NodeSemverExpressionBaseVisitor<List<NpmRange>>() {
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<List<NpmRange>>() {
}
override fun visitFullySpecifiedSemver(ctx: NodeSemverExpressionParser.FullySpecifiedSemverContext): List<NpmRange> =
version(ctx.fullSemver().text)
visitFullSemver(ctx.fullSemver())
override fun visitFullSemver(ctx: NodeSemverExpressionParser.FullSemverContext): List<NpmRange> =
version(ctx.text)
override fun visitHyphenatedRangeOfFullySpecifiedVersions(ctx: NodeSemverExpressionParser.HyphenatedRangeOfFullySpecifiedVersionsContext): List<NpmRange> =
(gteq(ctx.left.text) intersect lteq(ctx.right.text))
.toListOrEmpty()
override fun visitLogicalAndOfSimpleExpressions(ctx: NodeSemverExpressionParser.LogicalAndOfSimpleExpressionsContext): List<NpmRange> =
try {
@@ -112,7 +118,7 @@ class NpmRangeVisitor : NodeSemverExpressionBaseVisitor<List<NpmRange>>() {
version(Version.fromString(version))
private fun version(version: Version): List<NpmRange> =
gt(version) union lt(version)
(gteq(version) intersect lteq(version)).toListOrEmpty()
private fun lt(version: String): NpmRange =
lt(Version.fromString(version))