diff --git a/plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/modules/decompiler/stats/CatchAllStatement.java b/plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/modules/decompiler/stats/CatchAllStatement.java index 2e4ab8256bd9..f2321ac47bfb 100644 --- a/plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/modules/decompiler/stats/CatchAllStatement.java +++ b/plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/modules/decompiler/stats/CatchAllStatement.java @@ -132,7 +132,7 @@ public class CatchAllStatement extends Statement { if (first.type == TYPE_TRYCATCH && first.varDefinitions.isEmpty() && isFinally && !labeled && !first.isLabeled() && (lstSuccs.isEmpty() || !lstSuccs.get(0).explicit)) { TextBuffer content = ExprProcessor.jmpWrapper(first, indent, true, tracer); - content.setStart(content.length() - new_line_separator.length()); + content.setLength(content.length() - new_line_separator.length()); buf.append(content); } else { diff --git a/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java index f0de32df2361..20d4fa88a329 100644 --- a/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java @@ -36,4 +36,5 @@ public class SingleClassesTest extends SingleClassesTestBase { @Test public void testInvalidMethodSignature() { doTest("InvalidMethodSignature"); } @Test public void testInnerClassConstructor() { doTest("pkg/TestInnerClassConstructor"); } @Test public void testInnerClassConstructor11() { doTest("v11/TestInnerClassConstructor"); } + @Test public void testTryCatchFinally() { doTest("pkg/TestTryCatchFinally"); } } diff --git a/plugins/java-decompiler/engine/testData/classes/pkg/TestTryCatchFinally.class b/plugins/java-decompiler/engine/testData/classes/pkg/TestTryCatchFinally.class new file mode 100644 index 000000000000..16dc30dc15fb Binary files /dev/null and b/plugins/java-decompiler/engine/testData/classes/pkg/TestTryCatchFinally.class differ diff --git a/plugins/java-decompiler/engine/testData/results/TestTryCatchFinally.dec b/plugins/java-decompiler/engine/testData/results/TestTryCatchFinally.dec new file mode 100644 index 000000000000..1524da840379 --- /dev/null +++ b/plugins/java-decompiler/engine/testData/results/TestTryCatchFinally.dec @@ -0,0 +1,16 @@ +package pkg; + +public class TestTryCatchFinally { + public int test(String var1) { + try { + int var2 = Integer.parseInt(var1); + return var2; + } catch (Exception var6) { + System.out.println("Error" + var6); + } finally { + System.out.println("Finally"); + } + + return -1; + } +} diff --git a/plugins/java-decompiler/engine/testData/src/pkg/TestTryCatchFinally.java b/plugins/java-decompiler/engine/testData/src/pkg/TestTryCatchFinally.java new file mode 100644 index 000000000000..2e244be22e8a --- /dev/null +++ b/plugins/java-decompiler/engine/testData/src/pkg/TestTryCatchFinally.java @@ -0,0 +1,29 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package pkg; + +public class TestTryCatchFinally { + public int test(String a) { + try { + return Integer.parseInt(a); + } catch (Exception e) { + System.out.println("Error" + e); + } finally { + System.out.println("Finally"); + } + return -1; + } +} \ No newline at end of file