From d00bc545fe981d624f4b3d8b3b3fbbfaf0d2345b Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Tue, 21 Oct 2014 18:06:04 +0400 Subject: [PATCH] IDEA-131658 try-catch-finally is not supported --- .../decompiler/stats/CatchAllStatement.java | 2 +- .../java/decompiler/SingleClassesTest.java | 1 + .../classes/pkg/TestTryCatchFinally.class | Bin 0 -> 890 bytes testData/results/TestTryCatchFinally.dec | 16 ++++++++++ testData/src/pkg/TestTryCatchFinally.java | 29 ++++++++++++++++++ 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 testData/classes/pkg/TestTryCatchFinally.class create mode 100644 testData/results/TestTryCatchFinally.dec create mode 100644 testData/src/pkg/TestTryCatchFinally.java 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 0000000000000000000000000000000000000000..16dc30dc15fb6b2ac725db6c2c0b506e0cbf9540 GIT binary patch literal 890 zcmaJ=TTdE67(K&n)^!y`5TV*udjl2egXJ&r?`Ti3?8P812B4^?nmZq?b>jrL^xQP{x zRgPOGIC2JV>v%`QT@Cj*@*D+**mK*p)k}tOzVMbIvh6h`Lww(M?nqGe*Z+g7bQoytx{D5w%e){_84ZWN;FOngg>AUl-C%{s@Dw~a@W=s7Hd?Y7WB4- zY8>y{u5g^*rY>e7js(ZLg$<-QiWW9eV&E4Xj{6oK;332OSbFDUL;A}0T!zdzJ8WpH zYdcLDFhqBPzzZxqLRrIO3s3Nre(+CQr7N0YNQ_Gz)lX!DHvErf?Ktp04BeO;6Zc#t zTUyQVMbMEnov2gob(CzAyO z+hizSbuO2V>cSZkoZt`lS}FX8ZzykQE<-ARnOMOJX6P2`F9f-BF4z4(f7GSWwM>Fj`pKfvFe!$?l`VQ%y>-G@bM zBhF{c9*)MvU!gN9M2gf!Y!J(YaTMsO=