[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
@@ -40,10 +40,10 @@ fun main(
b: AnnotatedBoundsOfWildcard b: AnnotatedBoundsOfWildcard
): Unit { ): Unit {
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superAsIs(aAnyNotNullNotNullNotNull) b.superAsIs(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superAsIs(aAnyNotNullNotNullNull) b.superAsIs(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNull<!>)
b.superAsIs(aAnyNotNullNullNotNull) b.superAsIs(aAnyNotNullNullNotNull)
b.superAsIs(aAnyNotNullNullNull) b.superAsIs(aAnyNotNullNullNull)
@@ -52,14 +52,14 @@ fun main(
b.superNotNull(aAnyNotNullNullNotNull) b.superNotNull(aAnyNotNullNullNotNull)
b.superNotNull(aAnyNotNullNullNull) b.superNotNull(aAnyNotNullNullNull)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superNullable(aAnyNotNullNotNullNotNull) b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superNullable(aAnyNotNullNotNullNull) b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superNullable(aAnyNotNullNullNotNull) b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superNullable(aAnyNotNullNullNull) b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNullNull<!>)
b.extendsAsIs(aNotNullNotNullNotNull) b.extendsAsIs(aNotNullNotNullNotNull)
b.extendsAsIs(aNotNullNotNullNull) b.extendsAsIs(aNotNullNotNullNull)
@@ -67,12 +67,12 @@ fun main(
b.extendsAsIs(aNotNullNullNull) b.extendsAsIs(aNotNullNullNull)
b.extendsNotNull(aNotNullNotNullNotNull) b.extendsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.extendsNotNull(aNotNullNotNullNull) b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.extendsNotNull(aNotNullNullNotNull) b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.extendsNotNull(aNotNullNullNull) b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
b.extendsNullable(aNotNullNotNullNotNull) b.extendsNullable(aNotNullNotNullNotNull)
b.extendsNullable(aNotNullNotNullNull) b.extendsNullable(aNotNullNotNullNull)
@@ -40,10 +40,10 @@ fun main(
b: AnnotatedBoundsOfWildcard b: AnnotatedBoundsOfWildcard
): Unit { ): Unit {
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superAsIs(aAnyNotNullNotNullNotNull) b.superAsIs(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superAsIs(aAnyNotNullNotNullNull) b.superAsIs(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNull<!>)
b.superAsIs(aAnyNotNullNullNotNull) b.superAsIs(aAnyNotNullNullNotNull)
b.superAsIs(aAnyNotNullNullNull) b.superAsIs(aAnyNotNullNullNull)
@@ -52,14 +52,14 @@ fun main(
b.superNotNull(aAnyNotNullNullNotNull) b.superNotNull(aAnyNotNullNullNotNull)
b.superNotNull(aAnyNotNullNullNull) b.superNotNull(aAnyNotNullNullNull)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superNullable(aAnyNotNullNotNullNotNull) b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superNullable(aAnyNotNullNotNullNull) b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNotNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superNullable(aAnyNotNullNullNotNull) b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.superNullable(aAnyNotNullNullNull) b.superNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aAnyNotNullNullNull<!>)
b.extendsAsIs(aNotNullNotNullNotNull) b.extendsAsIs(aNotNullNotNullNotNull)
b.extendsAsIs(aNotNullNotNullNull) b.extendsAsIs(aNotNullNotNullNull)
@@ -67,12 +67,12 @@ fun main(
b.extendsAsIs(aNotNullNullNull) b.extendsAsIs(aNotNullNullNull)
b.extendsNotNull(aNotNullNotNullNotNull) b.extendsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.extendsNotNull(aNotNullNotNullNull) b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.extendsNotNull(aNotNullNullNotNull) b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.extendsNotNull(aNotNullNullNull) b.extendsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
b.extendsNullable(aNotNullNotNullNotNull) b.extendsNullable(aNotNullNotNullNotNull)
b.extendsNullable(aNotNullNotNullNull) b.extendsNullable(aNotNullNotNullNull)
@@ -31,12 +31,12 @@ fun main(
a: A, b: B a: A, b: B
): Unit { ): Unit {
a.bar(aNotNullNotNullNotNull) a.bar(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
a.bar(aNotNullNotNullNull) a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
a.bar(aNotNullNullNotNull) a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
a.bar(aNotNullNullNull) a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch{mute}
b.bar(aNotNullNotNullNotNull) b.bar(aNotNullNotNullNotNull)
@@ -31,12 +31,12 @@ fun main(
a: A, b: B a: A, b: B
): Unit { ): Unit {
a.bar(aNotNullNotNullNotNull) a.bar(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
a.bar(aNotNullNotNullNull) a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
a.bar(aNotNullNullNotNull) a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
a.bar(aNotNullNullNull) a.bar(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch{mute}
b.bar(aNotNullNotNullNotNull) b.bar(aNotNullNotNullNotNull)
@@ -21,12 +21,12 @@ fun main(
b: WildcardsWithDefault b: WildcardsWithDefault
): Unit { ): Unit {
b.noBoundsNotNull(aNotNullNotNullNotNull) b.noBoundsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.noBoundsNotNull(aNotNullNotNullNull) b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.noBoundsNotNull(aNotNullNullNotNull) b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.noBoundsNotNull(aNotNullNullNull) b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
b.noBoundsNullable(aNotNullNotNullNotNull) b.noBoundsNullable(aNotNullNotNullNotNull)
b.noBoundsNullable(aNotNullNotNullNull) b.noBoundsNullable(aNotNullNotNullNull)
@@ -21,12 +21,12 @@ fun main(
b: WildcardsWithDefault b: WildcardsWithDefault
): Unit { ): Unit {
b.noBoundsNotNull(aNotNullNotNullNotNull) b.noBoundsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.noBoundsNotNull(aNotNullNotNullNull) b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.noBoundsNotNull(aNotNullNullNotNull) b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch{mute} // jspecify_nullness_mismatch
b.noBoundsNotNull(aNotNullNullNull) b.noBoundsNotNull(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>aNotNullNullNull<!>)
b.noBoundsNullable(aNotNullNotNullNotNull) b.noBoundsNullable(aNotNullNotNullNotNull)
b.noBoundsNullable(aNotNullNotNullNull) b.noBoundsNullable(aNotNullNotNullNull)
@@ -118,6 +118,7 @@ private fun KotlinType.wereTypeArgumentsChanged(newArguments: List<TypeProjectio
} }
private fun KotlinType.getEnhancementDeeplyInternal(): KotlinType { private fun KotlinType.getEnhancementDeeplyInternal(): KotlinType {
val arguments = if (this is TypeWithEnhancement) enhancement.arguments else arguments
val newArguments = arguments.enhanceTypeArguments() val newArguments = arguments.enhanceTypeArguments()
val newArgumentsForUpperBound = if (this is FlexibleType) upperBound.arguments.enhanceTypeArguments() else newArguments val newArgumentsForUpperBound = if (this is FlexibleType) upperBound.arguments.enhanceTypeArguments() else newArguments
val enhancedType = if (this is TypeWithEnhancement) enhancement else this val enhancedType = if (this is TypeWithEnhancement) enhancement else this