Add warnings for jsr305 nullable annotations

#KT-19115 Fixed
This commit is contained in:
e5l
2017-08-11 14:21:23 +03:00
parent 746de612ad
commit 5501cdf049
33 changed files with 506 additions and 198 deletions
@@ -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)
}
@@ -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)
)
}