Revert "[FIR] Don't lose error level enhancements in warning-level-enhanced arguments"
This reverts commit 371b1eb3d5.
This commit is contained in:
Vendored
-39
@@ -1,39 +0,0 @@
|
||||
// FULL_JDK
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// LANGUAGE: -SupportJavaErrorEnhancementOfArgumentsOfWarningLevelEnhanced
|
||||
|
||||
// FILE: ElementTypesAreNonnullByDefault.java
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.meta.TypeQualifierDefault;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.TYPE})
|
||||
@TypeQualifierDefault({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
|
||||
@Nonnull
|
||||
@interface ElementTypesAreNonnullByDefault {
|
||||
}
|
||||
|
||||
// FILE: Maps.java
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
// Here it's important that @ElementTypesAreNonnullByDefault is a JSR-305 default qualifier and disabled by default (resulting in warnings-only)
|
||||
// Thus return type (head type) is considered as warningly-annotated as not-nullable and that makes annotations on bounds for K and V
|
||||
// be effectively ignored on non-warnings level.
|
||||
// Behavior was changed in K2, see KT-63209.
|
||||
@ElementTypesAreNonnullByDefault
|
||||
public final class Maps {
|
||||
public static <K extends @Nullable Object, V extends @Nullable Object> java.util.HashMap<K,V> newHashMap() { return null; }
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
fun foo() {
|
||||
val x = Maps.newHashMap<String, Int>()
|
||||
x.put("", 1)
|
||||
// If there were no @ElementTypesAreNonnullByDefault on the Maps class, there would be an error on `null` argument because the type of `x`
|
||||
// would be `HashMap<String, Int>!`, i.e. with non-flexible type arguments, thus not allowing nulls.
|
||||
x.put("", <!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>null<!>)
|
||||
}
|
||||
+1
-2
@@ -1,6 +1,6 @@
|
||||
// FIR_IDENTICAL
|
||||
// FULL_JDK
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// LANGUAGE: -SupportJavaErrorEnhancementOfArgumentsOfWarningLevelEnhanced
|
||||
|
||||
// FILE: ElementTypesAreNonnullByDefault.java
|
||||
import java.lang.annotation.ElementType;
|
||||
@@ -22,7 +22,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
// Here it's important that @ElementTypesAreNonnullByDefault is a JSR-305 default qualifier and disabled by default (resulting in warnings-only)
|
||||
// Thus return type (head type) is considered as warningly-annotated as not-nullable and that makes annotations on bounds for K and V
|
||||
// be effectively ignored on non-warnings level.
|
||||
// Behavior was changed in K2, see KT-63209.
|
||||
@ElementTypesAreNonnullByDefault
|
||||
public final class Maps {
|
||||
public static <K extends @Nullable Object, V extends @Nullable Object> java.util.HashMap<K,V> newHashMap() { return null; }
|
||||
|
||||
Vendored
-71
@@ -1,71 +0,0 @@
|
||||
// NULLABILITY_ANNOTATIONS: @io.reactivex.rxjava3.annotations:strict, @org.eclipse.jdt.annotation:warn
|
||||
// LANGUAGE: +SupportJavaErrorEnhancementOfArgumentsOfWarningLevelEnhanced
|
||||
// SOURCE_RETENTION_ANNOTATIONS
|
||||
// MUTE_FOR_PSI_CLASS_FILES_READING
|
||||
// ^because annotations don't allow type parameter use.
|
||||
// ISSUE: KT-63209
|
||||
|
||||
// FILE: A1.java
|
||||
import java.util.List;
|
||||
|
||||
public class A1 {
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable String> warningError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable List<@io.reactivex.rxjava3.annotations.Nullable String>> warningErrorError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@org.eclipse.jdt.annotation.Nullable List<@io.reactivex.rxjava3.annotations.Nullable String>> warningWarningError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable List<@org.eclipse.jdt.annotation.Nullable String>> warningErrorWarning() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<List<@io.reactivex.rxjava3.annotations.Nullable String>> warningPlatformError() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
fun main1() {
|
||||
val list = A1.warningError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element<!UNSAFE_CALL!>.<!>length
|
||||
}
|
||||
|
||||
fun main2() {
|
||||
val list = A1.warningErrorError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element<!UNSAFE_CALL!>.<!>get(0)
|
||||
element!!.get(0)<!UNSAFE_CALL!>.<!>length
|
||||
}
|
||||
|
||||
fun main3() {
|
||||
val list = A1.warningWarningError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>element<!>.get(0)
|
||||
element!!.get(0)<!UNSAFE_CALL!>.<!>length
|
||||
}
|
||||
|
||||
fun main4() {
|
||||
val list = A1.warningErrorWarning()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element<!UNSAFE_CALL!>.<!>get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>element!!.get(0)<!>.length
|
||||
}
|
||||
|
||||
fun main5() {
|
||||
val list = A1.warningPlatformError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0)<!UNSAFE_CALL!>.<!>length
|
||||
}
|
||||
-71
@@ -1,71 +0,0 @@
|
||||
// NULLABILITY_ANNOTATIONS: @io.reactivex.rxjava3.annotations:strict, @org.eclipse.jdt.annotation:warn
|
||||
// LANGUAGE: +SupportJavaErrorEnhancementOfArgumentsOfWarningLevelEnhanced
|
||||
// SOURCE_RETENTION_ANNOTATIONS
|
||||
// MUTE_FOR_PSI_CLASS_FILES_READING
|
||||
// ^because annotations don't allow type parameter use.
|
||||
// ISSUE: KT-63209
|
||||
|
||||
// FILE: A1.java
|
||||
import java.util.List;
|
||||
|
||||
public class A1 {
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable String> warningError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable List<@io.reactivex.rxjava3.annotations.Nullable String>> warningErrorError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@org.eclipse.jdt.annotation.Nullable List<@io.reactivex.rxjava3.annotations.Nullable String>> warningWarningError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable List<@org.eclipse.jdt.annotation.Nullable String>> warningErrorWarning() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<List<@io.reactivex.rxjava3.annotations.Nullable String>> warningPlatformError() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
fun main1() {
|
||||
val list = A1.warningError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.length
|
||||
}
|
||||
|
||||
fun main2() {
|
||||
val list = A1.warningErrorError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0).length
|
||||
}
|
||||
|
||||
fun main3() {
|
||||
val list = A1.warningWarningError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0).length
|
||||
}
|
||||
|
||||
fun main4() {
|
||||
val list = A1.warningErrorWarning()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0).length
|
||||
}
|
||||
|
||||
fun main5() {
|
||||
val list = A1.warningPlatformError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0).length
|
||||
}
|
||||
Vendored
-71
@@ -1,71 +0,0 @@
|
||||
// NULLABILITY_ANNOTATIONS: @io.reactivex.rxjava3.annotations:strict, @org.eclipse.jdt.annotation:warn
|
||||
// LANGUAGE: -SupportJavaErrorEnhancementOfArgumentsOfWarningLevelEnhanced
|
||||
// SOURCE_RETENTION_ANNOTATIONS
|
||||
// MUTE_FOR_PSI_CLASS_FILES_READING
|
||||
// ^because annotations don't allow type parameter use.
|
||||
// ISSUE: KT-63209
|
||||
|
||||
// FILE: A1.java
|
||||
import java.util.List;
|
||||
|
||||
public class A1 {
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable String> warningError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable List<@io.reactivex.rxjava3.annotations.Nullable String>> warningErrorError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@org.eclipse.jdt.annotation.Nullable List<@io.reactivex.rxjava3.annotations.Nullable String>> warningWarningError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable List<@org.eclipse.jdt.annotation.Nullable String>> warningErrorWarning() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<List<@io.reactivex.rxjava3.annotations.Nullable String>> warningPlatformError() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
fun main1() {
|
||||
val list = A1.warningError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("kotlin.collections.(Mutable)List<@Nullable() kotlin.String?>?")!>list<!>.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("@Nullable() kotlin.String?; This will become an error in Kotlin 2.1. See https://youtrack.jetbrains.com/issue/KT-63209.")!>element<!>.length
|
||||
}
|
||||
|
||||
fun main2() {
|
||||
val list = A1.warningErrorError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("kotlin.collections.(Mutable)List<(@Nullable() kotlin.collections.MutableList<@Nullable() kotlin.String?>?..@Nullable() kotlin.collections.List<@Nullable() kotlin.String?>?)>?")!>list<!>.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("(@Nullable() kotlin.collections.MutableList<@Nullable() kotlin.String?>?..@Nullable() kotlin.collections.List<@Nullable() kotlin.String?>?); This will become an error in Kotlin 2.1. See https://youtrack.jetbrains.com/issue/KT-63209.")!>element<!>.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("@Nullable() kotlin.String?; This will become an error in Kotlin 2.1. See https://youtrack.jetbrains.com/issue/KT-63209.")!>element!!.get(0)<!>.length
|
||||
}
|
||||
|
||||
fun main3() {
|
||||
val list = A1.warningWarningError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("kotlin.collections.(Mutable)List<(@Nullable() kotlin.collections.MutableList<@Nullable() kotlin.String?>?..@Nullable() kotlin.collections.List<@Nullable() kotlin.String?>?)>?")!>list<!>.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("(@Nullable() kotlin.collections.MutableList<@Nullable() kotlin.String?>?..@Nullable() kotlin.collections.List<@Nullable() kotlin.String?>?)")!>element<!>.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("@Nullable() kotlin.String?; This will become an error in Kotlin 2.1. See https://youtrack.jetbrains.com/issue/KT-63209.")!>element!!.get(0)<!>.length
|
||||
}
|
||||
|
||||
fun main4() {
|
||||
val list = A1.warningErrorWarning()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("kotlin.collections.(Mutable)List<(@Nullable() kotlin.collections.MutableList<@Nullable() kotlin.String?>?..@Nullable() kotlin.collections.List<@Nullable() kotlin.String?>?)>?")!>list<!>.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("(@Nullable() kotlin.collections.MutableList<@Nullable() kotlin.String?>?..@Nullable() kotlin.collections.List<@Nullable() kotlin.String?>?); This will become an error in Kotlin 2.1. See https://youtrack.jetbrains.com/issue/KT-63209.")!>element<!>.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("@Nullable() kotlin.String?")!>element!!.get(0)<!>.length
|
||||
}
|
||||
|
||||
fun main5() {
|
||||
val list = A1.warningPlatformError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("kotlin.collections.(Mutable)List<kotlin.collections.(Mutable)List<@Nullable() kotlin.String?>!>?")!>list<!>.get(0)
|
||||
element.get(0)
|
||||
<!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS("@Nullable() kotlin.String?; This will become an error in Kotlin 2.1. See https://youtrack.jetbrains.com/issue/KT-63209.")!>element!!.get(0)<!>.length
|
||||
}
|
||||
Vendored
-71
@@ -1,71 +0,0 @@
|
||||
// NULLABILITY_ANNOTATIONS: @io.reactivex.rxjava3.annotations:strict, @org.eclipse.jdt.annotation:warn
|
||||
// LANGUAGE: -SupportJavaErrorEnhancementOfArgumentsOfWarningLevelEnhanced
|
||||
// SOURCE_RETENTION_ANNOTATIONS
|
||||
// MUTE_FOR_PSI_CLASS_FILES_READING
|
||||
// ^because annotations don't allow type parameter use.
|
||||
// ISSUE: KT-63209
|
||||
|
||||
// FILE: A1.java
|
||||
import java.util.List;
|
||||
|
||||
public class A1 {
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable String> warningError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable List<@io.reactivex.rxjava3.annotations.Nullable String>> warningErrorError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@org.eclipse.jdt.annotation.Nullable List<@io.reactivex.rxjava3.annotations.Nullable String>> warningWarningError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<@io.reactivex.rxjava3.annotations.Nullable List<@org.eclipse.jdt.annotation.Nullable String>> warningErrorWarning() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.eclipse.jdt.annotation.Nullable
|
||||
public static List<List<@io.reactivex.rxjava3.annotations.Nullable String>> warningPlatformError() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
fun main1() {
|
||||
val list = A1.warningError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.length
|
||||
}
|
||||
|
||||
fun main2() {
|
||||
val list = A1.warningErrorError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0).length
|
||||
}
|
||||
|
||||
fun main3() {
|
||||
val list = A1.warningWarningError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0).length
|
||||
}
|
||||
|
||||
fun main4() {
|
||||
val list = A1.warningErrorWarning()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0).length
|
||||
}
|
||||
|
||||
fun main5() {
|
||||
val list = A1.warningPlatformError()
|
||||
val element = <!RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>list<!>.get(0)
|
||||
element.get(0)
|
||||
element!!.get(0).length
|
||||
}
|
||||
Reference in New Issue
Block a user