2929import java .util .function .Supplier ;
3030
3131public class Deduplication {
32+ void groupEquals (Object ... xs ) {}
33+ void groupNotEquals (Object ... xs ) {}
3234 void group (Object ... xs ) {}
3335
3436 void test () {
3537
36- group (
38+ groupEquals (
3739 (Runnable ) () -> { ( (Runnable ) () -> {} ).run (); },
3840 (Runnable ) () -> { ( (Runnable ) () -> {} ).run (); }
3941 );
4042
41- group (
43+ groupEquals (
4244 (Runnable ) () -> { Deduplication .class .toString (); },
4345 (Runnable ) () -> { Deduplication .class .toString (); }
4446 );
4547
46- group (
48+ groupEquals (
4749 (Runnable ) () -> { Integer [].class .toString (); },
4850 (Runnable ) () -> { Integer [].class .toString (); }
4951 );
5052
51- group (
53+ groupEquals (
5254 (Runnable ) () -> { char .class .toString (); },
5355 (Runnable ) () -> { char .class .toString (); }
5456 );
5557
56- group (
58+ groupEquals (
5759 (Runnable ) () -> { Void .class .toString (); },
5860 (Runnable ) () -> { Void .class .toString (); }
5961 );
6062
61- group (
63+ groupEquals (
6264 (Runnable ) () -> { void .class .toString (); },
6365 (Runnable ) () -> { void .class .toString (); }
6466 );
6567
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 ());
6870
6971 {
7072 int x = 1 ;
71- group ((Supplier <Integer >) () -> x + 1 );
73+ groupEquals ((Supplier <Integer >) () -> x + 1 );
7274 }
7375 {
7476 int x = 1 ;
75- group ((Supplier <Integer >) () -> x + 1 );
77+ groupEquals ((Supplier <Integer >) () -> x + 1 );
7678 }
77- group (
79+ groupEquals (
7880 (BiFunction <Integer , Integer , ?>) (x , y ) -> x + ((y )),
7981 (BiFunction <Integer , Integer , ?>) (x , y ) -> x + (y ),
8082 (BiFunction <Integer , Integer , ?>) (x , y ) -> x + y ,
@@ -85,29 +87,29 @@ void test() {
8587 (BiFunction <Integer , Integer , ?>) (x , y ) -> ((x )) + (y ),
8688 (BiFunction <Integer , Integer , ?>) (x , y ) -> ((x )) + y );
8789
88- group (
90+ groupEquals (
8991 (Function <Integer , Integer >) x -> x + (1 + 2 + 3 ),
9092 (Function <Integer , Integer >) x -> x + 6 );
9193
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 );
9395
94- group ((Consumer <Integer >) x -> this .f (), (Consumer <Integer >) x -> this .f ());
96+ groupEquals ((Consumer <Integer >) x -> this .f (), (Consumer <Integer >) x -> this .f ());
9597
96- group ((Consumer <Integer >) y -> this .g ());
98+ groupEquals ((Consumer <Integer >) y -> this .g ());
9799
98- group ((Consumer <Integer >) x -> f (), (Consumer <Integer >) x -> f ());
100+ groupEquals ((Consumer <Integer >) x -> f (), (Consumer <Integer >) x -> f ());
99101
100- group ((Consumer <Integer >) y -> g ());
102+ groupEquals ((Consumer <Integer >) y -> g ());
101103
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 );
103105
104- group ((Function <Integer , Integer >) y -> this .j );
106+ groupEquals ((Function <Integer , Integer >) y -> this .j );
105107
106- group ((Function <Integer , Integer >) x -> i , (Function <Integer , Integer >) x -> i );
108+ groupEquals ((Function <Integer , Integer >) x -> i , (Function <Integer , Integer >) x -> i );
107109
108- group ((Function <Integer , Integer >) y -> j );
110+ groupEquals ((Function <Integer , Integer >) y -> j );
109111
110- group (
112+ groupEquals (
111113 (Function <Integer , Integer >)
112114 y -> {
113115 while (true ) {
@@ -123,7 +125,7 @@ void test() {
123125 return 42 ;
124126 });
125127
126- group (
128+ groupEquals (
127129 (Function <Integer , Integer >)
128130 x -> {
129131 int y = x ;
@@ -135,13 +137,13 @@ void test() {
135137 return y ;
136138 });
137139
138- group (
140+ groupEquals (
139141 (Function <Integer , Integer >)
140142 x -> {
141143 int y = 0 , z = x ;
142144 return y ;
143145 });
144- group (
146+ groupEquals (
145147 (Function <Integer , Integer >)
146148 x -> {
147149 int y = 0 , z = x ;
@@ -154,24 +156,41 @@ class Local {
154156 void f () {}
155157
156158 {
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 ());
161163 }
162164 }
163165
164- group ((Function <Integer , Integer >) x -> switch (x ) { default : yield x ; },
166+ groupEquals ((Function <Integer , Integer >) x -> switch (x ) { default : yield x ; },
165167 (Function <Integer , Integer >) x -> switch (x ) { default : yield x ; });
166168
167- group ((Function <Object , Integer >) x -> x instanceof Integer i ? i : -1 ,
169+ groupEquals ((Function <Object , Integer >) x -> x instanceof Integer i ? i : -1 ,
168170 (Function <Object , Integer >) x -> x instanceof Integer i ? i : -1 );
169171
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 ,
171173 (Function <Object , Integer >) x -> x instanceof R (var i1 , var i2 ) ? i1 : -1 );
172174
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 ,
174176 (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 ; });
175194 }
176195
177196 void f () {}
0 commit comments