JVM_IR: omit nullability assertions in anonymous object constructors
This commit is contained in:
+7
-2
@@ -196,7 +196,12 @@ class ExpressionCodegen(
|
|||||||
if (state.isParamAssertionsDisabled)
|
if (state.isParamAssertionsDisabled)
|
||||||
return
|
return
|
||||||
|
|
||||||
val isSyntheticOrBridge = irFunction.origin.isSynthetic ||
|
val notCallableFromJava = isInlineLambda ||
|
||||||
|
Visibilities.isPrivate(irFunction.visibility) ||
|
||||||
|
irFunction.origin.isSynthetic ||
|
||||||
|
// TODO: refine this condition to not generate nullability assertions on parameters
|
||||||
|
// corresponding to captured variables and anonymous object super constructor arguments
|
||||||
|
(irFunction is IrConstructor && irFunction.parentAsClass.isAnonymousObject) ||
|
||||||
// TODO: Implement this as a lowering, so that we can more easily exclude generated methods.
|
// TODO: Implement this as a lowering, so that we can more easily exclude generated methods.
|
||||||
irFunction.origin == JvmLoweredDeclarationOrigin.INLINE_CLASS_GENERATED_IMPL_METHOD ||
|
irFunction.origin == JvmLoweredDeclarationOrigin.INLINE_CLASS_GENERATED_IMPL_METHOD ||
|
||||||
// Although these are accessible from Java, the functions they bridge to already have the assertions.
|
// Although these are accessible from Java, the functions they bridge to already have the assertions.
|
||||||
@@ -204,7 +209,7 @@ class ExpressionCodegen(
|
|||||||
irFunction.origin == JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE ||
|
irFunction.origin == JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE ||
|
||||||
irFunction.origin == JvmLoweredDeclarationOrigin.JVM_STATIC_WRAPPER ||
|
irFunction.origin == JvmLoweredDeclarationOrigin.JVM_STATIC_WRAPPER ||
|
||||||
irFunction.origin == JvmLoweredDeclarationOrigin.MULTIFILE_BRIDGE
|
irFunction.origin == JvmLoweredDeclarationOrigin.MULTIFILE_BRIDGE
|
||||||
if (!isInlineLambda && !isSyntheticOrBridge && !Visibilities.isPrivate(irFunction.visibility)) {
|
if (!notCallableFromJava) {
|
||||||
irFunction.extensionReceiverParameter?.let { generateNonNullAssertion(it) }
|
irFunction.extensionReceiverParameter?.let { generateNonNullAssertion(it) }
|
||||||
irFunction.valueParameters.forEach(::generateNonNullAssertion)
|
irFunction.valueParameters.forEach(::generateNonNullAssertion)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user