diff --git a/compiler/testData/foreignAnnotations/tests/findBugsSimple.txt b/compiler/testData/foreignAnnotations/tests/findBugsSimple.txt index d08da15a469..b5ada9fb616 100644 --- a/compiler/testData/foreignAnnotations/tests/findBugsSimple.txt +++ b/compiler/testData/foreignAnnotations/tests/findBugsSimple.txt @@ -7,7 +7,7 @@ public open class A { @edu.umd.cs.findbugs.annotations.Nullable public final var field: kotlin.String? @edu.umd.cs.findbugs.annotations.NonNull public open fun bar(): kotlin.String public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - @edu.umd.cs.findbugs.annotations.PossiblyNull public open fun foo(/*0*/ @edu.umd.cs.findbugs.annotations.NonNull x: kotlin.String, /*1*/ @edu.umd.cs.findbugs.annotations.UnknownNullness y: kotlin.CharSequence?): kotlin.String? + @edu.umd.cs.findbugs.annotations.PossiblyNull public open fun foo(/*0*/ @edu.umd.cs.findbugs.annotations.NonNull x: kotlin.String, /*1*/ @edu.umd.cs.findbugs.annotations.UnknownNullness y: kotlin.CharSequence!): kotlin.String? public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/foreignAnnotations/tests/jsr305Strange.kt b/compiler/testData/foreignAnnotations/tests/jsr305Strange.kt index 6c54c2ab355..57654f9cb8c 100644 --- a/compiler/testData/foreignAnnotations/tests/jsr305Strange.kt +++ b/compiler/testData/foreignAnnotations/tests/jsr305Strange.kt @@ -30,5 +30,5 @@ fun main(a: A) { a.bar()!!.length a.field?.length - a.field.length + a.field.length } diff --git a/compiler/testData/foreignAnnotations/tests/jsr305Strange.txt b/compiler/testData/foreignAnnotations/tests/jsr305Strange.txt index 02da742751d..25bdaa38663 100644 --- a/compiler/testData/foreignAnnotations/tests/jsr305Strange.txt +++ b/compiler/testData/foreignAnnotations/tests/jsr305Strange.txt @@ -4,10 +4,10 @@ public fun main(/*0*/ a: A): kotlin.Unit public open class A { public constructor A() - @javax.annotation.Nonnull(when = When.UNKNOWN) public final var field: kotlin.String? + @javax.annotation.Nonnull(when = When.UNKNOWN) public final var field: kotlin.String! @javax.annotation.Nonnull public open fun bar(): kotlin.String public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - @javax.annotation.Nonnull(when = When.MAYBE) public open fun foo(/*0*/ @javax.annotation.Nonnull(when = When.ALWAYS) x: kotlin.String, /*1*/ @javax.annotation.Nonnull(when = When.NEVER) y: kotlin.CharSequence?): kotlin.String? + @javax.annotation.Nonnull(when = When.MAYBE) public open fun foo(/*0*/ @javax.annotation.Nonnull(when = When.ALWAYS) x: kotlin.String, /*1*/ @javax.annotation.Nonnull(when = When.NEVER) y: kotlin.CharSequence!): kotlin.String? public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt index 19b404ca825..260f735c39c 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/typeEnhancement/signatureEnhancement.kt @@ -59,11 +59,18 @@ class SignatureEnhancement(private val annotationTypeQualifierResolver: Annotati ?.takeIf { it.annotationClass?.fqNameSafe == JAVAX_NONNULL_ANNOTATION } ?: return null - return typeQualifier.allValueArguments.values.singleOrNull()?.value?.let { - enumEntryDescriptor -> - if (enumEntryDescriptor !is ClassDescriptor) return@let null - if (enumEntryDescriptor.name.asString() == "ALWAYS") NullabilityQualifier.NOT_NULL else NullabilityQualifier.NULLABLE - } ?: NullabilityQualifier.NOT_NULL + val enumEntryDescriptor = + typeQualifier.allValueArguments.values.singleOrNull()?.value + // if no argument is specified, use default value: NOT_NULL + ?: return NullabilityQualifier.NOT_NULL + + if (enumEntryDescriptor !is ClassDescriptor) return null + + return when (enumEntryDescriptor.name.asString()) { + "ALWAYS" -> NullabilityQualifier.NOT_NULL + "MAYBE" -> NullabilityQualifier.NULLABLE + else -> null + } }