JVM_IR: omit nullability assertions in anonymous object constructors

This commit is contained in:
pyos
2019-08-28 12:22:47 +02:00
committed by max-kammerer
parent 37fed8bbc9
commit 58775275e7
@@ -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)
}