From f5160a4fc72ee4444d75f4001624a01d655b7493 Mon Sep 17 00:00:00 2001 From: sschr15 Date: Wed, 18 Jun 2025 21:26:06 -0500 Subject: [PATCH 1/4] Clean up field writing to reduce redundancies --- .../java/decompiler/main/ClassWriter.java | 87 +++++++----------- testData/results/pkg/TestEnumStaticField.dec | 1 + testData/results/pkg/TestEnumStaticField2.dec | 1 + .../results/pkg/TestJava11StringConcat.dec | 6 +- .../pkg/TestSwitchPatternMatching13.dec | 92 +++++++++---------- .../pkg/TestSwitchPatternMatching14.dec | 30 +++--- .../pkg/TestSwitchPatternMatching15.dec | 42 ++++----- .../pkg/TestSwitchPatternMatching16.dec | 80 ++++++++-------- .../TestSwitchPatternMatchingInstanceof4.dec | 29 +++--- 9 files changed, 173 insertions(+), 195 deletions(-) diff --git a/src/org/jetbrains/java/decompiler/main/ClassWriter.java b/src/org/jetbrains/java/decompiler/main/ClassWriter.java index 0b7c4802b4..3498036519 100644 --- a/src/org/jetbrains/java/decompiler/main/ClassWriter.java +++ b/src/org/jetbrains/java/decompiler/main/ClassWriter.java @@ -391,38 +391,39 @@ public void writeClass(ClassNode node, TextBuffer buffer, int indent) { hasContent.set(true); }; - boolean enumFields = false; - + // fields List components = cl.getRecordComponents(); - // FIXME: fields don't have line mappings - // fields + List enumFields = new ArrayList<>(); + List nonEnumFields = new ArrayList<>(); - // Find the last field marked as an enum - int maxEnumIdx = 0; - for (int i = 0; i < cl.getFields().size(); i++) { - StructField fd = cl.getFields().get(i); + for (StructField fd : cl.getFields()) { boolean isEnum = fd.hasModifier(CodeConstants.ACC_ENUM) && DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_ENUM); if (isEnum) { - maxEnumIdx = i; + enumFields.add(fd); + } else { + nonEnumFields.add(fd); } } - List deferredEnumFields = new ArrayList<>(); - - // Find any regular fields mixed in with the enum fields - // This is invalid but allowed in bytecode. - for (int i = 0; i < cl.getFields().size(); i++) { - StructField fd = cl.getFields().get(i); - boolean isEnum = fd.hasModifier(CodeConstants.ACC_ENUM) && DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_ENUM); - if (i < maxEnumIdx && !isEnum) { - deferredEnumFields.add(fd); + boolean enums = false; + for (StructField fd : enumFields) { + if (enums) { + buffer.append(',').appendLineSeparator(); } + enums = true; + + haveContent.run(); + writeField(buffer, indent, fd, wrapper); } - for (StructField fd : cl.getFields()) { + if (enums) { + buffer.append(';').appendLineSeparator(); + } + + for (StructField fd : nonEnumFields) { boolean hide = fd.isSynthetic() && DecompilerContext.getOption(IFernflowerPreferences.REMOVE_SYNTHETIC) || - wrapper.getHiddenMembers().contains(InterpreterUtil.makeUniqueKey(fd.getName(), fd.getDescriptor())) || deferredEnumFields.contains(fd); + wrapper.getHiddenMembers().contains(InterpreterUtil.makeUniqueKey(fd.getName(), fd.getDescriptor())); if (hide) continue; if (components != null && fd.getAccessFlags() == (CodeConstants.ACC_FINAL | CodeConstants.ACC_PRIVATE) && @@ -431,45 +432,14 @@ public void writeClass(ClassNode node, TextBuffer buffer, int indent) { continue; } - boolean isEnum = fd.hasModifier(CodeConstants.ACC_ENUM) && DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_ENUM); - if (isEnum) { - if (enumFields) { - buffer.append(',').appendLineSeparator(); - } - enumFields = true; - } - else if (enumFields) { - buffer.append(';'); + if (enums) { + // Add an extra line break between enums and non-enum fields buffer.appendLineSeparator(); - buffer.appendLineSeparator(); - enumFields = false; - - // If the fields after are non enum, readd the fields found scattered throughout the enum - for (StructField fd2 : deferredEnumFields) { - TextBuffer fieldBuffer = new TextBuffer(); - writeField(wrapper, cl, fd2, fieldBuffer, indent + 1); - fieldBuffer.clearUnassignedBytecodeMappingData(); - buffer.append(fieldBuffer); - } + enums = false; } - TextBuffer fieldBuffer = new TextBuffer(); - writeField(wrapper, cl, fd, fieldBuffer, indent + 1); - fieldBuffer.clearUnassignedBytecodeMappingData(); haveContent.run(); - buffer.append(fieldBuffer); - } - - if (enumFields) { - buffer.append(';').appendLineSeparator(); - - // If we end with enum fields, readd the fields found mixed in - for (StructField fd2 : deferredEnumFields) { - TextBuffer fieldBuffer = new TextBuffer(); - writeField(wrapper, cl, fd2, fieldBuffer, indent + 1); - fieldBuffer.clearUnassignedBytecodeMappingData(); - buffer.append(fieldBuffer); - } + writeField(buffer, indent, fd, wrapper); } // methods @@ -810,6 +780,13 @@ private static boolean isSuperClassSealed(StructClass cl) { return false; } + private void writeField(TextBuffer buffer, int indent, StructField fd, ClassWrapper wrapper) { + TextBuffer fieldBuffer = new TextBuffer(); + writeField(wrapper, wrapper.getClassStruct(), fd, fieldBuffer, indent + 1); + fieldBuffer.clearUnassignedBytecodeMappingData(); + buffer.append(fieldBuffer); + } + public void writeField(ClassWrapper wrapper, StructClass cl, StructField fd, TextBuffer buffer, int indent) { if (RecordHelper.isHiddenRecordField(cl.getRecordComponents(), fd)) { return; diff --git a/testData/results/pkg/TestEnumStaticField.dec b/testData/results/pkg/TestEnumStaticField.dec index 18ad34c9b4..4432471b26 100644 --- a/testData/results/pkg/TestEnumStaticField.dec +++ b/testData/results/pkg/TestEnumStaticField.dec @@ -3,6 +3,7 @@ package pkg; public enum TestEnumStaticField { TEST_1, TEST_2; + public static Integer field; } diff --git a/testData/results/pkg/TestEnumStaticField2.dec b/testData/results/pkg/TestEnumStaticField2.dec index 8b8b2b91f5..b4f46efd10 100644 --- a/testData/results/pkg/TestEnumStaticField2.dec +++ b/testData/results/pkg/TestEnumStaticField2.dec @@ -3,6 +3,7 @@ package pkg; public enum TestEnumStaticField2 { TEST_1, TEST_2; + public static Integer field; } diff --git a/testData/results/pkg/TestJava11StringConcat.dec b/testData/results/pkg/TestJava11StringConcat.dec index 70f4848b9f..47f7725614 100644 --- a/testData/results/pkg/TestJava11StringConcat.dec +++ b/testData/results/pkg/TestJava11StringConcat.dec @@ -34,12 +34,12 @@ class 'pkg/TestJava11StringConcat' { 0 8 1 8 2 8 - 3 8 - 4 8 - 5 8 6 8 7 8 8 8 + 9 8 + a 8 + b 8 } method 'testEmptyPrefix (I)Ljava/lang/String;' { diff --git a/testData/results/pkg/TestSwitchPatternMatching13.dec b/testData/results/pkg/TestSwitchPatternMatching13.dec index e248295089..20d07fc533 100644 --- a/testData/results/pkg/TestSwitchPatternMatching13.dec +++ b/testData/results/pkg/TestSwitchPatternMatching13.dec @@ -114,15 +114,18 @@ class 'pkg/TestSwitchPatternMatching13' { 51 15 52 15 53 15 + 54 15 + 55 15 + 56 15 57 15 58 15 59 15 5a 15 5b 15 - 5c 15 - 5d 15 - 5e 15 - 5f 16 + 5c 16 + 63 17 + 64 17 + 65 17 66 17 67 17 68 17 @@ -131,18 +134,18 @@ class 'pkg/TestSwitchPatternMatching13' { 6b 17 6c 17 6d 17 - 6e 17 - 6f 17 - 70 17 + 76 18 + 77 18 + 78 18 79 18 7a 18 7b 18 7c 18 7d 18 - 7e 18 - 7f 18 - 80 18 - 81 19 + 7e 19 + 85 20 + 86 20 + 87 20 88 20 89 20 8a 20 @@ -151,84 +154,81 @@ class 'pkg/TestSwitchPatternMatching13' { 8d 20 8e 20 8f 20 - 90 20 - 91 20 - 92 20 + 98 21 + 99 21 + 9a 21 9b 21 9c 21 9d 21 9e 21 9f 21 - a0 21 - a1 21 - a2 21 + a0 23 + a1 23 + a2 23 a3 23 a4 23 a5 23 a6 23 - a7 23 - a8 23 - a9 23 + aa 24 + ab 24 + ac 24 ad 24 ae 24 af 24 b0 24 b1 24 - b2 24 - b3 24 - b4 24 - bc 27 - bd 27 + b9 27 + ba 27 + bb 28 + bc 28 + bd 28 be 28 bf 28 c0 28 c1 28 c2 28 - c3 28 - c4 28 - c5 28 + c3 29 + c4 29 + c5 29 c6 29 c7 29 c8 29 c9 29 ca 29 - cb 29 - cc 29 - cd 29 + cb 32 + cc 32 + cd 32 ce 32 cf 32 d0 32 d1 32 d2 32 - d3 32 - d4 32 - d5 32 - d6 33 + d3 33 + d6 6 + d7 6 + d8 6 d9 6 da 6 db 6 dc 6 dd 6 - de 6 - df 6 - e0 6 + de 7 + df 7 + e0 7 e1 7 e2 7 e3 7 e4 7 e5 7 - e6 7 - e7 7 - e8 7 + e9 35 + ea 35 + eb 35 ec 35 ed 35 ee 35 ef 35 f0 35 - f1 35 - f2 35 - f3 35 - f7 37 + f4 37 } } @@ -261,4 +261,4 @@ Lines mapping: 28 <-> 8 32 <-> 36 34 <-> 38 -44 <-> 47 \ No newline at end of file +44 <-> 47 diff --git a/testData/results/pkg/TestSwitchPatternMatching14.dec b/testData/results/pkg/TestSwitchPatternMatching14.dec index f084f5f625..122b4c2783 100644 --- a/testData/results/pkg/TestSwitchPatternMatching14.dec +++ b/testData/results/pkg/TestSwitchPatternMatching14.dec @@ -81,40 +81,40 @@ class 'pkg/TestSwitchPatternMatching14' { 39 15 3a 15 3b 15 + 3c 15 + 3d 15 + 3e 15 3f 15 40 15 41 15 42 15 43 15 - 44 15 - 45 15 - 46 15 - 47 16 + 44 16 + 47 6 + 48 6 + 49 6 4a 6 4b 6 4c 6 4d 6 4e 6 - 4f 6 - 50 6 - 51 6 + 4f 7 + 50 7 + 51 7 52 7 53 7 54 7 55 7 56 7 - 57 7 - 58 7 - 59 7 + 5a 18 + 5b 18 + 5c 18 5d 18 5e 18 5f 18 60 18 61 18 - 62 18 - 63 18 - 64 18 - 65 20 + 62 20 } } @@ -136,4 +136,4 @@ Lines mapping: 14 <-> 8 18 <-> 19 20 <-> 21 -30 <-> 30 \ No newline at end of file +30 <-> 30 diff --git a/testData/results/pkg/TestSwitchPatternMatching15.dec b/testData/results/pkg/TestSwitchPatternMatching15.dec index 232e4444b4..00cfa209ab 100644 --- a/testData/results/pkg/TestSwitchPatternMatching15.dec +++ b/testData/results/pkg/TestSwitchPatternMatching15.dec @@ -98,43 +98,43 @@ class 'pkg/TestSwitchPatternMatching15' { 65 12 66 12 67 12 + 68 12 + 69 12 + 6a 12 6b 12 6c 12 6d 12 6e 12 6f 12 - 70 12 - 71 12 - 72 12 - 73 13 - 7a 14 - 7b 14 + 70 13 + 77 14 + 78 14 + 79 15 + 7a 15 + 7b 15 7c 15 7d 15 7e 15 7f 15 80 15 - 81 15 - 82 15 - 83 15 - 84 16 - 8b 17 - 8c 17 + 81 16 + 88 17 + 89 17 + 8a 18 + 8b 18 + 8c 18 8d 18 8e 18 8f 18 90 18 91 18 + 92 18 + 93 18 + 94 18 95 18 96 18 - 97 18 - 98 18 - 99 18 - 9a 18 - 9b 18 - 9c 18 - 9d 19 - a3 22 + 97 19 + 9d 22 } } @@ -154,4 +154,4 @@ Lines mapping: 17 <-> 20 21 <-> 23 Not mapped: -19 \ No newline at end of file +19 diff --git a/testData/results/pkg/TestSwitchPatternMatching16.dec b/testData/results/pkg/TestSwitchPatternMatching16.dec index e435dcc8ab..ac90bca278 100644 --- a/testData/results/pkg/TestSwitchPatternMatching16.dec +++ b/testData/results/pkg/TestSwitchPatternMatching16.dec @@ -104,64 +104,64 @@ class 'pkg/TestSwitchPatternMatching16' { 65 12 66 12 67 12 + 68 12 + 69 12 + 6a 12 6b 12 6c 12 6d 12 6e 12 6f 12 - 70 12 - 71 12 - 72 12 - 73 13 - 7a 14 - 7b 14 - 7c 15 - 7d 15 - 7e 15 - 83 22 - 84 22 + 70 13 + 77 14 + 78 14 + 79 15 + 7a 15 + 7b 15 + 80 22 + 81 22 + 82 23 + 83 23 + 84 23 85 23 86 23 87 23 88 23 89 23 + 8a 23 + 8b 23 + 8c 23 8d 23 8e 23 - 8f 23 - 90 23 - 91 23 - 92 23 - 93 23 - 94 23 - 95 24 + 8f 24 + 92 26 + 93 26 + 94 26 + 95 26 + 96 26 + 97 26 98 26 99 26 - 9a 26 - 9b 26 - 9c 26 - 9d 26 - 9e 26 - 9f 26 + 9d 15 + 9e 15 + 9f 15 + a0 15 a3 15 a4 15 a5 15 - a6 15 - a9 15 - aa 15 - ab 15 - ad 16 - ae 16 - af 17 - b0 17 + a7 16 + a8 16 + a9 17 + aa 17 + ae 19 + af 19 + b0 19 + b1 19 + b2 19 + b3 19 b4 19 b5 19 - b6 19 - b7 19 - b8 19 - b9 19 - ba 19 - bb 19 - bc 28 + b6 28 } } @@ -185,4 +185,4 @@ Lines mapping: 38 <-> 29 Not mapped: 27 -34 \ No newline at end of file +34 diff --git a/testData/results/pkg/TestSwitchPatternMatchingInstanceof4.dec b/testData/results/pkg/TestSwitchPatternMatchingInstanceof4.dec index 9624d618a7..b8eb47d23b 100644 --- a/testData/results/pkg/TestSwitchPatternMatchingInstanceof4.dec +++ b/testData/results/pkg/TestSwitchPatternMatchingInstanceof4.dec @@ -73,24 +73,23 @@ class 'pkg/TestSwitchPatternMatchingInstanceof4' { 51 9 57 9 58 9 + 5a 9 + 5b 9 5c 9 5d 9 - 61 9 - 62 9 - 63 9 - 64 9 - 65 9 - 66 9 - 6c 10 + 5e 9 + 5f 9 + 60 9 + 66 10 + 69 12 + 6a 12 + 6b 12 + 6c 12 + 6d 12 + 6e 12 6f 12 70 12 - 71 12 - 72 12 - 73 12 - 74 12 - 75 12 - 76 12 - 7a 14 + 74 14 } } @@ -98,4 +97,4 @@ Lines mapping: 5 <-> 7 6 <-> 9 7 <-> 13 -9 <-> 15 \ No newline at end of file +9 <-> 15 From 36c4b3b463a8adfa27f3c3146d09c4495f051293 Mon Sep 17 00:00:00 2001 From: sschr15 Date: Wed, 18 Jun 2025 21:42:42 -0500 Subject: [PATCH 2/4] Add line numbers to field declarations when feasible --- .../java/decompiler/main/ClassWriter.java | 4 +- testData/results/pkg/TestAnonymousClass.dec | 74 ++++--- .../results/pkg/TestAnonymousParamNames.dec | 11 +- testData/results/pkg/TestArrayFieldAccess.dec | 14 +- .../results/pkg/TestArrayFieldAccess1.dec | 14 +- .../results/pkg/TestArrayFieldAccess2.dec | 14 +- testData/results/pkg/TestArrays.dec | 30 ++- testData/results/pkg/TestBlankLinesSpaces.dec | 22 +- .../results/pkg/TestCastObjectToPrimitive.dec | 197 ++++++++++++++++-- .../results/pkg/TestCastPrimitiveToObject.dec | 11 +- testData/results/pkg/TestClashName.dec | 69 ++++-- testData/results/pkg/TestClassFields.dec | 37 +++- testData/results/pkg/TestClassLambda.dec | 9 +- testData/results/pkg/TestClassVar.dec | 19 +- testData/results/pkg/TestCodeConstructs.dec | 9 +- testData/results/pkg/TestCompanionObject.dec | 5 + testData/results/pkg/TestComplexCondy.dec | 12 +- testData/results/pkg/TestCondy.dec | 17 +- testData/results/pkg/TestConstType.dec | 14 +- testData/results/pkg/TestDeprecations.dec | 17 +- .../results/pkg/TestDoubleNestedClass.dec | 20 +- testData/results/pkg/TestDuplicateLocals.dec | 5 + testData/results/pkg/TestEnum.dec | 33 ++- .../results/pkg/TestEnumArrayStaticInit.dec | 25 ++- testData/results/pkg/TestGenerics.dec | 23 +- .../results/pkg/TestGenericsQualified.dec | 69 +++++- testData/results/pkg/TestInnerClasses3J21.dec | 10 +- testData/results/pkg/TestInterfaceFields.dec | 12 +- .../results/pkg/TestInterfaceLambdaCast.dec | 13 +- testData/results/pkg/TestLambdaQualified.dec | 22 +- testData/results/pkg/TestMethodHandles.dec | 9 +- .../pkg/TestMultiAssignmentInDynamicBlock.dec | 17 +- .../pkg/TestMultiAssignmentInStaticBlock.dec | 7 +- testData/results/pkg/TestNextGaussian.dec | 13 +- testData/results/pkg/TestNoUse.dec | 5 + testData/results/pkg/TestObject.dec | 6 + testData/results/pkg/TestStaticInit.dec | 16 +- testData/results/pkg/TestSuspendLambdaKt.dec | 18 +- testData/results/pkg/TestSwitchOnEnumFake.dec | 14 +- testData/results/pkg/TestTextBlocks.dec | 10 +- .../results/pkg/TestUnicodeIdentifiers.dec | 36 +++- testData/results/pkg/TestVarHandles.dec | 9 +- 42 files changed, 842 insertions(+), 149 deletions(-) diff --git a/src/org/jetbrains/java/decompiler/main/ClassWriter.java b/src/org/jetbrains/java/decompiler/main/ClassWriter.java index 3498036519..9fe46f3632 100644 --- a/src/org/jetbrains/java/decompiler/main/ClassWriter.java +++ b/src/org/jetbrains/java/decompiler/main/ClassWriter.java @@ -783,8 +783,8 @@ private static boolean isSuperClassSealed(StructClass cl) { private void writeField(TextBuffer buffer, int indent, StructField fd, ClassWrapper wrapper) { TextBuffer fieldBuffer = new TextBuffer(); writeField(wrapper, wrapper.getClassStruct(), fd, fieldBuffer, indent + 1); - fieldBuffer.clearUnassignedBytecodeMappingData(); - buffer.append(fieldBuffer); + String initializer = fd.hasModifier(CodeConstants.ACC_STATIC) ? " ()V" : " ()V"; + buffer.append(fieldBuffer, wrapper.getClassStruct().qualifiedName, initializer); } public void writeField(ClassWrapper wrapper, StructClass cl, StructField fd, TextBuffer buffer, int indent) { diff --git a/testData/results/pkg/TestAnonymousClass.dec b/testData/results/pkg/TestAnonymousClass.dec index df70e506e0..a6bbab7639 100644 --- a/testData/results/pkg/TestAnonymousClass.dec +++ b/testData/results/pkg/TestAnonymousClass.dec @@ -24,7 +24,7 @@ public abstract class TestAnonymousClass { int b = 5;// 65 }// 66 }; - private final TestAnonymousClass.InnerRecursive y = new TestAnonymousClass.InnerRecursive(new TestAnonymousClass.InnerRecursive(null) { + private final TestAnonymousClass.InnerRecursive y = new TestAnonymousClass.InnerRecursive(new TestAnonymousClass.InnerRecursive(null) {// 83 @Override void foo() { int a = 5;// 86 @@ -37,7 +37,7 @@ public abstract class TestAnonymousClass { int j = 5; int o = 5; }; - private final TestAnonymousClass.InnerRecursive x = new TestAnonymousClass.InnerRecursive(new TestAnonymousClass.InnerRecursive(null) { + private final TestAnonymousClass.InnerRecursive x = new TestAnonymousClass.InnerRecursive(new TestAnonymousClass.InnerRecursive(null) {// 98 @Override void foo() { int a = 5;// 101 @@ -85,7 +85,7 @@ public abstract class TestAnonymousClass { public static Iterable innerInAnon() { return new Iterable() {// 125 - public int field = 1491401; + public int field = 1491401;// 126 @Override public Iterator iterator() { @@ -107,7 +107,7 @@ public abstract class TestAnonymousClass { public static Iterable innerInAnon2() { return new Iterable() {// 149 - public int field = 1491401; + public int field = 1491401;// 150 @Override public Iterator iterator() { @@ -185,31 +185,12 @@ class 'pkg/TestAnonymousClass$5' { } } -class 'pkg/TestAnonymousClass$6' { - method 'foo ()V' { - 0 29 - 1 29 - 2 30 - 3 30 - 4 31 - 5 31 - 6 32 - } -} - -class 'pkg/TestAnonymousClass$8' { - method 'foo ()V' { - 0 42 - 1 42 - 2 43 - 3 43 - 4 44 - 5 44 - 6 45 +class 'pkg/TestAnonymousClass' { + method ' ()V' { + f 26 + 24 39 } -} -class 'pkg/TestAnonymousClass' { method 'foo (I)V' { 0 54 1 54 @@ -264,6 +245,30 @@ class 'pkg/TestAnonymousClass' { } } +class 'pkg/TestAnonymousClass$6' { + method 'foo ()V' { + 0 29 + 1 29 + 2 30 + 3 30 + 4 31 + 5 31 + 6 32 + } +} + +class 'pkg/TestAnonymousClass$8' { + method 'foo ()V' { + 0 42 + 1 42 + 2 43 + 3 43 + 4 44 + 5 44 + 6 45 + } +} + class 'pkg/TestAnonymousClass$1' { method 'foo ()V' { 0 58 @@ -288,6 +293,11 @@ class 'pkg/TestAnonymousClass$2' { } class 'pkg/TestAnonymousClass$10' { + method ' ()V' { + 5 87 + 6 87 + } + method 'iterator ()Ljava/util/Iterator;' { 8 91 } @@ -316,6 +326,11 @@ class 'pkg/TestAnonymousClass$10$Inner' { } class 'pkg/TestAnonymousClass$11' { + method ' ()V' { + 5 109 + 6 109 + } + method 'iterator ()Ljava/util/Iterator;' { 14 113 } @@ -399,10 +414,12 @@ Lines mapping: 77 <-> 140 78 <-> 141 79 <-> 142 +83 <-> 27 86 <-> 30 87 <-> 31 88 <-> 32 89 <-> 33 +98 <-> 40 101 <-> 43 102 <-> 44 103 <-> 45 @@ -411,13 +428,16 @@ Lines mapping: 117 <-> 151 121 <-> 154 125 <-> 87 +126 <-> 88 132 <-> 98 137 <-> 102 143 <-> 92 149 <-> 109 +150 <-> 110 157 <-> 121 162 <-> 125 169 <-> 114 Not mapped: +10 21 115 diff --git a/testData/results/pkg/TestAnonymousParamNames.dec b/testData/results/pkg/TestAnonymousParamNames.dec index 411b154907..510b5dd719 100644 --- a/testData/results/pkg/TestAnonymousParamNames.dec +++ b/testData/results/pkg/TestAnonymousParamNames.dec @@ -1,7 +1,7 @@ package pkg; public class TestAnonymousParamNames { - private final TestAnonymousParamNames.Clazz reference = new TestAnonymousParamNames.Clazz(0L, false) {}; + private final TestAnonymousParamNames.Clazz reference = new TestAnonymousParamNames.Clazz(0L, false) {};// 21 private class Clazz { public Clazz(long paramL, boolean paramB) { @@ -9,6 +9,13 @@ public class TestAnonymousParamNames { } } +class 'pkg/TestAnonymousParamNames' { + method ' ()V' { + a 3 + b 3 + } +} + class 'pkg/TestAnonymousParamNames$Clazz' { method ' (Lpkg/TestAnonymousParamNames;JZ)V' { 9 7 @@ -16,6 +23,8 @@ class 'pkg/TestAnonymousParamNames$Clazz' { } Lines mapping: +21 <-> 4 25 <-> 8 Not mapped: +20 24 diff --git a/testData/results/pkg/TestArrayFieldAccess.dec b/testData/results/pkg/TestArrayFieldAccess.dec index ca4f7a0005..b68cca7452 100644 --- a/testData/results/pkg/TestArrayFieldAccess.dec +++ b/testData/results/pkg/TestArrayFieldAccess.dec @@ -1,8 +1,8 @@ package pkg; public class TestArrayFieldAccess { - private int[] array = new int[10]; - private int index = 1; + private int[] array = new int[10];// 4 + private int index = 1;// 5 private int value; public void test() { @@ -43,6 +43,12 @@ public class TestArrayFieldAccess { } class 'pkg/TestArrayFieldAccess' { + method ' ()V' { + 5 3 + 6 3 + d 4 + } + method 'test ()V' { 0 8 1 8 @@ -225,6 +231,8 @@ class 'pkg/TestArrayFieldAccess' { } Lines mapping: +4 <-> 4 +5 <-> 5 9 <-> 9 10 <-> 10 13 <-> 13 @@ -246,3 +254,5 @@ Lines mapping: 43 <-> 39 44 <-> 40 46 <-> 42 +Not mapped: +3 diff --git a/testData/results/pkg/TestArrayFieldAccess1.dec b/testData/results/pkg/TestArrayFieldAccess1.dec index 2fe980fd06..5cb2497319 100644 --- a/testData/results/pkg/TestArrayFieldAccess1.dec +++ b/testData/results/pkg/TestArrayFieldAccess1.dec @@ -1,8 +1,8 @@ package pkg; public class TestArrayFieldAccess1 { - private int[] array = new int[10]; - private int index = 1; + private int[] array = new int[10];// 4 + private int index = 1;// 5 private int value; public void test() { @@ -47,6 +47,12 @@ public class TestArrayFieldAccess1 { } class 'pkg/TestArrayFieldAccess1' { + method ' ()V' { + 5 3 + 6 3 + d 4 + } + method 'test ()V' { 0 8 1 8 @@ -268,6 +274,8 @@ class 'pkg/TestArrayFieldAccess1' { } Lines mapping: +4 <-> 4 +5 <-> 5 9 <-> 9 10 <-> 10 13 <-> 13 @@ -291,3 +299,5 @@ Lines mapping: 46 <-> 42 49 <-> 45 50 <-> 46 +Not mapped: +3 diff --git a/testData/results/pkg/TestArrayFieldAccess2.dec b/testData/results/pkg/TestArrayFieldAccess2.dec index 4db88fd636..e85ac19937 100644 --- a/testData/results/pkg/TestArrayFieldAccess2.dec +++ b/testData/results/pkg/TestArrayFieldAccess2.dec @@ -1,8 +1,8 @@ package pkg; public class TestArrayFieldAccess2 { - private int[] array = new int[10]; - private int index = 1; + private int[] array = new int[10];// 4 + private int index = 1;// 5 private int value; public void test() { @@ -63,6 +63,12 @@ public class TestArrayFieldAccess2 { } class 'pkg/TestArrayFieldAccess2' { + method ' ()V' { + 5 3 + 6 3 + d 4 + } + method 'test ()V' { 0 8 1 8 @@ -336,6 +342,8 @@ class 'pkg/TestArrayFieldAccess2' { } Lines mapping: +4 <-> 4 +5 <-> 5 9 <-> 9 10 <-> 10 13 <-> 13 @@ -364,3 +372,5 @@ Lines mapping: 58 <-> 58 61 <-> 61 62 <-> 62 +Not mapped: +3 diff --git a/testData/results/pkg/TestArrays.dec b/testData/results/pkg/TestArrays.dec index fc61acf246..1ef4cfe009 100644 --- a/testData/results/pkg/TestArrays.dec +++ b/testData/results/pkg/TestArrays.dec @@ -1,9 +1,9 @@ package pkg; public class TestArrays { - private static final int[] array1 = new int[]{1, 2, 3, 4}; - private static int[] array2 = new int[]{2, 3, 4, 5}; - private int[] array3 = new int[]{3, 4, 5, 6}; + private static final int[] array1 = new int[]{1, 2, 3, 4};// 4 + private static int[] array2 = new int[]{2, 3, 4, 5};// 5 + private int[] array3 = new int[]{3, 4, 5, 6};// 6 void test() { int a = this.array3[3];// 9 @@ -13,6 +13,25 @@ public class TestArrays { } class 'pkg/TestArrays' { + method ' ()V' { + 5 3 + 9 3 + d 3 + 11 3 + 1b 4 + 1f 4 + 23 4 + 27 4 + } + + method ' ()V' { + a 5 + e 5 + 12 5 + 16 5 + 17 5 + } + method 'test ()V' { 0 8 1 8 @@ -40,7 +59,12 @@ class 'pkg/TestArrays' { } Lines mapping: +4 <-> 4 +5 <-> 5 +6 <-> 6 9 <-> 9 10 <-> 10 11 <-> 11 12 <-> 12 +Not mapped: +3 diff --git a/testData/results/pkg/TestBlankLinesSpaces.dec b/testData/results/pkg/TestBlankLinesSpaces.dec index 979d65fd24..8a7170c5b6 100644 --- a/testData/results/pkg/TestBlankLinesSpaces.dec +++ b/testData/results/pkg/TestBlankLinesSpaces.dec @@ -3,7 +3,7 @@ package pkg; import java.util.Random; public class TestBlankLinesSpaces { - private static final String STRING = longMethodName00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000(); + private static final String STRING = longMethodName00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000();// 6 private static String longMethodName00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000() { return null;// 9 @@ -30,6 +30,16 @@ public class TestBlankLinesSpaces { } class 'pkg/TestBlankLinesSpaces' { + method ' ()V' { + 0 5 + 1 5 + 2 5 + b 17 + c 17 + d 17 + e 28 + } + method 'longMethodName00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ()Ljava/lang/String;' { 0 8 1 8 @@ -39,13 +49,6 @@ class 'pkg/TestBlankLinesSpaces' { 0 14 } - method ' ()V' { - b 17 - c 17 - d 17 - e 28 - } - method 'lambda$static$0 ()V' { 0 19 1 19 @@ -83,6 +86,7 @@ class 'pkg/TestBlankLinesSpaces' { } Lines mapping: +6 <-> 6 9 <-> 9 13 <-> 18 14 <-> 20 @@ -92,5 +96,3 @@ Lines mapping: 20 <-> 27 21 <-> 29 24 <-> 15 -Not mapped: -6 diff --git a/testData/results/pkg/TestCastObjectToPrimitive.dec b/testData/results/pkg/TestCastObjectToPrimitive.dec index 95c3e8e222..18cea7c148 100644 --- a/testData/results/pkg/TestCastObjectToPrimitive.dec +++ b/testData/results/pkg/TestCastObjectToPrimitive.dec @@ -1,18 +1,18 @@ package pkg; public class TestCastObjectToPrimitive { - static Object object1 = null; - boolean castObject = (Boolean)object1; - boolean negatedObject = !((Boolean)object1); - boolean booleanXor = (boolean)((Boolean)object1 ^ (Boolean)object1); - boolean isObjectTrue = (Boolean)object1; - boolean isObjectFalse = !((Boolean)object1); - boolean isObject6 = (Integer)object1 == 6; - boolean booleanOr = (Boolean)object1 || (Boolean)object1; - int integerXor = (Integer)object1 ^ 5; - short shorXor = (short)((Short)object1 ^ 58); - long longXor = 8L ^ (Long)object1; - boolean integerGe = (Integer)object1 <= 48; + static Object object1 = null;// 5 + boolean castObject = (Boolean)object1;// 7 + boolean negatedObject = !((Boolean)object1);// 8 + boolean booleanXor = (boolean)((Boolean)object1 ^ (Boolean)object1);// 9 + boolean isObjectTrue = (Boolean)object1;// 10 + boolean isObjectFalse = !((Boolean)object1);// 11 + boolean isObject6 = (Integer)object1 == 6;// 12 + boolean booleanOr = (Boolean)object1 || (Boolean)object1;// 13 + int integerXor = (Integer)object1 ^ 5;// 14 + short shorXor = (short)((Short)object1 ^ 58);// 15 + long longXor = 8L ^ (Long)object1;// 16 + boolean integerGe = (Integer)object1 <= 48;// 17 public void method() { if ((Boolean)object1) {// 20 @@ -52,6 +52,165 @@ public class TestCastObjectToPrimitive { } class 'pkg/TestCastObjectToPrimitive' { + method ' ()V' { + 0 3 + } + + method ' ()V' { + 5 4 + 6 4 + 7 4 + 8 4 + 9 4 + a 4 + b 4 + c 4 + d 4 + 12 5 + 13 5 + 14 5 + 15 5 + 16 5 + 17 5 + 18 5 + 19 5 + 1a 5 + 1b 5 + 1c 5 + 1d 5 + 27 6 + 28 6 + 29 6 + 2a 6 + 2b 6 + 2c 6 + 2d 6 + 2e 6 + 2f 6 + 30 6 + 31 6 + 32 6 + 33 6 + 34 6 + 35 6 + 36 6 + 37 6 + 38 6 + 39 6 + 3e 7 + 3f 7 + 40 7 + 41 7 + 42 7 + 43 7 + 44 7 + 45 7 + 46 7 + 48 7 + 49 7 + 4a 7 + 54 8 + 55 8 + 56 8 + 57 8 + 58 8 + 59 8 + 5a 8 + 5b 8 + 5c 8 + 5d 8 + 5e 8 + 5f 8 + 69 9 + 6a 9 + 6b 9 + 6c 9 + 6d 9 + 6e 9 + 6f 9 + 70 9 + 71 9 + 72 9 + 73 9 + 74 9 + 75 9 + 76 9 + 80 10 + 81 10 + 82 10 + 83 10 + 84 10 + 85 10 + 86 10 + 87 10 + 88 10 + 89 10 + 8a 10 + 8b 10 + 8c 10 + 8d 10 + 8e 10 + 8f 10 + 90 10 + 91 10 + 92 10 + 93 10 + 94 10 + 95 10 + 96 10 + 97 10 + a1 11 + a2 11 + a3 11 + a4 11 + a5 11 + a6 11 + a7 11 + a8 11 + a9 11 + aa 11 + ab 11 + b0 12 + b1 12 + b2 12 + b3 12 + b4 12 + b5 12 + b6 12 + b7 12 + b8 12 + b9 12 + ba 12 + bb 12 + c1 13 + c2 13 + c3 13 + c4 13 + c5 13 + c6 13 + c7 13 + c8 13 + c9 13 + ca 13 + cb 13 + cc 13 + cd 13 + d2 14 + d3 14 + d4 14 + d5 14 + d6 14 + d7 14 + d8 14 + d9 14 + da 14 + db 14 + dc 14 + dd 14 + de 14 + df 14 + } + method 'method ()V' { 0 17 1 17 @@ -187,6 +346,18 @@ class 'pkg/TestCastObjectToPrimitive' { } Lines mapping: +5 <-> 4 +7 <-> 5 +8 <-> 6 +9 <-> 7 +10 <-> 8 +11 <-> 9 +12 <-> 10 +13 <-> 11 +14 <-> 12 +15 <-> 13 +16 <-> 14 +17 <-> 15 20 <-> 18 21 <-> 19 23 <-> 22 @@ -204,3 +375,5 @@ Lines mapping: 45 <-> 47 47 <-> 47 50 <-> 50 +Not mapped: +3 diff --git a/testData/results/pkg/TestCastPrimitiveToObject.dec b/testData/results/pkg/TestCastPrimitiveToObject.dec index cce71b193c..dea1407c63 100644 --- a/testData/results/pkg/TestCastPrimitiveToObject.dec +++ b/testData/results/pkg/TestCastPrimitiveToObject.dec @@ -1,8 +1,8 @@ package pkg; public class TestCastPrimitiveToObject { - private static int i = 0; - private static Object o = null; + private static int i = 0;// 4 + private static Object o = null;// 5 public void test() { o = (long)i;// 8 @@ -18,6 +18,11 @@ public class TestCastPrimitiveToObject { } class 'pkg/TestCastPrimitiveToObject' { + method ' ()V' { + 0 3 + 4 4 + } + method 'test ()V' { 0 7 1 7 @@ -113,6 +118,8 @@ class 'pkg/TestCastPrimitiveToObject' { } Lines mapping: +4 <-> 4 +5 <-> 5 8 <-> 8 9 <-> 9 10 <-> 10 diff --git a/testData/results/pkg/TestClashName.dec b/testData/results/pkg/TestClashName.dec index 8dbe4eecd3..2d04159275 100644 --- a/testData/results/pkg/TestClashName.dec +++ b/testData/results/pkg/TestClashName.dec @@ -2,19 +2,19 @@ package pkg; @SharedName4 public class TestClashName extends ext.TestClashNameParent implements TestClashNameIface { - int TestClashNameParent = 0; - int TestClashNameIface = 0; - int SharedName1 = 0; - int SharedName4 = 0; - int SharedName5 = 0; - int i = pkg.SharedName1.f; - int j = NonSharedName.f; - int k = SharedName2.f; - int l = pkg.SharedName3.f; - int m = pkg.SharedName1.getF(); - int n = NonSharedName.getF(); - SharedName1 p = null; - SharedName5 q = null; + int TestClashNameParent = 0;// 53 + int TestClashNameIface = 0;// 54 + int SharedName1 = 0;// 55 + int SharedName4 = 0;// 56 + int SharedName5 = 0;// 57 + int i = pkg.SharedName1.f;// 59 + int j = NonSharedName.f;// 60 + int k = SharedName2.f;// 61 + int l = pkg.SharedName3.f;// 62 + int m = pkg.SharedName1.getF();// 63 + int n = NonSharedName.getF();// 64 + SharedName1 p = null;// 65 + SharedName5 q = null;// 67 @SharedName4 public int m() { @@ -32,6 +32,34 @@ public class TestClashName extends ext.TestClashNameParent implements TestClashN } class 'pkg/TestClashName' { + method ' ()V' { + 5 4 + a 5 + f 6 + 14 7 + 19 8 + 1e 9 + 1f 9 + 20 9 + 25 10 + 26 10 + 27 10 + 2c 11 + 2d 11 + 2e 11 + 33 12 + 34 12 + 35 12 + 3a 13 + 3b 13 + 3c 13 + 41 14 + 42 14 + 43 14 + 48 15 + 4d 16 + } + method 'm ()I' { 0 20 1 20 @@ -74,6 +102,19 @@ class 'pkg/TestClashName' { } Lines mapping: +53 <-> 5 +54 <-> 6 +55 <-> 7 +56 <-> 8 +57 <-> 9 +59 <-> 10 +60 <-> 11 +61 <-> 12 +62 <-> 13 +63 <-> 14 +64 <-> 15 +65 <-> 16 +67 <-> 17 73 <-> 21 74 <-> 22 75 <-> 23 @@ -81,3 +122,5 @@ Lines mapping: 77 <-> 25 78 <-> 26 82 <-> 31 +Not mapped: +52 diff --git a/testData/results/pkg/TestClassFields.dec b/testData/results/pkg/TestClassFields.dec index 40c369f356..dbf78bb989 100644 --- a/testData/results/pkg/TestClassFields.dec +++ b/testData/results/pkg/TestClassFields.dec @@ -1,12 +1,41 @@ package pkg; public class TestClassFields { - private static int[] sizes = new int[TestClassFields.names.length]; - private static String[] names = new String[]{"name1", "name2"}; - private static final int SIZE = TestClassFields.Inner.staticMutable; + private static int[] sizes = new int[TestClassFields.names.length];// 14 + private static String[] names = new String[]{"name1", "name2"};// 9 + private static final int SIZE = TestClassFields.Inner.staticMutable;// 16 private static class Inner { - private static int staticMutable = 3; + private static int staticMutable = 3;// 5 } } +class 'pkg/TestClassFields' { + method ' ()V' { + 6 4 + 7 4 + b 4 + c 4 + 11 3 + 12 3 + 13 3 + 14 3 + 1a 5 + 1b 5 + 1c 5 + } +} + +class 'pkg/TestClassFields$Inner' { + method ' ()V' { + 0 8 + } +} + +Lines mapping: +5 <-> 9 +9 <-> 5 +14 <-> 4 +16 <-> 6 +Not mapped: +17 diff --git a/testData/results/pkg/TestClassLambda.dec b/testData/results/pkg/TestClassLambda.dec index e3baa6da85..5c594a03b1 100644 --- a/testData/results/pkg/TestClassLambda.dec +++ b/testData/results/pkg/TestClassLambda.dec @@ -9,7 +9,7 @@ import java.util.function.IntBinaryOperator; import java.util.function.Supplier; public class TestClassLambda { - public int field = 0; + public int field = 0;// 26 public void testLambda() { List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);// 29 @@ -76,6 +76,10 @@ public class TestClassLambda { } class 'pkg/TestClassLambda' { + method ' ()V' { + 5 11 + } + method 'testLambda ()V' { 7 14 8 14 @@ -361,6 +365,7 @@ class 'pkg/TestClassLambda' { } Lines mapping: +26 <-> 12 29 <-> 15 30 <-> 16 32 <-> 17 @@ -397,3 +402,5 @@ Lines mapping: 88 <-> 73 89 <-> 74 90 <-> 75 +Not mapped: +24 diff --git a/testData/results/pkg/TestClassVar.dec b/testData/results/pkg/TestClassVar.dec index d025e3cf55..590d3dee1b 100644 --- a/testData/results/pkg/TestClassVar.dec +++ b/testData/results/pkg/TestClassVar.dec @@ -1,8 +1,8 @@ package pkg; public class TestClassVar { - private boolean field_boolean = Math.random() > 0.0; - public int field_int = 0; + private boolean field_boolean = Math.random() > 0.0;// 21 + public int field_int = 0;// 22 public void testFieldSSAU() { for (int i = 0; i < 10; i++) {// 26 @@ -38,6 +38,18 @@ public class TestClassVar { } class 'pkg/TestClassVar' { + method ' ()V' { + 5 3 + 6 3 + 7 3 + 8 3 + 9 3 + a 3 + b 3 + c 3 + 16 4 + } + method 'testFieldSSAU ()V' { 0 7 1 7 @@ -122,6 +134,8 @@ class 'pkg/TestClassVar' { } Lines mapping: +21 <-> 4 +22 <-> 5 26 <-> 8 29 <-> 10 32 <-> 12 @@ -136,5 +150,6 @@ Lines mapping: 55 <-> 34 58 <-> 37 Not mapped: +19 35 57 diff --git a/testData/results/pkg/TestCodeConstructs.dec b/testData/results/pkg/TestCodeConstructs.dec index ea031b5414..b80b02a8a1 100644 --- a/testData/results/pkg/TestCodeConstructs.dec +++ b/testData/results/pkg/TestCodeConstructs.dec @@ -1,7 +1,7 @@ package pkg; class TestCodeConstructs { - private int count = 0; + private int count = 0;// 23 void expressions() { new String().hashCode();// 20 @@ -13,6 +13,10 @@ class TestCodeConstructs { } class 'pkg/TestCodeConstructs' { + method ' ()V' { + 5 3 + } + method 'expressions ()V' { 7 6 8 6 @@ -33,4 +37,7 @@ class 'pkg/TestCodeConstructs' { Lines mapping: 20 <-> 7 21 <-> 8 +23 <-> 4 25 <-> 11 +Not mapped: +18 diff --git a/testData/results/pkg/TestCompanionObject.dec b/testData/results/pkg/TestCompanionObject.dec index f343eba315..fd0498d06a 100644 --- a/testData/results/pkg/TestCompanionObject.dec +++ b/testData/results/pkg/TestCompanionObject.dec @@ -88,6 +88,11 @@ public final class TestCompanionObject$ implements Serializable { } class 'pkg/TestCompanionObject$' { + method ' ()V' { + a 7 + b 7 + } + method ' ()V' { 4 11 } diff --git a/testData/results/pkg/TestComplexCondy.dec b/testData/results/pkg/TestComplexCondy.dec index b64bd1139f..ca6aa0568b 100644 --- a/testData/results/pkg/TestComplexCondy.dec +++ b/testData/results/pkg/TestComplexCondy.dec @@ -4,7 +4,7 @@ import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; public class TestComplexCondy { - public static Integer field = 1; + public static Integer field = 1;// 14 15 public Integer instance; public int primitive; @@ -26,6 +26,13 @@ public class TestComplexCondy { } class 'pkg/TestComplexCondy' { + method ' ()V' { + 0 6 + 1 6 + 2 6 + 3 6 + } + method 'testVarHandle ()Ljava/lang/invoke/VarHandle;' { 2 11 } @@ -44,11 +51,14 @@ class 'pkg/TestComplexCondy' { } Lines mapping: +14 <-> 7 +15 <-> 7 26 <-> 12 36 <-> 16 46 <-> 20 55 <-> 24 Not mapped: +16 22 32 42 diff --git a/testData/results/pkg/TestCondy.dec b/testData/results/pkg/TestCondy.dec index 86770268cf..5acab2ed7a 100644 --- a/testData/results/pkg/TestCondy.dec +++ b/testData/results/pkg/TestCondy.dec @@ -6,8 +6,8 @@ import java.lang.invoke.MethodHandles.Lookup; import java.nio.file.StandardOpenOption; public class TestCondy { - public static final Integer field = 1; - public static final TestCondy selfField = null; + public static final Integer field = 1;// 13 14 + public static final TestCondy selfField = null;// 17 public static String testNull() { return /* $VF: constant dynamic */ null;// 25 @@ -51,6 +51,14 @@ public class TestCondy { } class 'pkg/TestCondy' { + method ' ()V' { + 0 8 + 1 8 + 2 8 + 3 8 + 7 9 + } + method 'testNull ()Ljava/lang/String;' { 2 12 } @@ -107,6 +115,9 @@ class 'pkg/TestCondy' { } Lines mapping: +13 <-> 9 +14 <-> 9 +17 <-> 10 25 <-> 13 32 <-> 17 39 <-> 21 @@ -125,6 +136,8 @@ Lines mapping: 99 <-> 49 100 <-> 49 Not mapped: +15 +18 24 31 38 diff --git a/testData/results/pkg/TestConstType.dec b/testData/results/pkg/TestConstType.dec index 4c6c1d0448..cfc98ff930 100644 --- a/testData/results/pkg/TestConstType.dec +++ b/testData/results/pkg/TestConstType.dec @@ -1,8 +1,8 @@ package pkg; public class TestConstType { - private char lineBreak = '\n'; - private char zero = 0; + private char lineBreak = '\n';// 4 + private char zero = 0;// 5 public void setLineBreak(char os) { switch (os) {// 8 @@ -98,6 +98,12 @@ public class TestConstType { } class 'pkg/TestConstType' { + method ' ()V' { + 5 3 + 6 3 + b 4 + } + method 'setLineBreak (C)V' { 0 7 1 7 @@ -572,6 +578,8 @@ class 'pkg/TestConstType' { } Lines mapping: +4 <-> 4 +5 <-> 5 8 <-> 8 10 <-> 10 11 <-> 11 @@ -635,3 +643,5 @@ Lines mapping: 100 <-> 82 102 <-> 93 104 <-> 96 +Not mapped: +3 diff --git a/testData/results/pkg/TestDeprecations.dec b/testData/results/pkg/TestDeprecations.dec index 567d1c032a..acd89be393 100644 --- a/testData/results/pkg/TestDeprecations.dec +++ b/testData/results/pkg/TestDeprecations.dec @@ -24,7 +24,7 @@ public abstract class TestDeprecations { @Deprecated public static class ByAnno { - int a = 5; + int a = 5;// 52 void foo() { int x = 5;// 55 @@ -33,7 +33,7 @@ public abstract class TestDeprecations { /** @deprecated */ public static class ByComment { - int a = 5; + int a = 5;// 43 void foo() { int x = 5;// 46 @@ -56,6 +56,10 @@ class 'pkg/TestDeprecations' { } class 'pkg/TestDeprecations$ByAnno' { + method ' ()V' { + 5 26 + } + method 'foo ()V' { 0 29 1 29 @@ -64,6 +68,10 @@ class 'pkg/TestDeprecations$ByAnno' { } class 'pkg/TestDeprecations$ByComment' { + method ' ()V' { + 5 35 + } + method 'foo ()V' { 0 38 1 38 @@ -76,7 +84,12 @@ Lines mapping: 28 <-> 12 35 <-> 19 36 <-> 20 +43 <-> 36 46 <-> 39 47 <-> 40 +52 <-> 27 55 <-> 30 56 <-> 31 +Not mapped: +42 +51 diff --git a/testData/results/pkg/TestDoubleNestedClass.dec b/testData/results/pkg/TestDoubleNestedClass.dec index 1418770854..e85ad4d787 100644 --- a/testData/results/pkg/TestDoubleNestedClass.dec +++ b/testData/results/pkg/TestDoubleNestedClass.dec @@ -43,6 +43,16 @@ public abstract class TestDoubleNestedClass { } } +class 'pkg/TestDoubleNestedClass$1' { + method ' ()V' { + 5 6 + } + + method 'test ()Ljava/lang/Object;' { + 8 16 + } +} + class 'pkg/TestDoubleNestedClass$1$1Local' { method 'getX ()I' { 1 12 @@ -55,12 +65,6 @@ class 'pkg/TestDoubleNestedClass$1$1Local' { } } -class 'pkg/TestDoubleNestedClass$1' { - method 'test ()Ljava/lang/Object;' { - 8 16 - } -} - class 'pkg/TestDoubleNestedClass$2' { method 'test ()Ljava/lang/Object;' { 8 22 @@ -68,6 +72,10 @@ class 'pkg/TestDoubleNestedClass$2' { } class 'pkg/TestDoubleNestedClass$Child1' { + method ' ()V' { + 5 29 + } + method 'foo (I)Ljava/util/function/Supplier;' { 0 32 1 32 diff --git a/testData/results/pkg/TestDuplicateLocals.dec b/testData/results/pkg/TestDuplicateLocals.dec index ab89fcb786..891a13a61b 100644 --- a/testData/results/pkg/TestDuplicateLocals.dec +++ b/testData/results/pkg/TestDuplicateLocals.dec @@ -79,6 +79,11 @@ class 'pkg/TestDuplicateLocals' { 1 10 } + method ' ()V' { + 5 11 + 6 11 + } + method 'test1 (Ljava/util/List;)V' { 0 14 1 14 diff --git a/testData/results/pkg/TestEnum.dec b/testData/results/pkg/TestEnum.dec index adc0629f70..bf27b98d1a 100644 --- a/testData/results/pkg/TestEnum.dec +++ b/testData/results/pkg/TestEnum.dec @@ -7,8 +7,8 @@ public enum TestEnum { public void m() { }// 22 }, - E3("-", TestEnum.Type.ODD), - E4("+", TestEnum.Type.EVEN) { + E3("-", TestEnum.Type.ODD),// 24 + E4("+", TestEnum.Type.EVEN) {// 25 @Override public void m() { }// 27 @@ -60,13 +60,20 @@ class 'pkg/TestEnum$1' { } } -class 'pkg/TestEnum$2' { - method 'm ()V' { - 0 13 +class 'pkg/TestEnum' { + method ' ()V' { + 21 9 + 22 9 + 23 9 + 24 9 + 25 9 + 33 10 + 34 10 + 35 10 + 36 10 + 37 10 } -} -class 'pkg/TestEnum' { method 'm ()V' { 0 19 } @@ -193,8 +200,16 @@ class 'pkg/TestEnum' { } } +class 'pkg/TestEnum$2' { + method 'm ()V' { + 0 13 + } +} + Lines mapping: 22 <-> 8 +24 <-> 10 +25 <-> 11 27 <-> 14 32 <-> 20 36 <-> 23 @@ -210,3 +225,7 @@ Lines mapping: 55 <-> 45 57 <-> 47 59 <-> 49 +Not mapped: +18 +19 +20 diff --git a/testData/results/pkg/TestEnumArrayStaticInit.dec b/testData/results/pkg/TestEnumArrayStaticInit.dec index bd5155d8fa..7114f8efc9 100644 --- a/testData/results/pkg/TestEnumArrayStaticInit.dec +++ b/testData/results/pkg/TestEnumArrayStaticInit.dec @@ -1,7 +1,7 @@ package pkg; public enum TestEnumArrayStaticInit { - A(0), + A(0),// 4 B(1), C(2); @@ -23,16 +23,10 @@ public enum TestEnumArrayStaticInit { } class 'pkg/TestEnumArrayStaticInit' { - method ' (Ljava/lang/String;II)V' { - 6 11 - 7 11 - 8 11 - 9 11 - a 11 - b 12 - } - method ' ()V' { + 7 3 + 15 4 + 23 5 43 15 44 15 45 15 @@ -71,9 +65,19 @@ class 'pkg/TestEnumArrayStaticInit' { 73 18 77 21 } + + method ' (Ljava/lang/String;II)V' { + 6 11 + 7 11 + 8 11 + 9 11 + a 11 + b 12 + } } Lines mapping: +4 <-> 4 11 <-> 12 12 <-> 13 15 <-> 16 @@ -83,5 +87,4 @@ Lines mapping: 22 <-> 22 Not mapped: 3 -4 10 diff --git a/testData/results/pkg/TestGenerics.dec b/testData/results/pkg/TestGenerics.dec index 9edafcdcbf..99ed0f1188 100644 --- a/testData/results/pkg/TestGenerics.dec +++ b/testData/results/pkg/TestGenerics.dec @@ -6,10 +6,10 @@ import java.util.List; import java.util.Map; public class TestGenerics { - static Map field = TestGenerics.Maps.newHashMap(); + static Map field = TestGenerics.Maps.newHashMap();// 24 static List> llstring = new ArrayList<>(); static List bytes = new ArrayList<>(); - A[] aArray = (A[])(new Object[10]); + A[] aArray = (A[])(new Object[10]);// 27 public void genericAllocation() { this.aArray = (A[])(new Object[20]);// 30 @@ -61,6 +61,20 @@ public class TestGenerics { } class 'pkg/TestGenerics' { + method ' ()V' { + 0 8 + 1 8 + 2 8 + } + + method ' ()V' { + 5 11 + 6 11 + a 11 + b 11 + c 11 + } + method 'genericAllocation ()V' { 0 14 1 14 @@ -258,6 +272,8 @@ class 'pkg/TestGenerics$Maps' { } Lines mapping: +24 <-> 9 +27 <-> 12 30 <-> 15 31 <-> 16 34 <-> 19 @@ -281,6 +297,9 @@ Lines mapping: 67 <-> 53 72 <-> 58 Not mapped: +23 +25 +26 50 56 63 diff --git a/testData/results/pkg/TestGenericsQualified.dec b/testData/results/pkg/TestGenericsQualified.dec index 4acaaf563c..e4c2b7e981 100644 --- a/testData/results/pkg/TestGenericsQualified.dec +++ b/testData/results/pkg/TestGenericsQualified.dec @@ -9,9 +9,9 @@ public class TestGenericsQualified { public Comparator field = Comparator.comparing(s -> s.length()).thenComparing(i -> i.toString());// 10 public CompletableFuture field2 = CompletableFuture.supplyAsync(() -> "").thenCompose(s -> CompletableFuture.supplyAsync(() -> s + "2"));// 11 public Optional field3 = Optional.of("").map(s -> s + "3");// 12 - public Stream field4 = Stream.of("1", "2").sorted(Comparator.comparing(s -> s.length()).thenComparing(i -> i.toString()));// 14 + public Stream field4 = Stream.of("1", "2").sorted(Comparator.comparing(s -> s.length()).thenComparing(i -> i.toString()));// 13 14 public Comparator field5 = Comparator.comparing(String::length).thenComparing(i -> i.toString());// 15 - public Comparator field6 = Comparator.comparing(TestGenericsQualified::get).reversed(); + public Comparator field6 = Comparator.comparing(TestGenericsQualified::get).reversed();// 16 public int get() { return 0;// 19 @@ -27,6 +27,67 @@ public class TestGenericsQualified { } class 'pkg/TestGenericsQualified' { + method ' ()V' { + a 8 + b 8 + c 8 + 12 8 + 13 8 + 14 8 + 15 8 + 16 8 + 20 9 + 21 9 + 22 9 + 28 9 + 29 9 + 2a 9 + 2f 10 + 30 10 + 31 10 + 32 10 + 33 10 + 39 10 + 3a 10 + 3b 10 + 46 11 + 47 11 + 4b 11 + 4c 11 + 4e 11 + 4f 11 + 50 11 + 56 11 + 57 11 + 58 11 + 5e 11 + 5f 11 + 60 11 + 61 11 + 62 11 + 63 11 + 64 11 + 65 11 + 66 11 + 67 11 + 71 12 + 72 12 + 73 12 + 79 12 + 7a 12 + 7b 12 + 7c 12 + 7d 12 + 87 13 + 88 13 + 89 13 + 8a 13 + 8b 13 + 8c 13 + 8d 13 + 8e 13 + } + method 'lambda$new$0 (Ljava/lang/String;)Ljava/lang/Integer;' { 0 8 1 8 @@ -152,8 +213,12 @@ Lines mapping: 10 <-> 9 11 <-> 10 12 <-> 11 +13 <-> 12 14 <-> 12 15 <-> 13 +16 <-> 14 19 <-> 17 23 <-> 21 27 <-> 25 +Not mapped: +9 diff --git a/testData/results/pkg/TestInnerClasses3J21.dec b/testData/results/pkg/TestInnerClasses3J21.dec index 204d7edf1f..98afa00b41 100644 --- a/testData/results/pkg/TestInnerClasses3J21.dec +++ b/testData/results/pkg/TestInnerClasses3J21.dec @@ -1,7 +1,7 @@ package pkg; public class TestInnerClasses3J21 { - private int i = 0; + private int i = 0;// 4 private class Inner { private int j; @@ -20,6 +20,12 @@ public class TestInnerClasses3J21 { } } +class 'pkg/TestInnerClasses3J21' { + method ' ()V' { + 5 3 + } +} + class 'pkg/TestInnerClasses3J21$Inner' { method ' (Lpkg/TestInnerClasses3J21;)V' { 2 9 @@ -54,6 +60,7 @@ class 'pkg/TestInnerClasses3J21$Inner' { } Lines mapping: +4 <-> 4 9 <-> 10 10 <-> 11 13 <-> 14 @@ -61,4 +68,5 @@ Lines mapping: 17 <-> 18 18 <-> 19 Not mapped: +3 12 diff --git a/testData/results/pkg/TestInterfaceFields.dec b/testData/results/pkg/TestInterfaceFields.dec index d08e2fe3ff..b993b95d3a 100644 --- a/testData/results/pkg/TestInterfaceFields.dec +++ b/testData/results/pkg/TestInterfaceFields.dec @@ -3,7 +3,17 @@ package pkg; import java.math.BigDecimal; public interface TestInterfaceFields { - BigDecimal BIG_ZERO = BigDecimal.ZERO; + BigDecimal BIG_ZERO = BigDecimal.ZERO;// 6 int MAX_BYTE_VALUE = 127; } +class 'pkg/TestInterfaceFields' { + method ' ()V' { + 0 5 + 1 5 + 2 5 + } +} + +Lines mapping: +6 <-> 6 diff --git a/testData/results/pkg/TestInterfaceLambdaCast.dec b/testData/results/pkg/TestInterfaceLambdaCast.dec index 1c73eb9b19..5519775251 100644 --- a/testData/results/pkg/TestInterfaceLambdaCast.dec +++ b/testData/results/pkg/TestInterfaceLambdaCast.dec @@ -4,7 +4,7 @@ public class TestInterfaceLambdaCast { private static int x = (() -> { System.out.println("Hi");// 9 return 1;// 10 - }).get(); + }).get();// 11 private static void main() { System.out.println(x);// 14 @@ -29,6 +29,14 @@ class 'pkg/TestInterfaceLambdaCast' { 9 5 } + method ' ()V' { + 5 6 + 6 6 + 7 6 + 8 6 + 9 6 + } + method 'main ()V' { 0 9 1 9 @@ -46,5 +54,8 @@ class 'pkg/TestInterfaceLambdaCast' { Lines mapping: 9 <-> 5 10 <-> 6 +11 <-> 7 14 <-> 10 15 <-> 11 +Not mapped: +8 diff --git a/testData/results/pkg/TestLambdaQualified.dec b/testData/results/pkg/TestLambdaQualified.dec index c9fc593272..2f15c18fa9 100644 --- a/testData/results/pkg/TestLambdaQualified.dec +++ b/testData/results/pkg/TestLambdaQualified.dec @@ -4,7 +4,7 @@ import java.util.function.Supplier; public class TestLambdaQualified { private static final Supplier S = () -> TestLambdaQualified.STR;// 7 - private static final String STR = make(); + private static final String STR = make();// 8 private static Runnable r = new Runnable() { private final Supplier S_ = () -> TestLambdaQualified.STR;// 27 @@ -23,7 +23,7 @@ public class TestLambdaQualified { private static final Supplier S2 = () -> TestLambdaQualified.I1.I2.STR2;// 19 private static class I2 { - private static final String STR2 = TestLambdaQualified.make(); + private static final String STR2 = TestLambdaQualified.make();// 21 } } @@ -40,6 +40,12 @@ class 'pkg/TestLambdaQualified' { 3 5 } + method ' ()V' { + 8 6 + 9 6 + a 6 + } + method 'make ()Ljava/lang/String;' { 0 16 1 16 @@ -101,6 +107,14 @@ class 'pkg/TestLambdaQualified$I1' { } } +class 'pkg/TestLambdaQualified$I1$I2' { + method ' ()V' { + 0 25 + 1 25 + 2 25 + } +} + class 'pkg/TestLambdaQualified$Inner' { method 'lambda$new$0 ()Ljava/lang/String;' { 0 30 @@ -112,11 +126,15 @@ class 'pkg/TestLambdaQualified$Inner' { Lines mapping: 7 <-> 6 +8 <-> 7 12 <-> 31 17 <-> 21 18 <-> 22 19 <-> 23 +21 <-> 26 27 <-> 9 31 <-> 12 32 <-> 13 37 <-> 17 +Not mapped: +26 diff --git a/testData/results/pkg/TestMethodHandles.dec b/testData/results/pkg/TestMethodHandles.dec index 1706ff1f9f..a5ee274ce8 100644 --- a/testData/results/pkg/TestMethodHandles.dec +++ b/testData/results/pkg/TestMethodHandles.dec @@ -7,7 +7,7 @@ import java.lang.invoke.MethodType; import java.lang.invoke.MethodHandles.Lookup; public class TestMethodHandles { - private static final Lookup LOOKUP = MethodHandles.lookup(); + private static final Lookup LOOKUP = MethodHandles.lookup();// 7 public void test1() throws Throwable { MethodHandle abs = LOOKUP.findStatic(Math.class, "abs", MethodType.methodType(long.class, long.class));// 10 @@ -43,6 +43,12 @@ public class TestMethodHandles { } class 'pkg/TestMethodHandles' { + method ' ()V' { + 0 9 + 1 9 + 2 9 + } + method 'test1 ()V' { 0 12 1 12 @@ -201,6 +207,7 @@ class 'pkg/TestMethodHandles' { } Lines mapping: +7 <-> 10 10 <-> 13 11 <-> 14 12 <-> 15 diff --git a/testData/results/pkg/TestMultiAssignmentInDynamicBlock.dec b/testData/results/pkg/TestMultiAssignmentInDynamicBlock.dec index ee069a64ba..75ac82a35d 100644 --- a/testData/results/pkg/TestMultiAssignmentInDynamicBlock.dec +++ b/testData/results/pkg/TestMultiAssignmentInDynamicBlock.dec @@ -1,8 +1,8 @@ package pkg; public class TestMultiAssignmentInDynamicBlock { - private int i = 124151; - private final int a = this.i * 11; + private int i = 124151;// 4 + private final int a = this.i * 11;// 12 private final int b; private final int c; private final int d; @@ -23,6 +23,15 @@ public class TestMultiAssignmentInDynamicBlock { class 'pkg/TestMultiAssignmentInDynamicBlock' { method ' ()V' { + 5 3 + 6 3 + b 4 + c 4 + d 4 + e 4 + f 4 + 10 4 + 11 4 15 11 16 11 17 11 @@ -172,6 +181,8 @@ class 'pkg/TestMultiAssignmentInDynamicBlock' { } Lines mapping: +4 <-> 4 +12 <-> 5 13 <-> 12 14 <-> 13 15 <-> 14 @@ -184,5 +195,3 @@ Lines mapping: 22 <-> 21 Not mapped: 3 -4 -12 diff --git a/testData/results/pkg/TestMultiAssignmentInStaticBlock.dec b/testData/results/pkg/TestMultiAssignmentInStaticBlock.dec index 207402ac85..b42f4afbc8 100644 --- a/testData/results/pkg/TestMultiAssignmentInStaticBlock.dec +++ b/testData/results/pkg/TestMultiAssignmentInStaticBlock.dec @@ -1,7 +1,7 @@ package pkg; public class TestMultiAssignmentInStaticBlock { - private static int i = 124151; + private static int i = 124151;// 4 private static final int a; private static final int b; private static final int c; @@ -24,6 +24,8 @@ public class TestMultiAssignmentInStaticBlock { class 'pkg/TestMultiAssignmentInStaticBlock' { method ' ()V' { + 0 3 + 1 3 5 11 6 11 7 11 @@ -164,6 +166,7 @@ class 'pkg/TestMultiAssignmentInStaticBlock' { } Lines mapping: +4 <-> 4 12 <-> 12 13 <-> 13 14 <-> 14 @@ -175,5 +178,3 @@ Lines mapping: 20 <-> 20 21 <-> 21 22 <-> 22 -Not mapped: -4 diff --git a/testData/results/pkg/TestNextGaussian.dec b/testData/results/pkg/TestNextGaussian.dec index 011ddae33c..1da9585ca7 100644 --- a/testData/results/pkg/TestNextGaussian.dec +++ b/testData/results/pkg/TestNextGaussian.dec @@ -1,8 +1,8 @@ package pkg; public class TestNextGaussian { - private boolean haveNextNextGaussian = false; - private double nextNextGaussian = 0.0; + private boolean haveNextNextGaussian = false;// 4 + private double nextNextGaussian = 0.0;// 5 public synchronized double nextGaussian() { if (this.haveNextNextGaussian) {// 9 @@ -31,6 +31,11 @@ public class TestNextGaussian { } class 'pkg/TestNextGaussian' { + method ' ()V' { + 5 3 + a 4 + } + method 'nextGaussian ()D' { 0 7 1 7 @@ -135,6 +140,8 @@ class 'pkg/TestNextGaussian' { } Lines mapping: +4 <-> 4 +5 <-> 5 9 <-> 8 10 <-> 9 11 <-> 10 @@ -147,3 +154,5 @@ Lines mapping: 21 <-> 23 22 <-> 24 27 <-> 29 +Not mapped: +3 diff --git a/testData/results/pkg/TestNoUse.dec b/testData/results/pkg/TestNoUse.dec index ede7355bb6..66003f96eb 100644 --- a/testData/results/pkg/TestNoUse.dec +++ b/testData/results/pkg/TestNoUse.dec @@ -59,6 +59,11 @@ public class TestNoUse { } class 'pkg/TestNoUse' { + method ' ()V' { + 5 3 + 6 3 + } + method 'test (ZI)V' { 0 6 1 6 diff --git a/testData/results/pkg/TestObject.dec b/testData/results/pkg/TestObject.dec index 88966a6b17..5a453ee254 100644 --- a/testData/results/pkg/TestObject.dec +++ b/testData/results/pkg/TestObject.dec @@ -85,6 +85,12 @@ public final class TestObject$ implements Serializable { } class 'pkg/TestObject$' { + method ' ()V' { + a 6 + b 6 + f 7 + } + method ' ()V' { 4 11 } diff --git a/testData/results/pkg/TestStaticInit.dec b/testData/results/pkg/TestStaticInit.dec index b8d39e0c66..827aafc0fc 100644 --- a/testData/results/pkg/TestStaticInit.dec +++ b/testData/results/pkg/TestStaticInit.dec @@ -4,10 +4,10 @@ import java.util.function.Supplier; public class TestStaticInit { static final Supplier X = () -> TestStaticInit.Inner.Y;// 7 - static final TestStaticInit Y = null; + static final TestStaticInit Y = null;// 8 static class Inner { - static final TestStaticInit Y = null; + static final TestStaticInit Y = null;// 11 } } @@ -18,7 +18,19 @@ class 'pkg/TestStaticInit' { 2 5 3 5 } + + method ' ()V' { + 8 6 + } +} + +class 'pkg/TestStaticInit$Inner' { + method ' ()V' { + 0 9 + } } Lines mapping: 7 <-> 6 +8 <-> 7 +11 <-> 10 diff --git a/testData/results/pkg/TestSuspendLambdaKt.dec b/testData/results/pkg/TestSuspendLambdaKt.dec index f7e560b7f6..fac24acae6 100644 --- a/testData/results/pkg/TestSuspendLambdaKt.dec +++ b/testData/results/pkg/TestSuspendLambdaKt.dec @@ -52,7 +52,7 @@ public final class TestSuspendLambdaKt { public final Object invokeSuspend(Object $result) { IntrinsicsKt.getCOROUTINE_SUSPENDED(); - switch (this.label) { + switch (this.label) {// 3 case 0: ResultKt.throwOnFailure($result); System.out.println("SL1");// 4 @@ -71,20 +71,24 @@ public final class TestSuspendLambdaKt { } } - }// 3 + } } class 'pkg/TestSuspendLambdaKt' { + method ' ()V' { + 4 21 + 8 21 + 9 21 + a 21 + e 73 + } + method 'getSl1 ()Lkotlin/jvm/functions/Function1;' { 0 25 1 25 2 25 3 25 } - - method ' ()V' { - e 73 - } } class 'pkg/TestSuspendLambdaKt$sl1$1' { @@ -174,6 +178,6 @@ class 'pkg/TestSuspendLambdaKt$sl1$1' { } Lines mapping: -3 <-> 74 +3 <-> 55 4 <-> 58 5 <-> 59 diff --git a/testData/results/pkg/TestSwitchOnEnumFake.dec b/testData/results/pkg/TestSwitchOnEnumFake.dec index d82a6a61a7..7fcbe23398 100644 --- a/testData/results/pkg/TestSwitchOnEnumFake.dec +++ b/testData/results/pkg/TestSwitchOnEnumFake.dec @@ -1,7 +1,7 @@ package pkg; public class TestSwitchOnEnumFake { - public byte[] values = new byte[TestSwitchOnEnumFake.Values.values().length]; + public byte[] values = new byte[TestSwitchOnEnumFake.Values.values().length];// 11 public int test(TestSwitchOnEnumFake.Values v) { int a = 0;// 14 @@ -38,6 +38,13 @@ public class TestSwitchOnEnumFake { } class 'pkg/TestSwitchOnEnumFake' { + method ' ()V' { + 5 3 + 6 3 + 7 3 + 8 3 + } + method 'test (Lpkg/TestSwitchOnEnumFake$Values;)I' { 0 6 1 6 @@ -107,6 +114,7 @@ class 'pkg/TestSwitchOnEnumFake' { } Lines mapping: +11 <-> 4 14 <-> 7 15 <-> 8 16 <-> 11 @@ -121,4 +129,6 @@ Lines mapping: 28 <-> 23 30 <-> 25 31 <-> 26 -35 <-> 29 \ No newline at end of file +35 <-> 29 +Not mapped: +3 diff --git a/testData/results/pkg/TestTextBlocks.dec b/testData/results/pkg/TestTextBlocks.dec index 65f2c0b315..dac782406d 100644 --- a/testData/results/pkg/TestTextBlocks.dec +++ b/testData/results/pkg/TestTextBlocks.dec @@ -1,7 +1,7 @@ package pkg; public class TestTextBlocks { - private final String text = "Hello!\nThis is a text block!\nIt's multiple lines long.\nI can use \"quotes\" in it.\nIt's rather cool.\n"; + private final String text = "Hello!\nThis is a text block!\nIt's multiple lines long.\nI can use \"quotes\" in it.\nIt's rather cool.\n";// 4 public void testLocal() { String local = "Hello!\nThis is a text block!\nIt's multiple lines long.\nI can use \"quotes\" in it.\nIt's rather cool.\n";// 13 @@ -17,6 +17,11 @@ public class TestTextBlocks { } class 'pkg/TestTextBlocks' { + method ' ()V' { + 5 3 + 6 3 + } + method 'testLocal ()V' { 0 6 1 6 @@ -47,9 +52,12 @@ class 'pkg/TestTextBlocks' { } Lines mapping: +4 <-> 4 13 <-> 7 20 <-> 8 23 <-> 11 30 <-> 12 33 <-> 15 34 <-> 16 +Not mapped: +3 diff --git a/testData/results/pkg/TestUnicodeIdentifiers.dec b/testData/results/pkg/TestUnicodeIdentifiers.dec index 28d5d21ce2..e744b2438b 100644 --- a/testData/results/pkg/TestUnicodeIdentifiers.dec +++ b/testData/results/pkg/TestUnicodeIdentifiers.dec @@ -2,7 +2,39 @@ package pkg; public class TestUnicodeIdentifiers { public static final double π = 3.141592653589793; - public static final double φ = (1.0 + Math.sqrt(5.0)) / 2.0; - public final double Δ = 3.141592653589793 - φ; + public static final double φ = (1.0 + Math.sqrt(5.0)) / 2.0;// 5 + public final double Δ = 3.141592653589793 - φ;// 6 } +class 'pkg/TestUnicodeIdentifiers' { + method ' ()V' { + 0 4 + 1 4 + 2 4 + 3 4 + 4 4 + 5 4 + 6 4 + 7 4 + 8 4 + 9 4 + a 4 + b 4 + } + + method ' ()V' { + 5 5 + 6 5 + 7 5 + 8 5 + 9 5 + a 5 + b 5 + } +} + +Lines mapping: +5 <-> 5 +6 <-> 6 +Not mapped: +3 diff --git a/testData/results/pkg/TestVarHandles.dec b/testData/results/pkg/TestVarHandles.dec index 67b6f45be5..443672439f 100644 --- a/testData/results/pkg/TestVarHandles.dec +++ b/testData/results/pkg/TestVarHandles.dec @@ -5,7 +5,7 @@ import java.lang.invoke.VarHandle; import java.lang.invoke.MethodHandles.Lookup; public class TestVarHandles { - private static final Lookup LOOKUP = MethodHandles.lookup(); + private static final Lookup LOOKUP = MethodHandles.lookup();// 6 public void test1() throws ReflectiveOperationException { VarHandle lookupHandle = LOOKUP.findStaticVarHandle(TestVarHandles.class, "LOOKUP", Lookup.class);// 9 @@ -21,6 +21,12 @@ public class TestVarHandles { } class 'pkg/TestVarHandles' { + method ' ()V' { + 0 7 + 1 7 + 2 7 + } + method 'test1 ()V' { 0 10 1 10 @@ -76,6 +82,7 @@ class 'pkg/TestVarHandles' { } Lines mapping: +6 <-> 8 9 <-> 11 10 <-> 12 11 <-> 13 From 0eb8a9f746d1f188ef9bdb93b6b9d2eec252890b Mon Sep 17 00:00:00 2001 From: sschr15 Date: Wed, 18 Jun 2025 22:08:52 -0500 Subject: [PATCH 3/4] Port changes to Kotlin plugin --- .../org/vineflower/kotlin/KotlinWriter.java | 128 ++++++++---------- .../vineflower/kotlin/struct/KProperty.java | 2 +- .../pkg/TestClassicStringInterpolation.dec | 9 +- .../results/pkg/TestConvertedK2JOps.dec | 49 ++++++- .../testData/results/pkg/TestEnumClass.dec | 75 +++++----- .../results/pkg/TestNonInlineLambda.dec | 14 +- .../testData/results/pkg/TestObject.dec | 13 +- .../testData/results/pkg/TestPoorNames.dec | 14 +- .../results/pkg/TestStringInterpolation.dec | 9 +- .../testData/results/pkg/TestTopLevelKt.dec | 13 +- 10 files changed, 211 insertions(+), 115 deletions(-) diff --git a/plugins/kotlin/src/main/java/org/vineflower/kotlin/KotlinWriter.java b/plugins/kotlin/src/main/java/org/vineflower/kotlin/KotlinWriter.java index d36284a438..ed0e91a525 100644 --- a/plugins/kotlin/src/main/java/org/vineflower/kotlin/KotlinWriter.java +++ b/plugins/kotlin/src/main/java/org/vineflower/kotlin/KotlinWriter.java @@ -274,9 +274,6 @@ public void writeClass(ClassNode node, TextBuffer buffer, int indent) { TextBuffer innerBuffer = new TextBuffer(); boolean hasContent = false; - boolean enumFields = false; - - List components = cl.getRecordComponents(); Set fieldsToIgnore = new HashSet<>(); Set methodsToIgnore = new HashSet<>(); @@ -315,71 +312,37 @@ public void writeClass(ClassNode node, TextBuffer buffer, int indent) { methodsToIgnore.addAll(companionFunctions.keySet()); } - // FIXME: fields don't have line mappings // fields + List components = cl.getRecordComponents(); - // Find the last field marked as an enum - int maxEnumIdx = 0; - for (int i = 0; i < cl.getFields().size(); i++) { - StructField fd = cl.getFields().get(i); - boolean isEnum = fd.hasModifier(CodeConstants.ACC_ENUM) && DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_ENUM); - if (isEnum) { - maxEnumIdx = i; - } - } - - List deferredEnumFields = new ArrayList<>(); + List enumFields = new ArrayList<>(); + List nonEnumFields = new ArrayList<>(); - // Find any regular fields mixed in with the enum fields - // This is invalid but allowed in bytecode. - for (int i = 0; i < cl.getFields().size(); i++) { - StructField fd = cl.getFields().get(i); + for (StructField fd : cl.getFields()) { boolean isEnum = fd.hasModifier(CodeConstants.ACC_ENUM) && DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_ENUM); - if (i < maxEnumIdx && !isEnum) { - deferredEnumFields.add(fd); + if (isEnum) { + enumFields.add(fd); + } else if (!fieldsToIgnore.contains(fd)) { + nonEnumFields.add(fd); } } - for (StructField fd : cl.getFields()) { - boolean hide = fd.isSynthetic() && DecompilerContext.getOption(IFernflowerPreferences.REMOVE_SYNTHETIC) || - wrapper.getHiddenMembers().contains(InterpreterUtil.makeUniqueKey(fd.getName(), fd.getDescriptor())) || - deferredEnumFields.contains(fd) || - fieldsToIgnore.contains(fd); - if (hide) continue; - - if (components != null && fd.getAccessFlags() == (CodeConstants.ACC_FINAL | CodeConstants.ACC_PRIVATE) && - components.stream().anyMatch(c -> c.getName().equals(fd.getName()) && c.getDescriptor().equals(fd.getDescriptor()))) { - // Record component field: skip it - continue; + boolean enums = false; + for (StructField fd : enumFields) { + if (enums) { + innerBuffer.append(',').appendLineSeparator(); } + enums = true; - boolean isEnum = fd.hasModifier(CodeConstants.ACC_ENUM) && DecompilerContext.getOption(IFernflowerPreferences.DECOMPILE_ENUM); - if (isEnum) { - if (enumFields) { - innerBuffer.append(',').appendLineSeparator(); - } - enumFields = true; - } else if (enumFields) { - innerBuffer.append(';'); - innerBuffer.appendLineSeparator(); - innerBuffer.appendLineSeparator(); - enumFields = false; - } - - if (propertyData == null || enumFields) { // Enum fields are not considered Kotlin properties - TextBuffer fieldBuffer = new TextBuffer(); - writeField(wrapper, cl, fd, fieldBuffer, indent + 1); - fieldBuffer.clearUnassignedBytecodeMappingData(); - innerBuffer.append(fieldBuffer); + writeField(innerBuffer, indent, fd, wrapper); + hasContent = true; + } - hasContent = true; - } + if (enums) { + innerBuffer.append(';').appendLineSeparator(); } if (propertyData != null) { - // Any deferred fields that are property fields should be removed to prevent duplication - deferredEnumFields.removeAll(propertyData.associatedFields()); - boolean addedLineAtEnd = false; for (KProperty prop : propertyData.properties()) { if (hasContent) { @@ -394,7 +357,14 @@ public void writeClass(ClassNode node, TextBuffer buffer, int indent) { innerBuffer.appendLineSeparator(); } - innerBuffer.append(propBuffer); + StructField fd = prop.underlyingField(); + if (fd != null) { + nonEnumFields.remove(fd); + String initializer = fd.hasModifier(CodeConstants.ACC_STATIC) ? " ()V" : " ()V"; + innerBuffer.append(propBuffer, cl.qualifiedName, initializer); + } else { + innerBuffer.append(propBuffer); + } if (isMultiline) { innerBuffer.appendLineSeparator(); @@ -407,14 +377,25 @@ public void writeClass(ClassNode node, TextBuffer buffer, int indent) { if (!addedLineAtEnd && !propertyData.properties().isEmpty()) { innerBuffer.appendLineSeparator(); } - } + } else { + for (StructField fd : nonEnumFields) { + boolean hide = fd.isSynthetic() && DecompilerContext.getOption(IFernflowerPreferences.REMOVE_SYNTHETIC) || + wrapper.getHiddenMembers().contains(InterpreterUtil.makeUniqueKey(fd.getName(), fd.getDescriptor())); + if (hide) continue; - // If any fields remaining were deferred but not enum fields, re-add them - for (StructField fd2 : deferredEnumFields) { - TextBuffer fieldBuffer = new TextBuffer(); - writeField(wrapper, cl, fd2, fieldBuffer, indent + 1); - fieldBuffer.clearUnassignedBytecodeMappingData(); - innerBuffer.append(fieldBuffer); + if (components != null && fd.getAccessFlags() == (CodeConstants.ACC_FINAL | CodeConstants.ACC_PRIVATE) && + components.stream().anyMatch(c -> c.getName().equals(fd.getName()) && c.getDescriptor().equals(fd.getDescriptor()))) { + // Record component field: skip it + continue; + } + + DecompilerContext.getLogger().writeMessage("Non-enum field " + fd.getName() + " is not associated with Kotlin property", IFernflowerLogger.Severity.WARN); + + TextBuffer fieldBuffer = new TextBuffer(); + writeField(wrapper, wrapper.getClassStruct(), fd, fieldBuffer, indent + 1); + String initializer = fd.hasModifier(CodeConstants.ACC_STATIC) ? " ()V" : " ()V"; + innerBuffer.append(fieldBuffer, wrapper.getClassStruct().qualifiedName, initializer); + } } // methods @@ -526,7 +507,13 @@ private void writeKotlinFile(ClassNode node, TextBuffer buffer, int indent, KPro buffer.appendLineSeparator(); } - buffer.append(propBuffer); + StructField fd = prop.underlyingField(); + if (fd != null) { + String initializer = fd.hasModifier(CodeConstants.ACC_STATIC) ? " ()V" : " ()V"; + buffer.append(propBuffer, cl.qualifiedName, initializer); + } else { + buffer.append(propBuffer); + } if (isMultiline) { buffer.appendLineSeparator(); @@ -543,11 +530,7 @@ private void writeKotlinFile(ClassNode node, TextBuffer buffer, int indent, KPro for (StructField fd : cl.getFields()) { if (propertyData.associatedFields().contains(fd)) continue; - - TextBuffer fieldBuffer = new TextBuffer(); - writeField(wrapper, cl, fd, fieldBuffer, indent); - fieldBuffer.clearUnassignedBytecodeMappingData(); - buffer.append(fieldBuffer); + writeField(buffer, indent, fd, wrapper); } for (int i = 0; i < cl.getMethods().size(); i++) { @@ -827,6 +810,13 @@ private void writeClassDefinition(ClassNode node, TextBuffer buffer, int indent, buffer.popNewlineGroup(); } + private void writeField(TextBuffer buffer, int indent, StructField fd, ClassWrapper wrapper) { + TextBuffer fieldBuffer = new TextBuffer(); + writeField(wrapper, wrapper.getClassStruct(), fd, fieldBuffer, indent + 1); + String initializer = fd.hasModifier(CodeConstants.ACC_STATIC) ? " ()V" : " ()V"; + buffer.append(fieldBuffer, wrapper.getClassStruct().qualifiedName, initializer); + } + public void writeField(ClassWrapper wrapper, StructClass cl, StructField fd, TextBuffer buffer, int indent) { boolean isInterface = cl.hasModifier(CodeConstants.ACC_INTERFACE); boolean isDeprecated = fd.hasAttribute(StructGeneralAttribute.ATTRIBUTE_DEPRECATED); diff --git a/plugins/kotlin/src/main/java/org/vineflower/kotlin/struct/KProperty.java b/plugins/kotlin/src/main/java/org/vineflower/kotlin/struct/KProperty.java index 19af9023e1..d06b4ac28f 100644 --- a/plugins/kotlin/src/main/java/org/vineflower/kotlin/struct/KProperty.java +++ b/plugins/kotlin/src/main/java/org/vineflower/kotlin/struct/KProperty.java @@ -99,7 +99,7 @@ public TextBuffer stringify(int indent) { if (initializer != null) { TextBuffer initializerBuf = initializer.toJava(indent); - initializerBuf.clearUnassignedBytecodeMappingData(); +// initializerBuf.clearUnassignedBytecodeMappingData(); if (flags.isDelegated) { buf.append(" by ") .append(initializerBuf); diff --git a/plugins/kotlin/testData/results/pkg/TestClassicStringInterpolation.dec b/plugins/kotlin/testData/results/pkg/TestClassicStringInterpolation.dec index 3db3470b98..2ea4602d33 100644 --- a/plugins/kotlin/testData/results/pkg/TestClassicStringInterpolation.dec +++ b/plugins/kotlin/testData/results/pkg/TestClassicStringInterpolation.dec @@ -1,7 +1,7 @@ package pkg public class TestClassicStringInterpolation { - public final val x: Int = 5 + public final val x: Int = 5// 16 public fun stringInterpolation(x: Int, y: String) { System.out.println("$x $y");// 5 @@ -25,6 +25,10 @@ public class TestClassicStringInterpolation { } class 'pkg/TestClassicStringInterpolation' { + method ' ()V' { + 5 3 + } + method 'stringInterpolation (ILjava/lang/String;)V' { d 6 16 6 @@ -111,7 +115,10 @@ Lines mapping: 10 <-> 12 13 <-> 15 14 <-> 16 +16 <-> 4 18 <-> 19 19 <-> 20 22 <-> 23 23 <-> 24 +Not mapped: +3 diff --git a/plugins/kotlin/testData/results/pkg/TestConvertedK2JOps.dec b/plugins/kotlin/testData/results/pkg/TestConvertedK2JOps.dec index 90296c1415..4e3bc80685 100644 --- a/plugins/kotlin/testData/results/pkg/TestConvertedK2JOps.dec +++ b/plugins/kotlin/testData/results/pkg/TestConvertedK2JOps.dec @@ -1,9 +1,9 @@ package pkg public class TestConvertedK2JOps { - public final val list: List = CollectionsKt.listOf(new java.lang.String[]{"a", "b", "c"}) - public final val set: Set = SetsKt.setOf(new java.lang.String[]{"a", "b", "c"}) - public final val map: Map = MapsKt.mapOf(new Pair[]{TuplesKt.to("a", "b"), TuplesKt.to("c", "d")}) + public final val list: List = CollectionsKt.listOf(new java.lang.String[]{"a", "b", "c"})// 4 + public final val set: Set = SetsKt.setOf(new java.lang.String[]{"a", "b", "c"})// 5 + public final val map: Map = MapsKt.mapOf(new Pair[]{TuplesKt.to("a", "b"), TuplesKt.to("c", "d")})// 6 public final val any: Any = new Object() public fun codeConstructs() { @@ -12,6 +12,44 @@ public class TestConvertedK2JOps { } class 'pkg/TestConvertedK2JOps' { + method ' ()V' { + c 3 + d 3 + 11 3 + 12 3 + 16 3 + 17 3 + 1a 3 + 1b 3 + 1c 3 + 28 4 + 29 4 + 2d 4 + 2e 4 + 32 4 + 33 4 + 36 4 + 37 4 + 38 4 + 44 5 + 45 5 + 46 5 + 47 5 + 48 5 + 49 5 + 4a 5 + 4e 5 + 4f 5 + 50 5 + 51 5 + 52 5 + 53 5 + 54 5 + 57 5 + 58 5 + 59 5 + } + method 'codeConstructs ()V' { 0 9 1 9 @@ -26,7 +64,12 @@ class 'pkg/TestConvertedK2JOps' { } Lines mapping: +4 <-> 4 +5 <-> 5 +6 <-> 6 10 <-> 10 12 <-> 11 Not mapped: +3 +7 11 diff --git a/plugins/kotlin/testData/results/pkg/TestEnumClass.dec b/plugins/kotlin/testData/results/pkg/TestEnumClass.dec index 2c18eebd20..104d55f9a7 100644 --- a/plugins/kotlin/testData/results/pkg/TestEnumClass.dec +++ b/plugins/kotlin/testData/results/pkg/TestEnumClass.dec @@ -6,8 +6,7 @@ public enum class TestEnumClass(number: Int = 4) { A(0, 1, null), B(0, 1, null), C(3), - D(5); - + D(5);// 4 public final val number: Int @@ -33,47 +32,59 @@ public enum class TestEnumClass(number: Int = 4) { class 'pkg/TestEnumClass' { method ' (Ljava/lang/String;II)V' { - 6 14 + 6 13 7 4 - 8 14 - 9 14 - a 14 - b 15 + 8 13 + 9 13 + a 13 + b 14 + } + + method ' ()V' { + 7 5 + 8 5 + 9 5 + 17 6 + 18 6 + 19 6 + 27 7 + 35 8 } method 'foo ()I' { - 0 18 - 1 18 - 2 18 - 3 18 - 4 18 + 0 17 + 1 17 + 2 17 + 3 17 + 4 17 } method 'getEntries ()Lkotlin/enums/EnumEntries;' { - 0 23 - 1 23 - 2 23 - 3 23 + 0 22 + 1 22 + 2 22 + 3 22 } method '$values ()[Lpkg/TestEnumClass;' { - 7 29 - 8 29 - 9 29 - d 29 - e 29 - f 29 - 13 29 - 14 29 - 15 29 - 19 29 - 1a 29 - 1b 29 - 1e 29 + 7 28 + 8 28 + 9 28 + d 28 + e 28 + f 28 + 13 28 + 14 28 + 15 28 + 19 28 + 1a 28 + 1b 28 + 1e 28 } } Lines mapping: -3 <-> 15 -7 <-> 19 -8 <-> 24 +3 <-> 14 +4 <-> 9 +7 <-> 18 +8 <-> 23 diff --git a/plugins/kotlin/testData/results/pkg/TestNonInlineLambda.dec b/plugins/kotlin/testData/results/pkg/TestNonInlineLambda.dec index acde601823..3665e2c397 100644 --- a/plugins/kotlin/testData/results/pkg/TestNonInlineLambda.dec +++ b/plugins/kotlin/testData/results/pkg/TestNonInlineLambda.dec @@ -7,11 +7,11 @@ public open class TestNonInlineLambda { public final var intField: Int internal set - public final var stringField: String = "" + public final var stringField: String = ""// 120 internal set private final var privateIntField: Int - private final var privateStringField: String = "" + private final var privateStringField: String = ""// 132 public fun testCaptureInt(x: Int) { this.execute(TestNonInlineLambda::testCaptureInt$lambda$0);// 8 @@ -247,6 +247,13 @@ public open class TestNonInlineLambda { } class 'pkg/TestNonInlineLambda' { + method ' ()V' { + 5 9 + 6 9 + b 13 + c 13 + } + method 'testCaptureInt (I)V' { 2 16 9 16 @@ -1064,13 +1071,16 @@ Lines mapping: 112 <-> 79 117 <-> 226 118 <-> 83 +120 <-> 10 123 <-> 232 124 <-> 87 129 <-> 238 130 <-> 91 +132 <-> 14 135 <-> 244 136 <-> 95 141 <-> 98 Not mapped: +3 7 14 diff --git a/plugins/kotlin/testData/results/pkg/TestObject.dec b/plugins/kotlin/testData/results/pkg/TestObject.dec index bedcb7eaf3..3e56b07790 100644 --- a/plugins/kotlin/testData/results/pkg/TestObject.dec +++ b/plugins/kotlin/testData/results/pkg/TestObject.dec @@ -1,8 +1,8 @@ package pkg public object TestObject { - private final var objectVar: Int = 42 - public final val objectVal: Regex = new Regex("") + private final var objectVar: Int = 42// 8 + public final val objectVal: Regex = new Regex("")// 10 public const val objectConstVal: Int = 926 public fun objectFun() { @@ -16,6 +16,13 @@ public object TestObject { } class 'pkg/TestObject' { + method ' ()V' { + a 3 + b 3 + 13 4 + 14 4 + } + method 'objectFun ()V' { 5 8 7 8 @@ -37,5 +44,7 @@ class 'pkg/TestObject' { Lines mapping: 5 <-> 9 6 <-> 10 +8 <-> 4 +10 <-> 5 16 <-> 14 17 <-> 15 diff --git a/plugins/kotlin/testData/results/pkg/TestPoorNames.dec b/plugins/kotlin/testData/results/pkg/TestPoorNames.dec index a3b46aed08..f2136d13c0 100644 --- a/plugins/kotlin/testData/results/pkg/TestPoorNames.dec +++ b/plugins/kotlin/testData/results/pkg/TestPoorNames.dec @@ -1,8 +1,8 @@ package pkg public class TestPoorNames { - public final val `Property with spaces`: Int = 42 - public final val `Dangerous property name?!`: String = "test" + public final val `Property with spaces`: Int = 42// 10 + public final val `Dangerous property name?!`: String = "test"// 11 public fun `Function with spaces`() { }// 5 @@ -26,6 +26,13 @@ public class TestPoorNames { } class 'pkg/TestPoorNames' { + method ' ()V' { + 5 3 + 6 3 + b 4 + c 4 + } + method 'Function with spaces ()V' { 0 7 } @@ -62,10 +69,13 @@ class 'pkg/TestPoorNames' { Lines mapping: 5 <-> 8 8 <-> 11 +10 <-> 4 +11 <-> 5 14 <-> 14 17 <-> 17 23 <-> 21 24 <-> 22 25 <-> 23 Not mapped: +3 22 diff --git a/plugins/kotlin/testData/results/pkg/TestStringInterpolation.dec b/plugins/kotlin/testData/results/pkg/TestStringInterpolation.dec index 7b85a0933b..c0794a932a 100644 --- a/plugins/kotlin/testData/results/pkg/TestStringInterpolation.dec +++ b/plugins/kotlin/testData/results/pkg/TestStringInterpolation.dec @@ -1,7 +1,7 @@ package pkg public class TestStringInterpolation { - public final val x: Int = 5 + public final val x: Int = 5// 16 public fun stringInterpolation(x: Int, y: String) { System.out.println("$x $y");// 5 @@ -25,6 +25,10 @@ public class TestStringInterpolation { } class 'pkg/TestStringInterpolation' { + method ' ()V' { + 5 3 + } + method 'stringInterpolation (ILjava/lang/String;)V' { 6 6 7 6 @@ -121,7 +125,10 @@ Lines mapping: 10 <-> 12 13 <-> 15 14 <-> 16 +16 <-> 4 18 <-> 19 19 <-> 20 22 <-> 23 23 <-> 24 +Not mapped: +3 diff --git a/plugins/kotlin/testData/results/pkg/TestTopLevelKt.dec b/plugins/kotlin/testData/results/pkg/TestTopLevelKt.dec index 5ad80d02c3..89a057cce4 100644 --- a/plugins/kotlin/testData/results/pkg/TestTopLevelKt.dec +++ b/plugins/kotlin/testData/results/pkg/TestTopLevelKt.dec @@ -1,9 +1,9 @@ package pkg -public final var topLevelVar: Int = 42 +public final var topLevelVar: Int = 42// 7 internal set -public final val topLevelVal: Regex = new Regex("") +public final val topLevelVal: Regex = new Regex("")// 9 public const val topLevelConstVal: Int = 926 public fun topLevelFun() { @@ -15,6 +15,13 @@ public fun interpolateTopLevel() { }// 16 class 'pkg/TestTopLevelKt' { + method ' ()V' { + 0 2 + 1 2 + 9 5 + a 5 + } + method 'topLevelFun ()V' { 2 9 } @@ -48,6 +55,8 @@ class 'pkg/TestTopLevelKt' { Lines mapping: 5 <-> 10 +7 <-> 3 +9 <-> 6 14 <-> 13 15 <-> 14 16 <-> 15 From b53c1b877b80b56e037fe3202ad2ed2ea7e20f20 Mon Sep 17 00:00:00 2001 From: sschr15 Date: Wed, 18 Jun 2025 22:56:42 -0500 Subject: [PATCH 4/4] Revert failing tests These reverted versions fail on my machine, but Actions might think otherwise --- .../pkg/TestSwitchPatternMatching13.dec | 92 +++++++++---------- .../pkg/TestSwitchPatternMatching14.dec | 30 +++--- .../pkg/TestSwitchPatternMatching15.dec | 42 ++++----- .../pkg/TestSwitchPatternMatching16.dec | 80 ++++++++-------- .../TestSwitchPatternMatchingInstanceof4.dec | 29 +++--- 5 files changed, 137 insertions(+), 136 deletions(-) diff --git a/testData/results/pkg/TestSwitchPatternMatching13.dec b/testData/results/pkg/TestSwitchPatternMatching13.dec index 20d07fc533..e248295089 100644 --- a/testData/results/pkg/TestSwitchPatternMatching13.dec +++ b/testData/results/pkg/TestSwitchPatternMatching13.dec @@ -114,18 +114,15 @@ class 'pkg/TestSwitchPatternMatching13' { 51 15 52 15 53 15 - 54 15 - 55 15 - 56 15 57 15 58 15 59 15 5a 15 5b 15 - 5c 16 - 63 17 - 64 17 - 65 17 + 5c 15 + 5d 15 + 5e 15 + 5f 16 66 17 67 17 68 17 @@ -134,18 +131,18 @@ class 'pkg/TestSwitchPatternMatching13' { 6b 17 6c 17 6d 17 - 76 18 - 77 18 - 78 18 + 6e 17 + 6f 17 + 70 17 79 18 7a 18 7b 18 7c 18 7d 18 - 7e 19 - 85 20 - 86 20 - 87 20 + 7e 18 + 7f 18 + 80 18 + 81 19 88 20 89 20 8a 20 @@ -154,81 +151,84 @@ class 'pkg/TestSwitchPatternMatching13' { 8d 20 8e 20 8f 20 - 98 21 - 99 21 - 9a 21 + 90 20 + 91 20 + 92 20 9b 21 9c 21 9d 21 9e 21 9f 21 - a0 23 - a1 23 - a2 23 + a0 21 + a1 21 + a2 21 a3 23 a4 23 a5 23 a6 23 - aa 24 - ab 24 - ac 24 + a7 23 + a8 23 + a9 23 ad 24 ae 24 af 24 b0 24 b1 24 - b9 27 - ba 27 - bb 28 - bc 28 - bd 28 + b2 24 + b3 24 + b4 24 + bc 27 + bd 27 be 28 bf 28 c0 28 c1 28 c2 28 - c3 29 - c4 29 - c5 29 + c3 28 + c4 28 + c5 28 c6 29 c7 29 c8 29 c9 29 ca 29 - cb 32 - cc 32 - cd 32 + cb 29 + cc 29 + cd 29 ce 32 cf 32 d0 32 d1 32 d2 32 - d3 33 - d6 6 - d7 6 - d8 6 + d3 32 + d4 32 + d5 32 + d6 33 d9 6 da 6 db 6 dc 6 dd 6 - de 7 - df 7 - e0 7 + de 6 + df 6 + e0 6 e1 7 e2 7 e3 7 e4 7 e5 7 - e9 35 - ea 35 - eb 35 + e6 7 + e7 7 + e8 7 ec 35 ed 35 ee 35 ef 35 f0 35 - f4 37 + f1 35 + f2 35 + f3 35 + f7 37 } } @@ -261,4 +261,4 @@ Lines mapping: 28 <-> 8 32 <-> 36 34 <-> 38 -44 <-> 47 +44 <-> 47 \ No newline at end of file diff --git a/testData/results/pkg/TestSwitchPatternMatching14.dec b/testData/results/pkg/TestSwitchPatternMatching14.dec index 122b4c2783..f084f5f625 100644 --- a/testData/results/pkg/TestSwitchPatternMatching14.dec +++ b/testData/results/pkg/TestSwitchPatternMatching14.dec @@ -81,40 +81,40 @@ class 'pkg/TestSwitchPatternMatching14' { 39 15 3a 15 3b 15 - 3c 15 - 3d 15 - 3e 15 3f 15 40 15 41 15 42 15 43 15 - 44 16 - 47 6 - 48 6 - 49 6 + 44 15 + 45 15 + 46 15 + 47 16 4a 6 4b 6 4c 6 4d 6 4e 6 - 4f 7 - 50 7 - 51 7 + 4f 6 + 50 6 + 51 6 52 7 53 7 54 7 55 7 56 7 - 5a 18 - 5b 18 - 5c 18 + 57 7 + 58 7 + 59 7 5d 18 5e 18 5f 18 60 18 61 18 - 62 20 + 62 18 + 63 18 + 64 18 + 65 20 } } @@ -136,4 +136,4 @@ Lines mapping: 14 <-> 8 18 <-> 19 20 <-> 21 -30 <-> 30 +30 <-> 30 \ No newline at end of file diff --git a/testData/results/pkg/TestSwitchPatternMatching15.dec b/testData/results/pkg/TestSwitchPatternMatching15.dec index 00cfa209ab..232e4444b4 100644 --- a/testData/results/pkg/TestSwitchPatternMatching15.dec +++ b/testData/results/pkg/TestSwitchPatternMatching15.dec @@ -98,43 +98,43 @@ class 'pkg/TestSwitchPatternMatching15' { 65 12 66 12 67 12 - 68 12 - 69 12 - 6a 12 6b 12 6c 12 6d 12 6e 12 6f 12 - 70 13 - 77 14 - 78 14 - 79 15 - 7a 15 - 7b 15 + 70 12 + 71 12 + 72 12 + 73 13 + 7a 14 + 7b 14 7c 15 7d 15 7e 15 7f 15 80 15 - 81 16 - 88 17 - 89 17 - 8a 18 - 8b 18 - 8c 18 + 81 15 + 82 15 + 83 15 + 84 16 + 8b 17 + 8c 17 8d 18 8e 18 8f 18 90 18 91 18 - 92 18 - 93 18 - 94 18 95 18 96 18 - 97 19 - 9d 22 + 97 18 + 98 18 + 99 18 + 9a 18 + 9b 18 + 9c 18 + 9d 19 + a3 22 } } @@ -154,4 +154,4 @@ Lines mapping: 17 <-> 20 21 <-> 23 Not mapped: -19 +19 \ No newline at end of file diff --git a/testData/results/pkg/TestSwitchPatternMatching16.dec b/testData/results/pkg/TestSwitchPatternMatching16.dec index ac90bca278..e435dcc8ab 100644 --- a/testData/results/pkg/TestSwitchPatternMatching16.dec +++ b/testData/results/pkg/TestSwitchPatternMatching16.dec @@ -104,64 +104,64 @@ class 'pkg/TestSwitchPatternMatching16' { 65 12 66 12 67 12 - 68 12 - 69 12 - 6a 12 6b 12 6c 12 6d 12 6e 12 6f 12 - 70 13 - 77 14 - 78 14 - 79 15 - 7a 15 - 7b 15 - 80 22 - 81 22 - 82 23 - 83 23 - 84 23 + 70 12 + 71 12 + 72 12 + 73 13 + 7a 14 + 7b 14 + 7c 15 + 7d 15 + 7e 15 + 83 22 + 84 22 85 23 86 23 87 23 88 23 89 23 - 8a 23 - 8b 23 - 8c 23 8d 23 8e 23 - 8f 24 - 92 26 - 93 26 - 94 26 - 95 26 - 96 26 - 97 26 + 8f 23 + 90 23 + 91 23 + 92 23 + 93 23 + 94 23 + 95 24 98 26 99 26 - 9d 15 - 9e 15 - 9f 15 - a0 15 + 9a 26 + 9b 26 + 9c 26 + 9d 26 + 9e 26 + 9f 26 a3 15 a4 15 a5 15 - a7 16 - a8 16 - a9 17 - aa 17 - ae 19 - af 19 - b0 19 - b1 19 - b2 19 - b3 19 + a6 15 + a9 15 + aa 15 + ab 15 + ad 16 + ae 16 + af 17 + b0 17 b4 19 b5 19 - b6 28 + b6 19 + b7 19 + b8 19 + b9 19 + ba 19 + bb 19 + bc 28 } } @@ -185,4 +185,4 @@ Lines mapping: 38 <-> 29 Not mapped: 27 -34 +34 \ No newline at end of file diff --git a/testData/results/pkg/TestSwitchPatternMatchingInstanceof4.dec b/testData/results/pkg/TestSwitchPatternMatchingInstanceof4.dec index b8eb47d23b..9624d618a7 100644 --- a/testData/results/pkg/TestSwitchPatternMatchingInstanceof4.dec +++ b/testData/results/pkg/TestSwitchPatternMatchingInstanceof4.dec @@ -73,23 +73,24 @@ class 'pkg/TestSwitchPatternMatchingInstanceof4' { 51 9 57 9 58 9 - 5a 9 - 5b 9 5c 9 5d 9 - 5e 9 - 5f 9 - 60 9 - 66 10 - 69 12 - 6a 12 - 6b 12 - 6c 12 - 6d 12 - 6e 12 + 61 9 + 62 9 + 63 9 + 64 9 + 65 9 + 66 9 + 6c 10 6f 12 70 12 - 74 14 + 71 12 + 72 12 + 73 12 + 74 12 + 75 12 + 76 12 + 7a 14 } } @@ -97,4 +98,4 @@ Lines mapping: 5 <-> 7 6 <-> 9 7 <-> 13 -9 <-> 15 +9 <-> 15 \ No newline at end of file