[FIR] add tests on external annotations
Tests are excluded in COMPILED_JAVA mode because in this mode external annotations are not present at all ^KT-62310
This commit is contained in:
committed by
Space Team
parent
e452113a7a
commit
2cac922cd0
+37
@@ -0,0 +1,37 @@
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public ClassWithExternalAnnotatedMembers(Integer i) { // with external annotation on parameter
|
||||
|
||||
}
|
||||
|
||||
public ClassWithExternalAnnotatedMembers(@NotNull String s) {
|
||||
|
||||
}
|
||||
|
||||
public ClassWithExternalAnnotatedMembers(Boolean b) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val i: Int? = null
|
||||
<!NONE_APPLICABLE!>ClassWithExternalAnnotatedMembers<!>(i)
|
||||
|
||||
val s: String? = null
|
||||
<!NONE_APPLICABLE!>ClassWithExternalAnnotatedMembers<!>(s)
|
||||
|
||||
val b: Boolean? = null
|
||||
ClassWithExternalAnnotatedMembers(b)
|
||||
|
||||
ClassWithExternalAnnotatedMembers(null)
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers ClassWithExternalAnnotatedMembers(java.lang.Integer) 0'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public ClassWithExternalAnnotatedMembers(Integer i) { // with external annotation on parameter
|
||||
|
||||
}
|
||||
|
||||
public ClassWithExternalAnnotatedMembers(@NotNull String s) {
|
||||
|
||||
}
|
||||
|
||||
public ClassWithExternalAnnotatedMembers(Boolean b) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val i: Int? = null
|
||||
ClassWithExternalAnnotatedMembers(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>i<!>)
|
||||
|
||||
val s: String? = null
|
||||
ClassWithExternalAnnotatedMembers(<!TYPE_MISMATCH!>s<!>)
|
||||
|
||||
val b: Boolean? = null
|
||||
ClassWithExternalAnnotatedMembers(b)
|
||||
|
||||
<!OVERLOAD_RESOLUTION_AMBIGUITY!>ClassWithExternalAnnotatedMembers<!>(null)
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers ClassWithExternalAnnotatedMembers(java.lang.Integer) 0'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public ClassWithExternalAnnotatedMembers(Integer i) { // with external annotation on parameter
|
||||
|
||||
}
|
||||
|
||||
public ClassWithExternalAnnotatedMembers(@NotNull String s) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val i: Int? = null
|
||||
<!NONE_APPLICABLE!>ClassWithExternalAnnotatedMembers<!>(i)
|
||||
|
||||
val s: String? = null
|
||||
<!NONE_APPLICABLE!>ClassWithExternalAnnotatedMembers<!>(s)
|
||||
|
||||
val b: Boolean? = null
|
||||
<!NONE_APPLICABLE!>ClassWithExternalAnnotatedMembers<!>(b)
|
||||
|
||||
<!NONE_APPLICABLE!>ClassWithExternalAnnotatedMembers<!>(null)
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers ClassWithExternalAnnotatedMembers(java.lang.Integer) 0'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public ClassWithExternalAnnotatedMembers(Integer i) { // with external annotation on parameter
|
||||
|
||||
}
|
||||
|
||||
public ClassWithExternalAnnotatedMembers(@NotNull String s) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val i: Int? = null
|
||||
ClassWithExternalAnnotatedMembers(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>i<!>)
|
||||
|
||||
val s: String? = null
|
||||
ClassWithExternalAnnotatedMembers(<!TYPE_MISMATCH!>s<!>)
|
||||
|
||||
val b: Boolean? = null
|
||||
<!NONE_APPLICABLE!>ClassWithExternalAnnotatedMembers<!>(b)
|
||||
|
||||
ClassWithExternalAnnotatedMembers(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>null<!>)
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers ClassWithExternalAnnotatedMembers(java.lang.Integer) 0'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
Vendored
+39
@@ -0,0 +1,39 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public String externalNotNullField;
|
||||
|
||||
@NotNull
|
||||
public String explicitNotNullField;
|
||||
|
||||
public static String staticExternalNotNullField;
|
||||
|
||||
@NotNull
|
||||
public static String staticExplicitNotNullField;
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val x = ClassWithExternalAnnotatedMembers()
|
||||
x.externalNotNullField<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
x.explicitNotNullField<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
|
||||
ClassWithExternalAnnotatedMembers.staticExternalNotNullField<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
ClassWithExternalAnnotatedMembers.staticExplicitNotNullField<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
}
|
||||
|
||||
fun String.foo() {
|
||||
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers externalNotNullField'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
<item name='ClassWithExternalAnnotatedMembers staticExternalNotNullField'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: one/two/ClassWithExternalAnnotatedMembers.java
|
||||
package one.two;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public String externalNotNullField;
|
||||
|
||||
@NotNull
|
||||
public String explicitNotNullField;
|
||||
|
||||
public static String staticExternalNotNullField;
|
||||
|
||||
@NotNull
|
||||
public static String staticExplicitNotNullField;
|
||||
}
|
||||
|
||||
// FILE: one/usage.kt
|
||||
package one
|
||||
|
||||
import one.two.ClassWithExternalAnnotatedMembers
|
||||
|
||||
fun test() {
|
||||
val x = ClassWithExternalAnnotatedMembers()
|
||||
x.externalNotNullField<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
x.explicitNotNullField<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
|
||||
ClassWithExternalAnnotatedMembers.staticExternalNotNullField<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
ClassWithExternalAnnotatedMembers.staticExplicitNotNullField<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
}
|
||||
|
||||
fun String.foo() {
|
||||
|
||||
}
|
||||
|
||||
// FILE: one/two/annotations.xml
|
||||
<root>
|
||||
<item name='one.two.ClassWithExternalAnnotatedMembers externalNotNullField'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
<item name='one.two.ClassWithExternalAnnotatedMembers staticExternalNotNullField'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public String externalNotNullMethod() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String explicitNotNullMethod() {
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String staticExternalNotNullMethod() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String staticExplicitNotNullMethod() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val x = ClassWithExternalAnnotatedMembers()
|
||||
x.externalNotNullMethod()<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
x.explicitNotNullMethod()<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
|
||||
ClassWithExternalAnnotatedMembers.staticExternalNotNullMethod()<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
ClassWithExternalAnnotatedMembers.staticExplicitNotNullMethod()<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
}
|
||||
|
||||
fun String.foo() {
|
||||
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers java.lang.String externalNotNullMethod()'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
<item name='ClassWithExternalAnnotatedMembers java.lang.String staticExternalNotNullMethod()'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
// FIR_IDENTICAL
|
||||
// MODULE: javaModule
|
||||
// FILE: one/two/FirstModuleClass.java
|
||||
package one.two;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class FirstModuleClass {
|
||||
public String externalNotNullMethod() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String explicitNotNullMethod() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
// FILE: one/two/annotations.xml
|
||||
<root>
|
||||
<item name='one.two.FirstModuleClass java.lang.String externalNotNullMethod()'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
// FILE: usage.kt
|
||||
package usage1
|
||||
|
||||
import one.two.FirstModuleClass
|
||||
|
||||
fun test() {
|
||||
val x = FirstModuleClass()
|
||||
x.externalNotNullMethod()<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
x.explicitNotNullMethod()<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
}
|
||||
|
||||
fun String.foo() {
|
||||
|
||||
}
|
||||
// MODULE: javaModule2
|
||||
// FILE: three/SecondModuleClass.java
|
||||
package three;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class SecondModuleClass {
|
||||
public static String staticExternalNotNullMethod() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String staticExplicitNotNullMethod() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
// FILE: three/annotations.xml
|
||||
<root>
|
||||
<item name='three.SecondModuleClass java.lang.String staticExternalNotNullMethod()'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
// FILE: my/pack/usage.kt
|
||||
package my.pack
|
||||
|
||||
import three.SecondModuleClass
|
||||
|
||||
fun test() {
|
||||
SecondModuleClass.staticExternalNotNullMethod()<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
SecondModuleClass.staticExplicitNotNullMethod()<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
}
|
||||
|
||||
fun String.foo() {
|
||||
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public void method(String s) {
|
||||
}
|
||||
|
||||
public void method(@NotNull Integer i) {
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val instance = ClassWithExternalAnnotatedMembers()
|
||||
val i: Int? = null
|
||||
instance.<!NONE_APPLICABLE!>method<!>(i)
|
||||
|
||||
val s: String? = null
|
||||
instance.<!NONE_APPLICABLE!>method<!>(s)
|
||||
|
||||
val b: Boolean? = null
|
||||
instance.<!NONE_APPLICABLE!>method<!>(b)
|
||||
|
||||
instance.<!NONE_APPLICABLE!>method<!>(null)
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers void method(java.lang.String) 0'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public void method(String s) {
|
||||
}
|
||||
|
||||
public void method(@NotNull Integer i) {
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val instance = ClassWithExternalAnnotatedMembers()
|
||||
val i: Int? = null
|
||||
instance.method(<!TYPE_MISMATCH!>i<!>)
|
||||
|
||||
val s: String? = null
|
||||
instance.method(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>s<!>)
|
||||
|
||||
val b: Boolean? = null
|
||||
instance.<!NONE_APPLICABLE!>method<!>(b)
|
||||
|
||||
instance.method(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>null<!>)
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers void method(java.lang.String) 0'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public void method(String s) {
|
||||
}
|
||||
|
||||
public void method(@NotNull Integer i) {
|
||||
}
|
||||
|
||||
public void method(Boolean b) {
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val instance = ClassWithExternalAnnotatedMembers()
|
||||
val i: Int? = null
|
||||
instance.<!NONE_APPLICABLE!>method<!>(i)
|
||||
|
||||
val s: String? = null
|
||||
instance.<!NONE_APPLICABLE!>method<!>(s)
|
||||
|
||||
val b: Boolean? = null
|
||||
instance.method(b)
|
||||
|
||||
instance.method(null)
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers void method(java.lang.String) 0'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
// FILE: ClassWithExternalAnnotatedMembers.java
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ClassWithExternalAnnotatedMembers {
|
||||
public void method(String s) {
|
||||
}
|
||||
|
||||
public void method(@NotNull Integer i) {
|
||||
}
|
||||
|
||||
public void method(Boolean b) {
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: usage.kt
|
||||
fun test() {
|
||||
val instance = ClassWithExternalAnnotatedMembers()
|
||||
val i: Int? = null
|
||||
instance.method(<!TYPE_MISMATCH!>i<!>)
|
||||
|
||||
val s: String? = null
|
||||
instance.method(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>s<!>)
|
||||
|
||||
val b: Boolean? = null
|
||||
instance.method(b)
|
||||
|
||||
instance.<!OVERLOAD_RESOLUTION_AMBIGUITY!>method<!>(null)
|
||||
}
|
||||
|
||||
// FILE: annotations.xml
|
||||
<root>
|
||||
<item name='ClassWithExternalAnnotatedMembers void method(java.lang.String) 0'>
|
||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||
</item>
|
||||
</root>
|
||||
Reference in New Issue
Block a user