From d547af00aa971c19d652654f5ecef650a3ffc8de Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 24 Dec 2019 18:29:09 +0100 Subject: [PATCH] Fix NPE in ExperimentalUsageChecker in corner case Since there's no nullability assertion, null could end up in this list and cause NPE further at `reportNotAcceptedExperimentalities`. This could happen if a declaration was annotated with WasExperimental, the marker was annotated with the new RequiresOptIn, and API version 1.2 was used. No new tests are added because 1.2 is obsolete and WasExperimental is internal. --- .../kotlin/resolve/checkers/ExperimentalUsageChecker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt index 7a2a14af573..56cf38f33dc 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalUsageChecker.kt @@ -130,7 +130,7 @@ class ExperimentalUsageChecker(project: Project) : CallChecker { if (annotations.any { it.fqName == WAS_EXPERIMENTAL_FQ_NAME }) { val accessibility = checkSinceKotlinVersionAccessibility(languageVersionSettings) if (accessibility is SinceKotlinAccessibility.NotAccessibleButWasExperimental) { - result.addAll(accessibility.markerClasses.map { it.loadExperimentalityForMarkerAnnotation() }) + result.addAll(accessibility.markerClasses.mapNotNull { it.loadExperimentalityForMarkerAnnotation() }) } }