From d0f042ba93feda858d3a41a903270bb5ea7022e6 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Thu, 15 Aug 2013 17:22:20 +0400 Subject: [PATCH] Properly generate exception table for try/catch block KT-3549 'Finally' block not run when re-throwing exception KT-3867 When catched exception occurs in finnaly block it invokes additional catch and itself #KT-3549 Fixed #KT-3867 Fixed --- .../jet/codegen/ExpressionCodegen.java | 154 +++++++++++------- .../testData/codegen/box/finally/kt3549.kt | 41 +++++ .../testData/codegen/box/finally/kt3867.kt | 46 ++++++ .../codegen/box/finally/notChainCatch.kt | 93 +++++++++++ .../codegen/box/finally/tryFinally.kt | 40 +++++ .../BlackBoxCodegenTestGenerated.java | 31 +++- 6 files changed, 345 insertions(+), 60 deletions(-) create mode 100644 compiler/testData/codegen/box/finally/kt3549.kt create mode 100644 compiler/testData/codegen/box/finally/kt3867.kt create mode 100644 compiler/testData/codegen/box/finally/notChainCatch.kt create mode 100644 compiler/testData/codegen/box/finally/tryFinally.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index bbd707dacdf..f7c0fc961c8 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -145,13 +145,18 @@ public class ExpressionCodegen extends JetVisitor implem } static class FinallyBlockStackElement extends BlockStackElement { + List