JVM: do not generate assertion message for captured fields

#KT-64615 Fixed
This commit is contained in:
Alexander Udalov
2024-01-09 12:13:03 +01:00
committed by Space Team
parent f01e633f8b
commit dd5fffebf2
12 changed files with 86 additions and 1 deletions
@@ -31442,6 +31442,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -31442,6 +31442,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -31051,6 +31051,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -31051,6 +31051,12 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -31051,6 +31051,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -766,7 +766,10 @@ private class TypeOperatorLowering(private val backendContext: JvmBackendContext
if (backendContext.config.noSourceCodeInNotNullAssertionExceptions) {
return when (val argument = typeOperatorCall.argument) {
is IrCall -> "${argument.symbol.owner.name.asString()}(...)"
is IrGetField -> argument.symbol.owner.name.asString()
is IrGetField -> {
val field = argument.symbol.owner
field.name.asString().takeUnless { field.origin.isSynthetic }
}
else -> null
}
}
@@ -0,0 +1,23 @@
// !LANGUAGE: +NoSourceCodeInNotNullAssertionExceptions
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// FILE: test.kt
fun f(x: String) = "Fail 1"
fun box(): String {
return try {
val variable = J().s()
val block = { f(variable) }
block()
} catch (e: NullPointerException) {
if (e.message == null)
"OK"
else
"Fail: ${e.message}"
}
}
// FILE: J.java
public class J {
public final String s() { return null; }
}
@@ -31051,6 +31051,12 @@ public class JvmAbiConsistencyTestBoxGenerated extends AbstractJvmAbiConsistency
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -29329,6 +29329,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -31051,6 +31051,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -31051,6 +31051,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@Test
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@Test
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
@@ -26302,6 +26302,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/backingField.kt");
}
@TestMetadata("capturedVariable.kt")
public void testCapturedVariable() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/capturedVariable.kt");
}
@TestMetadata("field_after.kt")
public void testField_after() throws Exception {
runTest("compiler/testData/codegen/box/javaInterop/notNullAssertions/expressionAssertionMessages/field_after.kt");