Propagate nullability changes to enhancement for JSR-305 types
Fix TypeUtils.makeNullableAsSpecified for SimpleTypeWithEnhancement and FlexibleTypeWithEnhancement: change nullability of enhancement too. This fixes several false-positive warnings, like in KT-20855 and KT-20466. Note that it removes warning in some cases (see testdata change for uselessElvisRightIsNull.kt). However, this removes warning about *unnecessary* elvis, i.e. this fixed introduces weak false-negatives, which is acceptable for the moment. #KT-20855 Fixed Target versions 1.2.30 #KT-20466 Fixed Target versions 1.2.30 #KT-21238 Fixed Target versions 1.2.30
This commit is contained in:
@@ -38,7 +38,7 @@ class SimpleTypeWithEnhancement(
|
||||
= origin.replaceAnnotations(newAnnotations).wrapEnhancement(enhancement) as SimpleType
|
||||
|
||||
override fun makeNullableAsSpecified(newNullability: Boolean): SimpleType
|
||||
= origin.makeNullableAsSpecified(newNullability).wrapEnhancement(enhancement) as SimpleType
|
||||
= origin.makeNullableAsSpecified(newNullability).wrapEnhancement(enhancement.unwrap().makeNullableAsSpecified(newNullability)) as SimpleType
|
||||
}
|
||||
|
||||
class FlexibleTypeWithEnhancement(
|
||||
@@ -51,7 +51,7 @@ class FlexibleTypeWithEnhancement(
|
||||
= origin.replaceAnnotations(newAnnotations).wrapEnhancement(enhancement)
|
||||
|
||||
override fun makeNullableAsSpecified(newNullability: Boolean): UnwrappedType
|
||||
= origin.makeNullableAsSpecified(newNullability).wrapEnhancement(enhancement)
|
||||
= origin.makeNullableAsSpecified(newNullability).wrapEnhancement(enhancement.unwrap().makeNullableAsSpecified(newNullability))
|
||||
|
||||
override fun render(renderer: DescriptorRenderer, options: DescriptorRendererOptions): String
|
||||
= origin.render(renderer, options)
|
||||
|
||||
Reference in New Issue
Block a user