ac87ad422d
We are migrating Guava to use these annotations rather than jsr305's @Nullable. We can't use the Checker Framework's _@Nullable_ yet because we promise compatibility with Java 7, which doesn't support type annotations. This is related to but distinct from https://youtrack.jetbrains.com/issue/KT-21408, which is about a different jsr305 annotation we use, @ParametersAreNonnullByDefault. I've also updated some docs to mention Kotlin's existing support for the Checker Framework _@NonNull_.
34 lines
705 B
Kotlin
Vendored
34 lines
705 B
Kotlin
Vendored
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
|
// FILE: A.java
|
|
|
|
import org.checkerframework.checker.nullness.compatqual.*;
|
|
|
|
public class A {
|
|
@NullableDecl public String field = null;
|
|
|
|
@NullableDecl
|
|
public String foo(@NonNullDecl String x, @NullableDecl CharSequence y) {
|
|
return "";
|
|
}
|
|
|
|
@NonNullDecl
|
|
public String bar() {
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
// FILE: main.kt
|
|
|
|
fun main(a: A) {
|
|
a.foo("", null)?.length
|
|
a.foo("", null)<!UNSAFE_CALL!>.<!>length
|
|
a.foo(<!NULL_FOR_NONNULL_TYPE!>null<!>, "")<!UNSAFE_CALL!>.<!>length
|
|
|
|
a.bar().length
|
|
a.bar()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.length
|
|
|
|
a.field?.length
|
|
a.field<!UNSAFE_CALL!>.<!>length
|
|
}
|