Disable JSR-305 annotations by default, introduce CLI argument
No package annotations are going to be loaded, and TypeQualifierDefault/TypeQualifierNickname are no longer recognized by default. Use the CLI argument "-Xload-jsr305-annotations" to enable this behavior back #KT-10942
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.checkers
|
||||
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.test.MockLibraryUtil
|
||||
import java.io.File
|
||||
|
||||
@@ -27,4 +28,10 @@ abstract class AbstractForeignAnnotationsTest : AbstractDiagnosticsWithFullJdkTe
|
||||
|
||||
open protected val annotationsPath: String
|
||||
get() = FOREIGN_ANNOTATIONS_SOURCES_PATH
|
||||
|
||||
override fun loadLanguageVersionSettings(module: List<TestFile>): LanguageVersionSettings {
|
||||
return LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE).apply {
|
||||
switchFlag(AnalysisFlags.loadJsr305Annotations, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+14
-13
@@ -20,8 +20,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.config.addJavaSourceRoots
|
||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoot
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -41,26 +40,28 @@ class LoadJavaPackageAnnotationsTest : KtUsefulTestCase() {
|
||||
}
|
||||
|
||||
private fun doTest(useJavac: Boolean, configurator: (CompilerConfiguration) -> Unit) {
|
||||
val configuration = KotlinTestUtils.newConfiguration(
|
||||
ConfigurationKind.ALL, TestJdkKind.FULL_JDK, KotlinTestUtils.getAnnotationsJar()
|
||||
).apply {
|
||||
if (useJavac) {
|
||||
put(JVMConfigurationKeys.USE_JAVAC, true)
|
||||
}
|
||||
languageVersionSettings = LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE).apply {
|
||||
switchFlag(AnalysisFlags.loadJsr305Annotations, true)
|
||||
}
|
||||
configurator(this)
|
||||
}
|
||||
val environment =
|
||||
KotlinCoreEnvironment.createForTests(
|
||||
myTestRootDisposable,
|
||||
KotlinTestUtils.newConfiguration(
|
||||
ConfigurationKind.ALL, TestJdkKind.FULL_JDK, KotlinTestUtils.getAnnotationsJar()
|
||||
).also {
|
||||
if (useJavac) {
|
||||
it.put(JVMConfigurationKeys.USE_JAVAC, true)
|
||||
}
|
||||
configurator(it)
|
||||
},
|
||||
configuration,
|
||||
EnvironmentConfigFiles.JVM_CONFIG_FILES
|
||||
).apply {
|
||||
if (useJavac) {
|
||||
registerJavac()
|
||||
}
|
||||
}
|
||||
val moduleDescriptor = JvmResolveUtil.analyze(
|
||||
environment
|
||||
).moduleDescriptor
|
||||
val moduleDescriptor = JvmResolveUtil.analyze(environment).moduleDescriptor
|
||||
|
||||
val packageFragmentDescriptor =
|
||||
moduleDescriptor.getPackage(FqName("test")).fragments
|
||||
|
||||
+18
-23
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.jvm.compiler
|
||||
import org.jetbrains.kotlin.checkers.FOREIGN_ANNOTATIONS_SOURCES_PATH
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
@@ -82,33 +83,27 @@ class TypeQualifierAnnotationResolverTest : KtUsefulTestCase() {
|
||||
}
|
||||
|
||||
private fun buildTypeQualifierResolverAndFindClass(className: String): Pair<AnnotationTypeQualifierResolver, ClassDescriptor> {
|
||||
val environment =
|
||||
KotlinCoreEnvironment.createForTests(
|
||||
myTestRootDisposable,
|
||||
KotlinTestUtils.newConfiguration(
|
||||
ConfigurationKind.ALL, TestJdkKind.FULL_JDK,
|
||||
listOf(
|
||||
KotlinTestUtils.getAnnotationsJar(),
|
||||
MockLibraryUtil.compileJavaFilesLibraryToJar(
|
||||
FOREIGN_ANNOTATIONS_SOURCES_PATH,
|
||||
"foreign-annotations"
|
||||
)
|
||||
),
|
||||
listOf(File(TEST_DATA_PATH))
|
||||
|
||||
),
|
||||
EnvironmentConfigFiles.JVM_CONFIG_FILES
|
||||
)
|
||||
val configuration = KotlinTestUtils.newConfiguration(
|
||||
ConfigurationKind.ALL, TestJdkKind.FULL_JDK,
|
||||
listOf(
|
||||
KotlinTestUtils.getAnnotationsJar(),
|
||||
MockLibraryUtil.compileJavaFilesLibraryToJar(
|
||||
FOREIGN_ANNOTATIONS_SOURCES_PATH,
|
||||
"foreign-annotations"
|
||||
)
|
||||
),
|
||||
listOf(File(TEST_DATA_PATH))
|
||||
).apply {
|
||||
languageVersionSettings = LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE).apply {
|
||||
switchFlag(AnalysisFlags.loadJsr305Annotations, true)
|
||||
}
|
||||
}
|
||||
|
||||
val environment = KotlinCoreEnvironment.createForTests(myTestRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||
val container = JvmResolveUtil.createContainer(environment)
|
||||
|
||||
val typeQualifierResolver = container.get<JavaResolverComponents>().annotationTypeQualifierResolver
|
||||
|
||||
val aClass =
|
||||
container
|
||||
.get<ModuleDescriptor>()
|
||||
.resolveClassByFqName(FqName(className), NoLookupLocation.FROM_TEST)!!
|
||||
|
||||
val aClass = container.get<ModuleDescriptor>().resolveClassByFqName(FqName(className), NoLookupLocation.FROM_TEST)!!
|
||||
|
||||
return typeQualifierResolver to aClass
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user