diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/stats/CatchAllStatement.java b/src/org/jetbrains/java/decompiler/modules/decompiler/stats/CatchAllStatement.java index 2e4ab82..f2321ac 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/stats/CatchAllStatement.java +++ b/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/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/test/org/jetbrains/java/decompiler/SingleClassesTest.java index f0de32d..20d4fa8 100644 --- a/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/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/testData/classes/pkg/TestTryCatchFinally.class b/testData/classes/pkg/TestTryCatchFinally.class new file mode 100644 index 0000000..16dc30d Binary files /dev/null and b/testData/classes/pkg/TestTryCatchFinally.class differ diff --git a/testData/results/TestTryCatchFinally.dec b/testData/results/TestTryCatchFinally.dec new file mode 100644 index 0000000..1524da8 --- /dev/null +++ b/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/testData/src/pkg/TestTryCatchFinally.java b/testData/src/pkg/TestTryCatchFinally.java new file mode 100644 index 0000000..2e244be --- /dev/null +++ b/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