diff --git a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java index 02f99b04515..845c4d039f9 100644 --- a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java @@ -6657,6 +6657,11 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirOldFronte KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); } + @TestMetadata("checkValuesAreParseableAsVersion.kt") + public void testCheckValuesAreParseableAsVersion() throws Exception { + runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.kt"); + } + @TestMetadata("deprecatedSinceKotlinDeclaration.kt") public void testDeprecatedSinceKotlinDeclaration() throws Exception { runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinDeclaration.kt"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DeprecatedSinceKotlinAnnotationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DeprecatedSinceKotlinAnnotationChecker.kt index 769393bd91e..adf7b2e1220 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DeprecatedSinceKotlinAnnotationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DeprecatedSinceKotlinAnnotationChecker.kt @@ -5,15 +5,21 @@ package org.jetbrains.kotlin.resolve.checkers +import com.intellij.psi.PsiElement import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.diagnostics.Errors +import org.jetbrains.kotlin.diagnostics.reportDiagnosticOnce import org.jetbrains.kotlin.psi.KtAnnotationEntry import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.resolve.RequireKotlinConstants import org.jetbrains.kotlin.resolve.annotations.argumentValue +import org.jetbrains.kotlin.resolve.constants.StringValue import org.jetbrains.kotlin.resolve.deprecation.getSinceVersion import org.jetbrains.kotlin.resolve.source.getPsi +import org.jetbrains.kotlin.utils.addToStdlib.safeAs object DeprecatedSinceKotlinAnnotationChecker : DeclarationChecker { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { @@ -42,9 +48,13 @@ object DeprecatedSinceKotlinAnnotationChecker : DeclarationChecker { return } - val warningSince = deprecatedSinceAnnotation.getSinceVersion("warningSince") - val errorSince = deprecatedSinceAnnotation.getSinceVersion("errorSince") - val hiddenSince = deprecatedSinceAnnotation.getSinceVersion("hiddenSince") + fun AnnotationDescriptor.getCheckedSinceVersion(name: String) = + getSinceVersion(name).also { checkVersion(it, name, context, deprecatedSinceAnnotationName) } + + val warningSince = deprecatedSinceAnnotation.getCheckedSinceVersion(DeprecatedSinceKotlin::warningSince.name) + val errorSince = deprecatedSinceAnnotation.getCheckedSinceVersion(DeprecatedSinceKotlin::errorSince.name) + val hiddenSince = deprecatedSinceAnnotation.getCheckedSinceVersion(DeprecatedSinceKotlin::hiddenSince.name) + if (!lessOrNull(warningSince, errorSince) || !lessOrNull(errorSince, hiddenSince) || !lessOrNull(warningSince, hiddenSince)) { context.trace.report( Errors.DEPRECATED_SINCE_KOTLIN_WITH_UNORDERED_VERSIONS.on( @@ -55,6 +65,22 @@ object DeprecatedSinceKotlinAnnotationChecker : DeclarationChecker { } } + private fun AnnotationDescriptor.checkVersion( + parsedVersion: ApiVersion?, + name: String, + context: DeclarationCheckerContext, + reportOn: PsiElement + ) { + val argumentValue = argumentValue(name).safeAs()?.value + if (argumentValue != null && (parsedVersion == null || !argumentValue.matches(RequireKotlinConstants.VERSION_REGEX))) { + context.trace.reportDiagnosticOnce( + Errors.ILLEGAL_KOTLIN_VERSION_STRING_VALUE.on( + reportOn, fqName ?: return + ) + ) + } + } + private fun lessOrNull(a: ApiVersion?, b: ApiVersion?): Boolean = if (a == null || b == null) true else a <= b } diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.fir.kt new file mode 100644 index 00000000000..1b7d1ff6d12 --- /dev/null +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.fir.kt @@ -0,0 +1,19 @@ +@Deprecated("") +@DeprecatedSinceKotlin("", errorSince = "1.0") +fun test1() {} + +@Deprecated("") +@DeprecatedSinceKotlin("") +fun test2() {} + +@Deprecated("") +@DeprecatedSinceKotlin("", "", "") +fun test3() {} + +@Deprecated("") +@DeprecatedSinceKotlin("1.4-M2") +fun test4() {} + +@Deprecated("") +@DeprecatedSinceKotlin("1.3.70") +fun test5() {} diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.kt new file mode 100644 index 00000000000..2224113d20f --- /dev/null +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.kt @@ -0,0 +1,19 @@ +@Deprecated("") +@DeprecatedSinceKotlin("", errorSince = "1.0") +fun test1() {} + +@Deprecated("") +@DeprecatedSinceKotlin("") +fun test2() {} + +@Deprecated("") +@DeprecatedSinceKotlin("", "", "") +fun test3() {} + +@Deprecated("") +@DeprecatedSinceKotlin("1.4-M2") +fun test4() {} + +@Deprecated("") +@DeprecatedSinceKotlin("1.3.70") +fun test5() {} diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.txt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.txt new file mode 100644 index 00000000000..f900dce0166 --- /dev/null +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.txt @@ -0,0 +1,7 @@ +package + +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.0", warningSince = "") public fun test1(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "") public fun test2(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "", hiddenSince = "", warningSince = "") public fun test3(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.4-M2") public fun test4(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.3.70") public fun test5(): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.fir.kt index fca52cf1720..30c6c574f53 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.fir.kt @@ -1,27 +1,27 @@ // !API_VERSION: 1.4 @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.4") +@DeprecatedSinceKotlin(errorSince = "1.4") class ClassCur @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.4") +@DeprecatedSinceKotlin(errorSince = "1.4") fun funCur() {} @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.4") +@DeprecatedSinceKotlin(errorSince = "1.4") val valCur = Unit @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.5") +@DeprecatedSinceKotlin(errorSince = "1.5") class ClassNext @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.5") +@DeprecatedSinceKotlin(errorSince = "1.5") fun funNext() {} @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.5") +@DeprecatedSinceKotlin(errorSince = "1.5") val valNext = Unit fun usage() { diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.kt index 56edc2b56bf..354a976d664 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.kt @@ -1,27 +1,27 @@ // !API_VERSION: 1.4 @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.4") +@DeprecatedSinceKotlin(errorSince = "1.4") class ClassCur @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.4") +@DeprecatedSinceKotlin(errorSince = "1.4") fun funCur() {} @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.4") +@DeprecatedSinceKotlin(errorSince = "1.4") val valCur = Unit @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.5") +@DeprecatedSinceKotlin(errorSince = "1.5") class ClassNext @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.5") +@DeprecatedSinceKotlin(errorSince = "1.5") fun funNext() {} @Deprecated("") -@DeprecatedSinceKotlin("", errorSince = "1.5") +@DeprecatedSinceKotlin(errorSince = "1.5") val valNext = Unit fun usage() { diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.txt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.txt index dd341c6ae11..6df402f9058 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.txt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.txt @@ -1,19 +1,19 @@ package -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.3", warningSince = "") public val valCur: kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.4", warningSince = "") public val valNext: kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.3", warningSince = "") public fun funCur(): kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.4", warningSince = "") public fun funNext(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.4") public val valCur: kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.5") public val valNext: kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.4") public fun funCur(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.5") public fun funNext(): kotlin.Unit public fun usage(): kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.3", warningSince = "") public final class ClassCur { +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.4") public final class ClassCur { public constructor ClassCur() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.4", warningSince = "") public final class ClassNext { +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(errorSince = "1.5") public final class ClassNext { public constructor ClassNext() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.fir.kt index e4a9e3a65a1..04d74c9fcc0 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.fir.kt @@ -1,27 +1,27 @@ // !API_VERSION: 1.4 @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.4") +@DeprecatedSinceKotlin(hiddenSince = "1.4") class ClassCur @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.4") +@DeprecatedSinceKotlin(hiddenSince = "1.4") fun funCur() {} @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.4") +@DeprecatedSinceKotlin(hiddenSince = "1.4") val valCur = Unit @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.5") +@DeprecatedSinceKotlin(hiddenSince = "1.5") class ClassNext @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.5") +@DeprecatedSinceKotlin(hiddenSince = "1.5") fun funNext() {} @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.5") +@DeprecatedSinceKotlin(hiddenSince = "1.5") val valNext = Unit fun usage() { diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.kt index 1cc05d97a22..53a3ef766d4 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.kt @@ -1,27 +1,27 @@ // !API_VERSION: 1.4 @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.4") +@DeprecatedSinceKotlin(hiddenSince = "1.4") class ClassCur @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.4") +@DeprecatedSinceKotlin(hiddenSince = "1.4") fun funCur() {} @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.4") +@DeprecatedSinceKotlin(hiddenSince = "1.4") val valCur = Unit @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.5") +@DeprecatedSinceKotlin(hiddenSince = "1.5") class ClassNext @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.5") +@DeprecatedSinceKotlin(hiddenSince = "1.5") fun funNext() {} @Deprecated("") -@DeprecatedSinceKotlin("", hiddenSince = "1.5") +@DeprecatedSinceKotlin(hiddenSince = "1.5") val valNext = Unit fun usage() { diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.txt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.txt index 6f3aecdd66a..210967a42de 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.txt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.txt @@ -1,19 +1,19 @@ package -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.3", warningSince = "") public val valCur: kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.4", warningSince = "") public val valNext: kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.3", warningSince = "") public fun funCur(): kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.4", warningSince = "") public fun funNext(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.4") public val valCur: kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.5") public val valNext: kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.4") public fun funCur(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.5") public fun funNext(): kotlin.Unit public fun usage(): kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.3", warningSince = "") public final class ClassCur { +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.4") public final class ClassCur { public constructor ClassCur() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.4", warningSince = "") public final class ClassNext { +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(hiddenSince = "1.5") public final class ClassNext { public constructor ClassNext() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.txt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.txt index 5e8931324f7..e5e4b5beccd 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.txt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.txt @@ -1,19 +1,19 @@ package -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.3") public val valCur: kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.4") public val valNext: kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.3") public fun funCur(): kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.4") public fun funNext(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.4") public val valCur: kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") public val valNext: kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.4") public fun funCur(): kotlin.Unit +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") public fun funNext(): kotlin.Unit public fun usage(): kotlin.Unit -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.3") public final class ClassCur { +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.4") public final class ClassCur { public constructor ClassCur() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } -@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.4") public final class ClassNext { +@kotlin.Deprecated(message = "") @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") public final class ClassNext { public constructor ClassNext() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index acda3ef9e74..ba0db1941cd 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -6664,6 +6664,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTestWithFirVali KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); } + @TestMetadata("checkValuesAreParseableAsVersion.kt") + public void testCheckValuesAreParseableAsVersion() throws Exception { + runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.kt"); + } + @TestMetadata("deprecatedSinceKotlinDeclaration.kt") public void testDeprecatedSinceKotlinDeclaration() throws Exception { runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinDeclaration.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index 8ccc05b769c..befd4299afb 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -6659,6 +6659,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); } + @TestMetadata("checkValuesAreParseableAsVersion.kt") + public void testCheckValuesAreParseableAsVersion() throws Exception { + runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/checkValuesAreParseableAsVersion.kt"); + } + @TestMetadata("deprecatedSinceKotlinDeclaration.kt") public void testDeprecatedSinceKotlinDeclaration() throws Exception { runTest("compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinDeclaration.kt");