Skip to content

Commit e3b28ed

Browse files
committed
Fix stack variable
1 parent d6436aa commit e3b28ed

File tree

2 files changed

+57
-58
lines changed

2 files changed

+57
-58
lines changed

src/org/jetbrains/java/decompiler/modules/decompiler/MethodReferenceHelper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ private static boolean removeInstanceAssignment(Statement stat, int i, Exprent e
256256
&& assign instanceof AssignmentExprent stackAssign
257257
&& stackVar.equalsVersions(stackAssign.getLeft())) {
258258
newExp.getConstructor().setInstance(stackAssign.getRight());
259+
newExp.getConstructor().getLstParameters().set(0, stackAssign.getRight());
259260
stat.getExprents().remove(i - 1);
260261
stat.getExprents().remove(i - 2);
261262
return true;

testData/results/pkg/TestMethodReferenceJ25.dec

Lines changed: 56 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import java.util.function.BiConsumer;
44
import java.util.function.BiFunction;
55

66
public class TestMethodReferenceJ25 {
7-
// $VF: Variable merging failed for merge VarExprent[10000,0]: {var10000}. Code has semantic differences!
87
protected void test() {
9-
Object var10000;
108
BiFunction<Object, Object, Object> c1 = this.getThis()::test1;// 8
119
BiFunction<Object, Object, Object> c2 = this.getThis()::test2;// 9
1210
BiFunction<Object, Object, Object> c3 = this.getThis()::test3;// 10
@@ -44,86 +42,86 @@ public class TestMethodReferenceJ25 {
4442

4543
class 'pkg/TestMethodReferenceJ25' {
4644
method 'test ()V' {
47-
0 9
48-
1 9
49-
2 9
50-
3 9
51-
10 9
52-
11 10
53-
12 10
54-
13 10
55-
14 10
56-
21 10
57-
22 11
58-
23 11
59-
24 11
60-
25 11
61-
34 11
62-
35 12
63-
36 12
64-
37 12
65-
38 12
66-
43 12
67-
44 12
68-
4a 13
69-
4b 13
70-
4c 14
71-
4d 14
72-
4e 14
73-
4f 14
74-
5e 14
75-
5f 14
76-
60 15
45+
0 7
46+
1 7
47+
2 7
48+
3 7
49+
10 7
50+
11 8
51+
12 8
52+
13 8
53+
14 8
54+
21 8
55+
22 9
56+
23 9
57+
24 9
58+
25 9
59+
34 9
60+
35 10
61+
36 10
62+
37 10
63+
38 10
64+
43 10
65+
44 10
66+
4a 11
67+
4b 11
68+
4c 12
69+
4d 12
70+
4e 12
71+
4f 12
72+
5e 12
73+
5f 12
74+
60 13
7775
}
7876

7977
method '<init> ([Ljava/lang/Object;)V' {
80-
4 18
78+
4 16
8179
}
8280

8381
method 'test1 ([Ljava/lang/Object;)Ljava/lang/Object;' {
84-
0 21
85-
1 21
82+
0 19
83+
1 19
8684
}
8785

8886
method 'test2 (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;' {
89-
0 25
90-
1 25
87+
0 23
88+
1 23
9189
}
9290

9391
method 'test3 (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;' {
94-
0 29
95-
1 29
92+
0 27
93+
1 27
9694
}
9795

9896
method 'test4 (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;' {
99-
0 33
100-
1 33
97+
0 31
98+
1 31
10199
}
102100

103101
method 'test5 ([Ljava/lang/Object;)V' {
104-
0 37
102+
0 35
105103
}
106104

107105
method 'getThis ()Lpkg/TestMethodReferenceJ25;' {
108-
0 40
109-
1 40
106+
0 38
107+
1 38
110108
}
111109
}
112110

113111
Lines mapping:
114-
8 <-> 10
115-
9 <-> 11
116-
10 <-> 12
117-
11 <-> 13
118-
12 <-> 14
119-
13 <-> 15
120-
14 <-> 16
121-
18 <-> 19
122-
21 <-> 22
123-
25 <-> 26
124-
29 <-> 30
125-
33 <-> 34
126-
37 <-> 38
127-
40 <-> 41
112+
8 <-> 8
113+
9 <-> 9
114+
10 <-> 10
115+
11 <-> 11
116+
12 <-> 12
117+
13 <-> 13
118+
14 <-> 14
119+
18 <-> 17
120+
21 <-> 20
121+
25 <-> 24
122+
29 <-> 28
123+
33 <-> 32
124+
37 <-> 36
125+
40 <-> 39
128126
Not mapped:
129127
16

0 commit comments

Comments
 (0)