Add basic support for default codeanalysis annotations

This commit is contained in:
Denis Zharkov
2019-08-06 17:59:42 +03:00
committed by Victor Petukhov
parent 517cc84f4d
commit 82d39dd86a
7 changed files with 153 additions and 1 deletions
@@ -0,0 +1,45 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
// FILE: A.java
import jspecify.annotations.*;
@DefaultNotNull
public class A {
public String defaultField = "";
@Nullable public String field = null;
public String everythingNotNullable(String x) { return ""; }
@DefaultNullable
public String everythingNullable(String x) { return ""; }
@DefaultNullnessUnknown
public String everythingUnknown(String x) { return ""; }
@DefaultNullable
public String mixed(@NotNull String x) { return ""; }
}
// FILE: main.kt
fun main(a: A) {
a.everythingNotNullable(<!NULL_FOR_NONNULL_TYPE!>null<!>)<!UNNECESSARY_SAFE_CALL!>?.<!>length
a.everythingNotNullable(<!NULL_FOR_NONNULL_TYPE!>null<!>).length
a.everythingNotNullable("").length
a.everythingNullable(null)<!UNSAFE_CALL!>.<!>length
a.everythingNullable(null)?.length
a.everythingUnknown(null).length
a.everythingUnknown(null)?.length
a.mixed(<!NULL_FOR_NONNULL_TYPE!>null<!>)<!UNSAFE_CALL!>.<!>length
a.mixed(<!NULL_FOR_NONNULL_TYPE!>null<!>)?.length
a.mixed("")?.length
a.defaultField<!UNNECESSARY_SAFE_CALL!>?.<!>length
a.defaultField.length
a.field?.length
a.field<!UNSAFE_CALL!>.<!>length
}
@@ -0,0 +1,16 @@
package
public fun main(/*0*/ a: A): kotlin.Unit
@jspecify.annotations.DefaultNotNull public open class A {
public constructor A()
public final var defaultField: kotlin.String
@jspecify.annotations.Nullable public final var field: kotlin.String?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun everythingNotNullable(/*0*/ x: kotlin.String): kotlin.String
@jspecify.annotations.DefaultNullable public open fun everythingNullable(/*0*/ x: kotlin.String?): kotlin.String?
@jspecify.annotations.DefaultNullnessUnknown public open fun everythingUnknown(/*0*/ x: kotlin.String!): kotlin.String!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@jspecify.annotations.DefaultNullable public open fun mixed(/*0*/ @jspecify.annotations.NotNull x: kotlin.String): kotlin.String?
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}