[Jspecify] Use arguments of enhancement of type instead of arguments of base type during getting enhancement of type deeply

This commit is contained in:
Victor Petukhov
2021-05-12 19:28:21 +03:00
parent 21dada4d2d
commit 0c4cba549d
7 changed files with 61 additions and 60 deletions

View File

@@ -40,10 +40,10 @@ fun main(
b: AnnotatedBoundsOfWildcard
): Unit {
// jspecify_nullness_mismatch{mute}
b.superAsIs(aAnyNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
b.superAsIs(aAnyNotNullNotNullNull)
// jspecify_nullness_mismatch
b.superAsIs(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch
b.superAsIs(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNull<!>)
b.superAsIs(aAnyNotNullNullNotNull)
b.superAsIs(aAnyNotNullNullNull)
@@ -52,14 +52,14 @@ fun main(
b.superNotNull(aAnyNotNullNullNotNull)
b.superNotNull(aAnyNotNullNullNull)
// jspecify_nullness_mismatch{mute}
b.superNullable(aAnyNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
b.superNullable(aAnyNotNullNotNullNull)
// jspecify_nullness_mismatch{mute}
b.superNullable(aAnyNotNullNullNotNull)
// jspecify_nullness_mismatch{mute}
b.superNullable(aAnyNotNullNullNull)
// jspecify_nullness_mismatch
b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNullNull<!>)
b.extendsAsIs(aNotNullNotNullNotNull)
b.extendsAsIs(aNotNullNotNullNull)
@@ -67,12 +67,12 @@ fun main(
b.extendsAsIs(aNotNullNullNull)
b.extendsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
b.extendsNotNull(aNotNullNotNullNull)
// jspecify_nullness_mismatch{mute}
b.extendsNotNull(aNotNullNullNotNull)
// jspecify_nullness_mismatch{mute}
b.extendsNotNull(aNotNullNullNull)
// jspecify_nullness_mismatch
b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
b.extendsNullable(aNotNullNotNullNotNull)
b.extendsNullable(aNotNullNotNullNull)

View File

@@ -40,10 +40,10 @@ fun main(
b: AnnotatedBoundsOfWildcard
): Unit {
// jspecify_nullness_mismatch{mute}
b.superAsIs(aAnyNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
b.superAsIs(aAnyNotNullNotNullNull)
// jspecify_nullness_mismatch
b.superAsIs(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch
b.superAsIs(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNull<!>)
b.superAsIs(aAnyNotNullNullNotNull)
b.superAsIs(aAnyNotNullNullNull)
@@ -52,14 +52,14 @@ fun main(
b.superNotNull(aAnyNotNullNullNotNull)
b.superNotNull(aAnyNotNullNullNull)
// jspecify_nullness_mismatch{mute}
b.superNullable(aAnyNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
b.superNullable(aAnyNotNullNotNullNull)
// jspecify_nullness_mismatch{mute}
b.superNullable(aAnyNotNullNullNotNull)
// jspecify_nullness_mismatch{mute}
b.superNullable(aAnyNotNullNullNull)
// jspecify_nullness_mismatch
b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNullNull<!>)
b.extendsAsIs(aNotNullNotNullNotNull)
b.extendsAsIs(aNotNullNotNullNull)
@@ -67,12 +67,12 @@ fun main(
b.extendsAsIs(aNotNullNullNull)
b.extendsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
b.extendsNotNull(aNotNullNotNullNull)
// jspecify_nullness_mismatch{mute}
b.extendsNotNull(aNotNullNullNotNull)
// jspecify_nullness_mismatch{mute}
b.extendsNotNull(aNotNullNullNull)
// jspecify_nullness_mismatch
b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
b.extendsNullable(aNotNullNotNullNotNull)
b.extendsNullable(aNotNullNotNullNull)

View File

@@ -31,12 +31,12 @@ fun main(
a: A, b: B
): Unit {
a.bar(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
a.bar(aNotNullNotNullNull)
// jspecify_nullness_mismatch{mute}
a.bar(aNotNullNullNotNull)
// jspecify_nullness_mismatch{mute}
a.bar(aNotNullNullNull)
// jspecify_nullness_mismatch
a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
// jspecify_nullness_mismatch{mute}
b.bar(aNotNullNotNullNotNull)

View File

@@ -31,12 +31,12 @@ fun main(
a: A, b: B
): Unit {
a.bar(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
a.bar(aNotNullNotNullNull)
// jspecify_nullness_mismatch{mute}
a.bar(aNotNullNullNotNull)
// jspecify_nullness_mismatch{mute}
a.bar(aNotNullNullNull)
// jspecify_nullness_mismatch
a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
// jspecify_nullness_mismatch{mute}
b.bar(aNotNullNotNullNotNull)

View File

@@ -21,12 +21,12 @@ fun main(
b: WildcardsWithDefault
): Unit {
b.noBoundsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
b.noBoundsNotNull(aNotNullNotNullNull)
// jspecify_nullness_mismatch{mute}
b.noBoundsNotNull(aNotNullNullNotNull)
// jspecify_nullness_mismatch{mute}
b.noBoundsNotNull(aNotNullNullNull)
// jspecify_nullness_mismatch
b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
b.noBoundsNullable(aNotNullNotNullNotNull)
b.noBoundsNullable(aNotNullNotNullNull)

View File

@@ -21,12 +21,12 @@ fun main(
b: WildcardsWithDefault
): Unit {
b.noBoundsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute}
b.noBoundsNotNull(aNotNullNotNullNull)
// jspecify_nullness_mismatch{mute}
b.noBoundsNotNull(aNotNullNullNotNull)
// jspecify_nullness_mismatch{mute}
b.noBoundsNotNull(aNotNullNullNull)
// jspecify_nullness_mismatch
b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
b.noBoundsNullable(aNotNullNotNullNotNull)
b.noBoundsNullable(aNotNullNotNullNull)

View File

@@ -118,6 +118,7 @@ private fun KotlinType.wereTypeArgumentsChanged(newArguments: List<TypeProjectio
}
private fun KotlinType.getEnhancementDeeplyInternal(): KotlinType {
val arguments = if (this is TypeWithEnhancement) enhancement.arguments else arguments
val newArguments = arguments.enhanceTypeArguments()
val newArgumentsForUpperBound = if (this is FlexibleType) upperBound.arguments.enhanceTypeArguments() else newArguments
val enhancedType = if (this is TypeWithEnhancement) enhancement else this