[Gradle, JS] None range instead of none version

^KT-41054 fixed
This commit is contained in:
Ilya Goncharov
2020-08-03 18:23:50 +03:00
parent f1b8c62231
commit 90bee78dda
2 changed files with 37 additions and 14 deletions
@@ -0,0 +1,23 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.targets.js.npm
import com.github.gundy.semver4j.model.Version
data class NpmRange(
val startVersion: Version? = null,
val startInclusive: Boolean = false,
val endVersion: Version? = null,
val endInclusive: Boolean = false
)
val NONE_RANGE = NpmRange(
startVersion = Version.fromString(NONE_VERSION)
)
infix operator fun NpmRange.plus(other: NpmRange) {
}
@@ -10,17 +10,17 @@ import com.github.gundy.semver4j.generated.grammar.NodeSemverExpressionParser
import com.github.gundy.semver4j.model.Version import com.github.gundy.semver4j.model.Version
import org.antlr.v4.runtime.tree.TerminalNode import org.antlr.v4.runtime.tree.TerminalNode
class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor<String>() { class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor<NpmRange>() {
override fun visitEmptyRange(ctx: NodeSemverExpressionParser.EmptyRangeContext): String = override fun visitEmptyRange(ctx: NodeSemverExpressionParser.EmptyRangeContext): NpmRange =
NONE_VERSION NONE_RANGE
override fun visitWildcard(ctx: NodeSemverExpressionParser.WildcardContext): String = override fun visitWildcard(ctx: NodeSemverExpressionParser.WildcardContext): NpmRange =
NONE_VERSION NONE_RANGE
override fun visitWildcardRange(ctx: NodeSemverExpressionParser.WildcardRangeContext): String = override fun visitWildcardRange(ctx: NodeSemverExpressionParser.WildcardRangeContext): NpmRange =
inverseVersion(ctx.partialWildcardSemver().text) inverseVersion(ctx.partialWildcardSemver().text)
override fun visitOperator(ctx: NodeSemverExpressionParser.OperatorContext): String { override fun visitOperator(ctx: NodeSemverExpressionParser.OperatorContext): NpmRange {
val eq: TerminalNode? = ctx.unaryOperator().EQ() val eq: TerminalNode? = ctx.unaryOperator().EQ()
val gt: TerminalNode? = ctx.unaryOperator().GT() val gt: TerminalNode? = ctx.unaryOperator().GT()
val lt: TerminalNode? = ctx.unaryOperator().LT() val lt: TerminalNode? = ctx.unaryOperator().LT()
@@ -40,10 +40,10 @@ class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor<String>() {
return "$LT$invertedEqToken$version" return "$LT$invertedEqToken$version"
} }
override fun visitWildcardOperator(ctx: NodeSemverExpressionParser.WildcardOperatorContext): String = override fun visitWildcardOperator(ctx: NodeSemverExpressionParser.WildcardOperatorContext): NpmRange =
NONE_VERSION NONE_RANGE
override fun visitTildeRange(ctx: NodeSemverExpressionParser.TildeRangeContext): String { override fun visitTildeRange(ctx: NodeSemverExpressionParser.TildeRangeContext): NpmRange {
val version = Version.fromString(ctx.fullSemver().text) val version = Version.fromString(ctx.fullSemver().text)
val nextVersion = version val nextVersion = version
.incrementMinor() .incrementMinor()
@@ -51,7 +51,7 @@ class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor<String>() {
return "$LT$version $OR $GTEQ$nextVersion" return "$LT$version $OR $GTEQ$nextVersion"
} }
override fun visitCaretRange(ctx: NodeSemverExpressionParser.CaretRangeContext): String { override fun visitCaretRange(ctx: NodeSemverExpressionParser.CaretRangeContext): NpmRange {
val version = Version.fromString(ctx.fullSemver().text) val version = Version.fromString(ctx.fullSemver().text)
val nextVersion = version val nextVersion = version
.incrementMajor() .incrementMajor()
@@ -59,14 +59,14 @@ class NpmVersionInvertedVisitor : NodeSemverExpressionBaseVisitor<String>() {
return "$LT$version $OR $GTEQ$nextVersion" return "$LT$version $OR $GTEQ$nextVersion"
} }
override fun visitFullySpecifiedSemver(ctx: NodeSemverExpressionParser.FullySpecifiedSemverContext): String = override fun visitFullySpecifiedSemver(ctx: NodeSemverExpressionParser.FullySpecifiedSemverContext): NpmRange =
inverseVersion(ctx.fullSemver().text) inverseVersion(ctx.fullSemver().text)
override fun visitLogicalAndOfSimpleExpressions(ctx: NodeSemverExpressionParser.LogicalAndOfSimpleExpressionsContext): String = override fun visitLogicalAndOfSimpleExpressions(ctx: NodeSemverExpressionParser.LogicalAndOfSimpleExpressionsContext): NpmRange =
ctx.simple() ctx.simple()
.joinToString(OR) { visit(it) } .joinToString(OR) { visit(it) }
override fun visitLogicalOrOfMultipleRanges(ctx: NodeSemverExpressionParser.LogicalOrOfMultipleRangesContext): String = override fun visitLogicalOrOfMultipleRanges(ctx: NodeSemverExpressionParser.LogicalOrOfMultipleRangesContext): NpmRange =
ctx.basicRange() ctx.basicRange()
.joinToString(AND) { visitBasicRange(it) } .joinToString(AND) { visitBasicRange(it) }