29
29
import java .util .function .Supplier ;
30
30
31
31
public class Deduplication {
32
+ void groupEquals (Object ... xs ) {}
33
+ void groupNotEquals (Object ... xs ) {}
32
34
void group (Object ... xs ) {}
33
35
34
36
void test () {
35
37
36
- group (
38
+ groupEquals (
37
39
(Runnable ) () -> { ( (Runnable ) () -> {} ).run (); },
38
40
(Runnable ) () -> { ( (Runnable ) () -> {} ).run (); }
39
41
);
40
42
41
- group (
43
+ groupEquals (
42
44
(Runnable ) () -> { Deduplication .class .toString (); },
43
45
(Runnable ) () -> { Deduplication .class .toString (); }
44
46
);
45
47
46
- group (
48
+ groupEquals (
47
49
(Runnable ) () -> { Integer [].class .toString (); },
48
50
(Runnable ) () -> { Integer [].class .toString (); }
49
51
);
50
52
51
- group (
53
+ groupEquals (
52
54
(Runnable ) () -> { char .class .toString (); },
53
55
(Runnable ) () -> { char .class .toString (); }
54
56
);
55
57
56
- group (
58
+ groupEquals (
57
59
(Runnable ) () -> { Void .class .toString (); },
58
60
(Runnable ) () -> { Void .class .toString (); }
59
61
);
60
62
61
- group (
63
+ groupEquals (
62
64
(Runnable ) () -> { void .class .toString (); },
63
65
(Runnable ) () -> { void .class .toString (); }
64
66
);
65
67
66
- group ((Function <String , Integer >) x -> x .hashCode ());
67
- group ((Function <Object , Integer >) x -> x .hashCode ());
68
+ groupEquals ((Function <String , Integer >) x -> x .hashCode ());
69
+ groupEquals ((Function <Object , Integer >) x -> x .hashCode ());
68
70
69
71
{
70
72
int x = 1 ;
71
- group ((Supplier <Integer >) () -> x + 1 );
73
+ groupEquals ((Supplier <Integer >) () -> x + 1 );
72
74
}
73
75
{
74
76
int x = 1 ;
75
- group ((Supplier <Integer >) () -> x + 1 );
77
+ groupEquals ((Supplier <Integer >) () -> x + 1 );
76
78
}
77
- group (
79
+ groupEquals (
78
80
(BiFunction <Integer , Integer , ?>) (x , y ) -> x + ((y )),
79
81
(BiFunction <Integer , Integer , ?>) (x , y ) -> x + (y ),
80
82
(BiFunction <Integer , Integer , ?>) (x , y ) -> x + y ,
@@ -85,29 +87,29 @@ void test() {
85
87
(BiFunction <Integer , Integer , ?>) (x , y ) -> ((x )) + (y ),
86
88
(BiFunction <Integer , Integer , ?>) (x , y ) -> ((x )) + y );
87
89
88
- group (
90
+ groupEquals (
89
91
(Function <Integer , Integer >) x -> x + (1 + 2 + 3 ),
90
92
(Function <Integer , Integer >) x -> x + 6 );
91
93
92
- group ((Function <Integer , Integer >) x -> x + 1 , (Function <Integer , Integer >) y -> y + 1 );
94
+ groupEquals ((Function <Integer , Integer >) x -> x + 1 , (Function <Integer , Integer >) y -> y + 1 );
93
95
94
- group ((Consumer <Integer >) x -> this .f (), (Consumer <Integer >) x -> this .f ());
96
+ groupEquals ((Consumer <Integer >) x -> this .f (), (Consumer <Integer >) x -> this .f ());
95
97
96
- group ((Consumer <Integer >) y -> this .g ());
98
+ groupEquals ((Consumer <Integer >) y -> this .g ());
97
99
98
- group ((Consumer <Integer >) x -> f (), (Consumer <Integer >) x -> f ());
100
+ groupEquals ((Consumer <Integer >) x -> f (), (Consumer <Integer >) x -> f ());
99
101
100
- group ((Consumer <Integer >) y -> g ());
102
+ groupEquals ((Consumer <Integer >) y -> g ());
101
103
102
- group ((Function <Integer , Integer >) x -> this .i , (Function <Integer , Integer >) x -> this .i );
104
+ groupEquals ((Function <Integer , Integer >) x -> this .i , (Function <Integer , Integer >) x -> this .i );
103
105
104
- group ((Function <Integer , Integer >) y -> this .j );
106
+ groupEquals ((Function <Integer , Integer >) y -> this .j );
105
107
106
- group ((Function <Integer , Integer >) x -> i , (Function <Integer , Integer >) x -> i );
108
+ groupEquals ((Function <Integer , Integer >) x -> i , (Function <Integer , Integer >) x -> i );
107
109
108
- group ((Function <Integer , Integer >) y -> j );
110
+ groupEquals ((Function <Integer , Integer >) y -> j );
109
111
110
- group (
112
+ groupEquals (
111
113
(Function <Integer , Integer >)
112
114
y -> {
113
115
while (true ) {
@@ -123,7 +125,7 @@ void test() {
123
125
return 42 ;
124
126
});
125
127
126
- group (
128
+ groupEquals (
127
129
(Function <Integer , Integer >)
128
130
x -> {
129
131
int y = x ;
@@ -135,13 +137,13 @@ void test() {
135
137
return y ;
136
138
});
137
139
138
- group (
140
+ groupEquals (
139
141
(Function <Integer , Integer >)
140
142
x -> {
141
143
int y = 0 , z = x ;
142
144
return y ;
143
145
});
144
- group (
146
+ groupEquals (
145
147
(Function <Integer , Integer >)
146
148
x -> {
147
149
int y = 0 , z = x ;
@@ -154,24 +156,41 @@ class Local {
154
156
void f () {}
155
157
156
158
{
157
- group ((Function <Integer , Integer >) x -> this .i );
158
- group ((Consumer <Integer >) x -> this .f ());
159
- group ((Function <Integer , Integer >) x -> Deduplication .this .i );
160
- group ((Consumer <Integer >) x -> Deduplication .this .f ());
159
+ groupEquals ((Function <Integer , Integer >) x -> this .i );
160
+ groupEquals ((Consumer <Integer >) x -> this .f ());
161
+ groupEquals ((Function <Integer , Integer >) x -> Deduplication .this .i );
162
+ groupEquals ((Consumer <Integer >) x -> Deduplication .this .f ());
161
163
}
162
164
}
163
165
164
- group ((Function <Integer , Integer >) x -> switch (x ) { default : yield x ; },
166
+ groupEquals ((Function <Integer , Integer >) x -> switch (x ) { default : yield x ; },
165
167
(Function <Integer , Integer >) x -> switch (x ) { default : yield x ; });
166
168
167
- group ((Function <Object , Integer >) x -> x instanceof Integer i ? i : -1 ,
169
+ groupEquals ((Function <Object , Integer >) x -> x instanceof Integer i ? i : -1 ,
168
170
(Function <Object , Integer >) x -> x instanceof Integer i ? i : -1 );
169
171
170
- group ((Function <Object , Integer >) x -> x instanceof R (var i1 , var i2 ) ? i1 : -1 ,
172
+ groupEquals ((Function <Object , Integer >) x -> x instanceof R (var i1 , var i2 ) ? i1 : -1 ,
171
173
(Function <Object , Integer >) x -> x instanceof R (var i1 , var i2 ) ? i1 : -1 );
172
174
173
- group ((Function <Object , Integer >) x -> x instanceof R (Integer i1 , int i2 ) ? i2 : -1 ,
175
+ groupEquals ((Function <Object , Integer >) x -> x instanceof R (Integer i1 , int i2 ) ? i2 : -1 ,
174
176
(Function <Object , Integer >) x -> x instanceof R (Integer i1 , int i2 ) ? i2 : -1 );
177
+
178
+ groupEquals ((Function <Object , Integer >) x -> x instanceof int i2 ? i2 : -1 ,
179
+ (Function <Object , Integer >) x -> x instanceof int i2 ? i2 : -1 );
180
+
181
+ groupEquals ((Function <Object , Integer >) x -> switch (x ) { case String s -> s .length (); default -> -1 ; },
182
+ (Function <Object , Integer >) x -> switch (x ) { case String s -> s .length (); default -> -1 ; });
183
+
184
+ groupEquals ((Function <Object , Integer >) x -> {
185
+ int y1 = -1 ;
186
+ return y1 ;
187
+ },
188
+ (Function <Object , Integer >) x -> {
189
+ int y2 = -1 ;
190
+ return y2 ;
191
+ });
192
+
193
+ groupNotEquals ((Function <Object , Integer >) x -> {class C {} new C (); return 42 ; }, (Function <Object , Integer >) x -> {class C {} new C (); return 42 ; });
175
194
}
176
195
177
196
void f () {}
0 commit comments