From 0b2b8ba816727c2729a53c26029c71c45dcb7a94 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 17 Jul 2014 18:42:51 +0400 Subject: [PATCH] Fixed KT-5493: NPE fix --- .../boxing/RedundantNullCheckMethodTransformer.java | 2 +- .../codegen/boxWithStdlib/boxingOptimization/kt5493.kt | 8 ++++++++ .../generated/BlackBoxWithStdlibCodegenTestGenerated.java | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/boxWithStdlib/boxingOptimization/kt5493.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantNullCheckMethodTransformer.java b/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantNullCheckMethodTransformer.java index 99901b96059..aa7b2d78577 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantNullCheckMethodTransformer.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantNullCheckMethodTransformer.java @@ -56,7 +56,7 @@ public class RedundantNullCheckMethodTransformer extends MethodTransformer { AbstractInsnNode insn = insnList.get(i); if ((insn.getOpcode() == Opcodes.IFNULL || insn.getOpcode() == Opcodes.IFNONNULL) && - frame.getStack(frame.getStackSize() - 1) instanceof BoxedBasicValue) { + frame != null && frame.getStack(frame.getStackSize() - 1) instanceof BoxedBasicValue) { insnsToOptimize.add(insn); } diff --git a/compiler/testData/codegen/boxWithStdlib/boxingOptimization/kt5493.kt b/compiler/testData/codegen/boxWithStdlib/boxingOptimization/kt5493.kt new file mode 100644 index 00000000000..52925e7f036 --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/boxingOptimization/kt5493.kt @@ -0,0 +1,8 @@ +fun box() : String { + try { + return "OK" + } + finally { + null?.hashCode() + } +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java index 405a486a423..79e3a9a8e6b 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java @@ -119,6 +119,11 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/boxingOptimization/fold.kt"); } + @TestMetadata("kt5493.kt") + public void testKt5493() throws Exception { + doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/boxingOptimization/kt5493.kt"); + } + @TestMetadata("nullCheck.kt") public void testNullCheck() throws Exception { doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/boxingOptimization/nullCheck.kt");