K2: introduce OptIn language version checker
#KT-60598 Fixed
This commit is contained in:
committed by
Space Team
parent
8c305d6143
commit
95bf63d6cb
+37
-1
@@ -5,9 +5,45 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.analysis.checkers.config
|
package org.jetbrains.kotlin.fir.analysis.checkers.config
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.transformers.PackageResolutionResult
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.transformers.resolveToPackageOrClass
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.resolve.checkers.OptInNames
|
||||||
|
import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
|
||||||
|
|
||||||
object FirOptInLanguageVersionSettingsChecker : FirLanguageVersionSettingsChecker() {
|
object FirOptInLanguageVersionSettingsChecker : FirLanguageVersionSettingsChecker() {
|
||||||
override fun check(context: CheckerContext, rawReport: (Boolean, String) -> Unit) {
|
override fun check(context: CheckerContext, rawReport: (Boolean, String) -> Unit) {
|
||||||
|
context.languageVersionSettings.getFlag(AnalysisFlags.optIn).forEach { fqNameAsString ->
|
||||||
|
if (fqNameAsString != OptInNames.REQUIRES_OPT_IN_FQ_NAME.asString()) {
|
||||||
|
checkOptInMarkerArgument(context, fqNameAsString, rawReport)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private fun checkOptInMarkerArgument(context: CheckerContext, fqNameAsString: String, rawReport: (Boolean, String) -> Unit) {
|
||||||
|
val packageOrClass = resolveToPackageOrClass(context.session.symbolProvider, FqName(fqNameAsString))
|
||||||
|
val symbol = (packageOrClass as? PackageResolutionResult.PackageOrClass)?.classSymbol
|
||||||
|
|
||||||
|
if (symbol == null) {
|
||||||
|
rawReport(
|
||||||
|
false,
|
||||||
|
"Opt-in requirement marker $fqNameAsString is unresolved. Please make sure it's present in the module dependencies"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (symbol.getAnnotationByClassId(OptInNames.REQUIRES_OPT_IN_CLASS_ID, context.session) == null) {
|
||||||
|
rawReport(false, "Class $fqNameAsString is not an opt-in requirement marker")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val deprecationInfo = symbol.getDeprecation(context.languageVersionSettings.apiVersion)?.all ?: return
|
||||||
|
rawReport(
|
||||||
|
deprecationInfo.deprecationLevel != DeprecationLevelValue.WARNING,
|
||||||
|
"Opt-in requirement marker $fqNameAsString is deprecated" + deprecationInfo.message?.let { ". $it" }.orEmpty()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+2
-7
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.analysis.CheckersComponentInternal
|
import org.jetbrains.kotlin.fir.analysis.CheckersComponentInternal
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.LanguageVersionSettingsCheckers
|
import org.jetbrains.kotlin.fir.analysis.checkers.LanguageVersionSettingsCheckers
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.config.FirLanguageVersionSettingsChecker
|
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
import org.jetbrains.kotlin.fir.analysis.checkersComponent
|
||||||
|
|
||||||
@@ -21,13 +20,9 @@ class LanguageVersionSettingsDiagnosticComponent(
|
|||||||
private val checkers: LanguageVersionSettingsCheckers = session.checkersComponent.languageVersionSettingsCheckers,
|
private val checkers: LanguageVersionSettingsCheckers = session.checkersComponent.languageVersionSettingsCheckers,
|
||||||
) : AbstractDiagnosticCollectorComponent(session, reporter) {
|
) : AbstractDiagnosticCollectorComponent(session, reporter) {
|
||||||
override fun checkSettings(data: CheckerContext) {
|
override fun checkSettings(data: CheckerContext) {
|
||||||
checkers.languageVersionSettingsCheckers.check(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun Collection<FirLanguageVersionSettingsChecker>.check(context: CheckerContext) {
|
|
||||||
val rawReport = (reporter as? BaseDiagnosticsCollector)?.rawReport ?: return
|
val rawReport = (reporter as? BaseDiagnosticsCollector)?.rawReport ?: return
|
||||||
for (checker in this) {
|
for (checker in checkers.languageVersionSettingsCheckers) {
|
||||||
checker.check(context, rawReport)
|
checker.check(data, rawReport)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-36
@@ -13,16 +13,12 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildErrorImport
|
import org.jetbrains.kotlin.fir.declarations.builder.buildErrorImport
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildResolvedImport
|
import org.jetbrains.kotlin.fir.declarations.builder.buildResolvedImport
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
|
||||||
import org.jetbrains.kotlin.fir.lookupTracker
|
import org.jetbrains.kotlin.fir.lookupTracker
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeImportFromSingleton
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeImportFromSingleton
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedParentInImport
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.withFileAnalysisExceptionWrapping
|
import org.jetbrains.kotlin.fir.withFileAnalysisExceptionWrapping
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
class FirImportResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(
|
class FirImportResolveProcessor(session: FirSession, scopeSession: ScopeSession) : FirTransformerBasedResolveProcessor(
|
||||||
@@ -100,35 +96,3 @@ open class FirImportResolveTransformer protected constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun resolveToPackageOrClass(symbolProvider: FirSymbolProvider, fqName: FqName): PackageResolutionResult {
|
|
||||||
var currentPackage = fqName
|
|
||||||
|
|
||||||
val pathSegments = fqName.pathSegments()
|
|
||||||
var prefixSize = pathSegments.size
|
|
||||||
while (!currentPackage.isRoot && prefixSize > 0) {
|
|
||||||
if (symbolProvider.getPackage(currentPackage) != null) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
currentPackage = currentPackage.parent()
|
|
||||||
prefixSize--
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentPackage == fqName) return PackageResolutionResult.PackageOrClass(currentPackage, null, null)
|
|
||||||
val relativeClassFqName = FqName.fromSegments((prefixSize until pathSegments.size).map { pathSegments[it].asString() })
|
|
||||||
|
|
||||||
val classId = ClassId(currentPackage, relativeClassFqName, false)
|
|
||||||
val symbol = symbolProvider.getClassLikeSymbolByClassId(classId) ?: return PackageResolutionResult.Error(
|
|
||||||
ConeUnresolvedParentInImport(classId)
|
|
||||||
)
|
|
||||||
|
|
||||||
return PackageResolutionResult.PackageOrClass(currentPackage, relativeClassFqName, symbol)
|
|
||||||
}
|
|
||||||
|
|
||||||
sealed class PackageResolutionResult {
|
|
||||||
data class PackageOrClass(
|
|
||||||
val packageFqName: FqName, val relativeClassFqName: FqName?, val classSymbol: FirClassLikeSymbol<*>?
|
|
||||||
) : PackageResolutionResult()
|
|
||||||
|
|
||||||
class Error(val diagnostic: ConeDiagnostic) : PackageResolutionResult()
|
|
||||||
}
|
|
||||||
|
|||||||
+45
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 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.fir.resolve.transformers
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedParentInImport
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
|
fun resolveToPackageOrClass(symbolProvider: FirSymbolProvider, fqName: FqName): PackageResolutionResult {
|
||||||
|
var currentPackage = fqName
|
||||||
|
|
||||||
|
val pathSegments = fqName.pathSegments()
|
||||||
|
var prefixSize = pathSegments.size
|
||||||
|
while (!currentPackage.isRoot && prefixSize > 0) {
|
||||||
|
if (symbolProvider.getPackage(currentPackage) != null) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
currentPackage = currentPackage.parent()
|
||||||
|
prefixSize--
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentPackage == fqName) return PackageResolutionResult.PackageOrClass(currentPackage, null, null)
|
||||||
|
val relativeClassFqName = FqName.fromSegments((prefixSize until pathSegments.size).map { pathSegments[it].asString() })
|
||||||
|
|
||||||
|
val classId = ClassId(currentPackage, relativeClassFqName, false)
|
||||||
|
val symbol = symbolProvider.getClassLikeSymbolByClassId(classId) ?: return PackageResolutionResult.Error(
|
||||||
|
ConeUnresolvedParentInImport(classId)
|
||||||
|
)
|
||||||
|
|
||||||
|
return PackageResolutionResult.PackageOrClass(currentPackage, relativeClassFqName, symbol)
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed class PackageResolutionResult {
|
||||||
|
data class PackageOrClass(
|
||||||
|
val packageFqName: FqName, val relativeClassFqName: FqName?, val classSymbol: FirClassLikeSymbol<*>?
|
||||||
|
) : PackageResolutionResult()
|
||||||
|
|
||||||
|
class Error(val diagnostic: ConeDiagnostic) : PackageResolutionResult()
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
$TESTDATA_DIR$/experimentalDeprecated.kt
|
$TESTDATA_DIR$/experimentalDeprecated.kt
|
||||||
-d
|
-d
|
||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
2.0
|
||||||
-opt-in=kotlin.RequiresOptIn
|
-opt-in=kotlin.RequiresOptIn
|
||||||
-opt-in=org.test.Error
|
-opt-in=org.test.Error
|
||||||
-opt-in=org.test.Hidden
|
-opt-in=org.test.Hidden
|
||||||
|
|||||||
+3
-2
@@ -1,3 +1,4 @@
|
|||||||
error: opt-in requirement marker org.test.Error is deprecated. Error
|
warning: language version 2.0 is experimental, there are no backwards compatibility guarantees for new language and library features
|
||||||
error: opt-in requirement marker org.test.Hidden is deprecated. Hidden
|
error: opt-in requirement marker org.test.Error is deprecated
|
||||||
|
error: opt-in requirement marker org.test.Hidden is deprecated
|
||||||
COMPILATION_ERROR
|
COMPILATION_ERROR
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
$TESTDATA_DIR$/experimentalDeprecated.kt
|
||||||
|
-d
|
||||||
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
1.9
|
||||||
|
-opt-in=kotlin.RequiresOptIn
|
||||||
|
-opt-in=org.test.Error
|
||||||
|
-opt-in=org.test.Hidden
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
error: opt-in requirement marker org.test.Error is deprecated. Error
|
||||||
|
error: opt-in requirement marker org.test.Hidden is deprecated. Hidden
|
||||||
|
COMPILATION_ERROR
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
$TESTDATA_DIR$/experimentalDeprecatedWarning.kt
|
$TESTDATA_DIR$/experimentalDeprecatedWarning.kt
|
||||||
-d
|
-d
|
||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
2.0
|
||||||
-Xopt-in=kotlin.RequiresOptIn
|
-Xopt-in=kotlin.RequiresOptIn
|
||||||
-opt-in=kotlin.RequiresOptIn
|
-opt-in=kotlin.RequiresOptIn
|
||||||
-opt-in=org.test.Warning
|
-opt-in=org.test.Warning
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
warning: argument -Xopt-in is deprecated. Please use -opt-in instead
|
warning: argument -Xopt-in is deprecated. Please use -opt-in instead
|
||||||
warning: opt-in requirement marker org.test.Warning is deprecated. Warning
|
warning: language version 2.0 is experimental, there are no backwards compatibility guarantees for new language and library features
|
||||||
|
warning: opt-in requirement marker org.test.Warning is deprecated
|
||||||
OK
|
OK
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
$TESTDATA_DIR$/experimentalDeprecatedWarning.kt
|
||||||
|
-d
|
||||||
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
1.9
|
||||||
|
-Xopt-in=kotlin.RequiresOptIn
|
||||||
|
-opt-in=kotlin.RequiresOptIn
|
||||||
|
-opt-in=org.test.Warning
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
warning: argument -Xopt-in is deprecated. Please use -opt-in instead
|
||||||
|
warning: opt-in requirement marker org.test.Warning is deprecated. Warning
|
||||||
|
OK
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
$TESTDATA_DIR$/experimentalIsNotAnnotation.kt
|
$TESTDATA_DIR$/experimentalIsNotAnnotation.kt
|
||||||
-d
|
-d
|
||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
2.0
|
||||||
-opt-in
|
-opt-in
|
||||||
org.test.NotAnAnnotation1
|
org.test.NotAnAnnotation1
|
||||||
-opt-in=org.test.NotAnAnnotation2
|
-opt-in=org.test.NotAnAnnotation2
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
warning: language version 2.0 is experimental, there are no backwards compatibility guarantees for new language and library features
|
||||||
warning: class org.test.NotAnAnnotation1 is not an opt-in requirement marker
|
warning: class org.test.NotAnAnnotation1 is not an opt-in requirement marker
|
||||||
warning: class org.test.NotAnAnnotation2 is not an opt-in requirement marker
|
warning: class org.test.NotAnAnnotation2 is not an opt-in requirement marker
|
||||||
OK
|
OK
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
$TESTDATA_DIR$/experimentalIsNotAnnotation.kt
|
||||||
|
-d
|
||||||
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
1.9
|
||||||
|
-opt-in
|
||||||
|
org.test.NotAnAnnotation1
|
||||||
|
-opt-in=org.test.NotAnAnnotation2
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
warning: class org.test.NotAnAnnotation1 is not an opt-in requirement marker
|
||||||
|
warning: class org.test.NotAnAnnotation2 is not an opt-in requirement marker
|
||||||
|
OK
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
$TESTDATA_DIR$/experimentalIsNotMarker.kt
|
$TESTDATA_DIR$/experimentalIsNotMarker.kt
|
||||||
-d
|
-d
|
||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
2.0
|
||||||
-opt-in=org.test.NotAMarker
|
-opt-in=org.test.NotAMarker
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
|
warning: language version 2.0 is experimental, there are no backwards compatibility guarantees for new language and library features
|
||||||
warning: class org.test.NotAMarker is not an opt-in requirement marker
|
warning: class org.test.NotAMarker is not an opt-in requirement marker
|
||||||
OK
|
OK
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
$TESTDATA_DIR$/experimentalIsNotMarker.kt
|
||||||
|
-d
|
||||||
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
1.9
|
||||||
|
-opt-in=org.test.NotAMarker
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
warning: class org.test.NotAMarker is not an opt-in requirement marker
|
||||||
|
OK
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
$TESTDATA_DIR$/experimentalNested.kt
|
$TESTDATA_DIR$/experimentalNested.kt
|
||||||
-d
|
-d
|
||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
2.0
|
||||||
-opt-in=kotlin.RequiresOptIn
|
-opt-in=kotlin.RequiresOptIn
|
||||||
-opt-in=org.test.Outer.Nested
|
-opt-in=org.test.Outer.Nested
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
|
warning: language version 2.0 is experimental, there are no backwards compatibility guarantees for new language and library features
|
||||||
OK
|
OK
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
$TESTDATA_DIR$/experimentalNested.kt
|
||||||
|
-d
|
||||||
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
1.9
|
||||||
|
-opt-in=kotlin.RequiresOptIn
|
||||||
|
-opt-in=org.test.Outer.Nested
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
OK
|
||||||
+2
-1
@@ -1,8 +1,9 @@
|
|||||||
$TESTDATA_DIR$/experimentalUnresolved.kt
|
$TESTDATA_DIR$/experimentalUnresolved.kt
|
||||||
-d
|
-d
|
||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
2.0
|
||||||
-opt-in
|
-opt-in
|
||||||
org.test.Unresolved1
|
org.test.Unresolved1
|
||||||
-opt-in
|
-opt-in
|
||||||
org.test.Unresolved2
|
org.test.Unresolved2
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
warning: language version 2.0 is experimental, there are no backwards compatibility guarantees for new language and library features
|
||||||
warning: opt-in requirement marker org.test.Unresolved1 is unresolved. Please make sure it's present in the module dependencies
|
warning: opt-in requirement marker org.test.Unresolved1 is unresolved. Please make sure it's present in the module dependencies
|
||||||
warning: opt-in requirement marker org.test.Unresolved2 is unresolved. Please make sure it's present in the module dependencies
|
warning: opt-in requirement marker org.test.Unresolved2 is unresolved. Please make sure it's present in the module dependencies
|
||||||
OK
|
OK
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
$TESTDATA_DIR$/experimentalUnresolved.kt
|
||||||
|
-d
|
||||||
|
$TEMP_DIR$
|
||||||
|
-language-version
|
||||||
|
1.9
|
||||||
|
-opt-in
|
||||||
|
org.test.Unresolved1
|
||||||
|
-opt-in
|
||||||
|
org.test.Unresolved2
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
warning: opt-in requirement marker org.test.Unresolved1 is unresolved. Please make sure it's present in the module dependencies
|
||||||
|
warning: opt-in requirement marker org.test.Unresolved2 is unresolved. Please make sure it's present in the module dependencies
|
||||||
|
OK
|
||||||
@@ -410,31 +410,61 @@ public class CliTestGenerated extends AbstractCliTest {
|
|||||||
runTest("compiler/testData/cli/jvm/experimentalDeprecated.args");
|
runTest("compiler/testData/cli/jvm/experimentalDeprecated.args");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("experimentalDeprecatedK1.args")
|
||||||
|
public void testExperimentalDeprecatedK1() throws Exception {
|
||||||
|
runTest("compiler/testData/cli/jvm/experimentalDeprecatedK1.args");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("experimentalDeprecatedWarning.args")
|
@TestMetadata("experimentalDeprecatedWarning.args")
|
||||||
public void testExperimentalDeprecatedWarning() throws Exception {
|
public void testExperimentalDeprecatedWarning() throws Exception {
|
||||||
runTest("compiler/testData/cli/jvm/experimentalDeprecatedWarning.args");
|
runTest("compiler/testData/cli/jvm/experimentalDeprecatedWarning.args");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("experimentalDeprecatedWarningK1.args")
|
||||||
|
public void testExperimentalDeprecatedWarningK1() throws Exception {
|
||||||
|
runTest("compiler/testData/cli/jvm/experimentalDeprecatedWarningK1.args");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("experimentalIsNotAnnotation.args")
|
@TestMetadata("experimentalIsNotAnnotation.args")
|
||||||
public void testExperimentalIsNotAnnotation() throws Exception {
|
public void testExperimentalIsNotAnnotation() throws Exception {
|
||||||
runTest("compiler/testData/cli/jvm/experimentalIsNotAnnotation.args");
|
runTest("compiler/testData/cli/jvm/experimentalIsNotAnnotation.args");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("experimentalIsNotAnnotationK1.args")
|
||||||
|
public void testExperimentalIsNotAnnotationK1() throws Exception {
|
||||||
|
runTest("compiler/testData/cli/jvm/experimentalIsNotAnnotationK1.args");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("experimentalIsNotMarker.args")
|
@TestMetadata("experimentalIsNotMarker.args")
|
||||||
public void testExperimentalIsNotMarker() throws Exception {
|
public void testExperimentalIsNotMarker() throws Exception {
|
||||||
runTest("compiler/testData/cli/jvm/experimentalIsNotMarker.args");
|
runTest("compiler/testData/cli/jvm/experimentalIsNotMarker.args");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("experimentalIsNotMarkerK1.args")
|
||||||
|
public void testExperimentalIsNotMarkerK1() throws Exception {
|
||||||
|
runTest("compiler/testData/cli/jvm/experimentalIsNotMarkerK1.args");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("experimentalNested.args")
|
@TestMetadata("experimentalNested.args")
|
||||||
public void testExperimentalNested() throws Exception {
|
public void testExperimentalNested() throws Exception {
|
||||||
runTest("compiler/testData/cli/jvm/experimentalNested.args");
|
runTest("compiler/testData/cli/jvm/experimentalNested.args");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("experimentalNestedK1.args")
|
||||||
|
public void testExperimentalNestedK1() throws Exception {
|
||||||
|
runTest("compiler/testData/cli/jvm/experimentalNestedK1.args");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("experimentalUnresolved.args")
|
@TestMetadata("experimentalUnresolved.args")
|
||||||
public void testExperimentalUnresolved() throws Exception {
|
public void testExperimentalUnresolved() throws Exception {
|
||||||
runTest("compiler/testData/cli/jvm/experimentalUnresolved.args");
|
runTest("compiler/testData/cli/jvm/experimentalUnresolved.args");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("experimentalUnresolvedK1.args")
|
||||||
|
public void testExperimentalUnresolvedK1() throws Exception {
|
||||||
|
runTest("compiler/testData/cli/jvm/experimentalUnresolvedK1.args");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("explicitlyDisableSamConversionsWithOldFlag.args")
|
@TestMetadata("explicitlyDisableSamConversionsWithOldFlag.args")
|
||||||
public void testExplicitlyDisableSamConversionsWithOldFlag() throws Exception {
|
public void testExplicitlyDisableSamConversionsWithOldFlag() throws Exception {
|
||||||
runTest("compiler/testData/cli/jvm/explicitlyDisableSamConversionsWithOldFlag.args");
|
runTest("compiler/testData/cli/jvm/explicitlyDisableSamConversionsWithOldFlag.args");
|
||||||
|
|||||||
Reference in New Issue
Block a user