Add warnings for jsr305 nullable annotations
#KT-19115 Fixed
This commit is contained in:
+11
-10
@@ -25,8 +25,17 @@ import java.io.File
|
||||
abstract class AbstractForeignAnnotationsNoAnnotationInClasspathTest : AbstractForeignAnnotationsTest() {
|
||||
private val compiledJavaPath = KotlinTestUtils.tmpDir("java-compiled-files")
|
||||
override fun getExtraClasspath(): List<File> {
|
||||
compileJavaFiles()
|
||||
return listOf(compiledJavaPath)
|
||||
val foreignAnnotations = createJarWithForeignAnnotations()
|
||||
val testAnnotations = compileTestAnnotations(foreignAnnotations)
|
||||
|
||||
val additionalClasspath = (foreignAnnotations + testAnnotations).map { it.path }
|
||||
CodegenTestUtil.compileJava(
|
||||
CodegenTestUtil.findJavaSourcesInDirectory(javaFilesDir),
|
||||
additionalClasspath, emptyList(),
|
||||
compiledJavaPath
|
||||
)
|
||||
|
||||
return listOf(compiledJavaPath) + testAnnotations
|
||||
}
|
||||
|
||||
override fun analyzeAndCheck(testDataFile: File, files: List<TestFile>) {
|
||||
@@ -39,12 +48,4 @@ abstract class AbstractForeignAnnotationsNoAnnotationInClasspathTest : AbstractF
|
||||
|
||||
private fun createJarWithForeignAnnotations(): List<File> =
|
||||
listOf(MockLibraryUtil.compileJvmLibraryToJar(annotationsPath, "foreign-annotations"))
|
||||
|
||||
private fun compileJavaFiles() {
|
||||
CodegenTestUtil.compileJava(
|
||||
CodegenTestUtil.findJavaSourcesInDirectory(javaFilesDir),
|
||||
createJarWithForeignAnnotations().map { it.path }, emptyList(),
|
||||
compiledJavaPath
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,20 +17,40 @@
|
||||
package org.jetbrains.kotlin.checkers
|
||||
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import org.jetbrains.kotlin.test.MockLibraryUtil
|
||||
import org.jetbrains.kotlin.utils.Jsr305State
|
||||
import java.io.File
|
||||
|
||||
val FOREIGN_ANNOTATIONS_SOURCES_PATH = "compiler/testData/foreignAnnotations/annotations"
|
||||
val TEST_ANNOTATIONS_SOURCE_PATH = "compiler/testData/foreignAnnotations/testAnnotations"
|
||||
|
||||
abstract class AbstractForeignAnnotationsTest : AbstractDiagnosticsWithFullJdkTest() {
|
||||
override fun getExtraClasspath(): List<File> =
|
||||
listOf(MockLibraryUtil.compileJvmLibraryToJar(annotationsPath, "foreign-annotations"))
|
||||
private val WARNING_FOR_JSR305_ANNOTATIONS_DIRECTIVE = "WARNING_FOR_JSR305_ANNOTATIONS"
|
||||
|
||||
override fun getExtraClasspath(): List<File> {
|
||||
val foreignAnnotations = listOf(MockLibraryUtil.compileJvmLibraryToJar(annotationsPath, "foreign-annotations"))
|
||||
return foreignAnnotations + compileTestAnnotations(foreignAnnotations)
|
||||
}
|
||||
|
||||
protected fun compileTestAnnotations(extraClassPath: List<File>): List<File> =
|
||||
listOf(MockLibraryUtil.compileJvmLibraryToJar(
|
||||
TEST_ANNOTATIONS_SOURCE_PATH,
|
||||
"test-foreign-annotations",
|
||||
extraClasspath = extraClassPath.map { it.path }
|
||||
))
|
||||
|
||||
open protected val annotationsPath: String
|
||||
get() = FOREIGN_ANNOTATIONS_SOURCES_PATH
|
||||
|
||||
override fun loadLanguageVersionSettings(module: List<TestFile>): LanguageVersionSettings =
|
||||
LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE,
|
||||
mapOf(AnalysisFlag.loadJsr305Annotations to Jsr305State.ENABLE))
|
||||
override fun loadLanguageVersionSettings(module: List<TestFile>): LanguageVersionSettings {
|
||||
val hasWarningDirective = module.any {
|
||||
InTextDirectivesUtils.isDirectiveDefined(it.expectedText, WARNING_FOR_JSR305_ANNOTATIONS_DIRECTIVE)
|
||||
}
|
||||
|
||||
val jsr305State = if (hasWarningDirective) Jsr305State.WARN else Jsr305State.ENABLE
|
||||
return LanguageVersionSettingsImpl(LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE,
|
||||
mapOf(AnalysisFlag.jsr305GlobalState to jsr305State)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class LoadJavaPackageAnnotationsTest : KtUsefulTestCase() {
|
||||
put(JVMConfigurationKeys.USE_JAVAC, true)
|
||||
}
|
||||
languageVersionSettings = LanguageVersionSettingsImpl(
|
||||
LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, mapOf(AnalysisFlag.loadJsr305Annotations to Jsr305State.ENABLE)
|
||||
LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, mapOf(AnalysisFlag.jsr305GlobalState to Jsr305State.ENABLE)
|
||||
)
|
||||
configurator(this)
|
||||
}
|
||||
|
||||
+1
-1
@@ -96,7 +96,7 @@ class TypeQualifierAnnotationResolverTest : KtUsefulTestCase() {
|
||||
listOf(File(TEST_DATA_PATH))
|
||||
).apply {
|
||||
languageVersionSettings = LanguageVersionSettingsImpl(
|
||||
LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, mapOf(AnalysisFlag.loadJsr305Annotations to Jsr305State.ENABLE)
|
||||
LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, mapOf(AnalysisFlag.jsr305GlobalState to Jsr305State.ENABLE)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user