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)
|
||||
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.
|
||||
irFunction.origin == JvmLoweredDeclarationOrigin.INLINE_CLASS_GENERATED_IMPL_METHOD ||
|
||||
// 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.JVM_STATIC_WRAPPER ||
|
||||
irFunction.origin == JvmLoweredDeclarationOrigin.MULTIFILE_BRIDGE
|
||||
if (!isInlineLambda && !isSyntheticOrBridge && !Visibilities.isPrivate(irFunction.visibility)) {
|
||||
if (!notCallableFromJava) {
|
||||
irFunction.extensionReceiverParameter?.let { generateNonNullAssertion(it) }
|
||||
irFunction.valueParameters.forEach(::generateNonNullAssertion)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user