File tree Expand file tree Collapse file tree 2 files changed +34
-2
lines changed
android/guava-testlib/src/com/google/common/testing
guava-testlib/src/com/google/common/testing Expand file tree Collapse file tree 2 files changed +34
-2
lines changed Original file line number Diff line number Diff line change 2929import java .io .Serializable ;
3030import java .lang .reflect .Method ;
3131import java .lang .reflect .Proxy ;
32+ import java .util .Iterator ;
3233import java .util .LinkedHashSet ;
3334import java .util .Set ;
3435import org .jspecify .annotations .NullMarked ;
@@ -50,7 +51,22 @@ abstract class DummyProxy {
5051 */
5152 final <T > T newProxy (TypeToken <T > interfaceType ) {
5253 Set <Class <?>> interfaceClasses = new LinkedHashSet <>();
53- interfaceClasses .addAll (interfaceType .getTypes ().interfaces ().rawTypes ());
54+ Set <Class <? super T >> allInterfaceClasses = interfaceType .getTypes ().interfaces ().rawTypes ();
55+ for (Class <? super T > itf : allInterfaceClasses ) {
56+ Iterator <Class <?>> iterator = interfaceClasses .iterator ();
57+ boolean addToSet = true ;
58+ while (iterator .hasNext ()) {
59+ Class <?> current = iterator .next ();
60+ if (current == itf || itf .isAssignableFrom (current )) {
61+ // Skip any super interface of the ones that are already included.
62+ addToSet = false ;
63+ break ;
64+ }
65+ }
66+ if (addToSet ) {
67+ interfaceClasses .add (itf );
68+ }
69+ }
5470 // Make the proxy serializable to work with SerializableTester
5571 interfaceClasses .add (Serializable .class );
5672 Object dummy =
Original file line number Diff line number Diff line change 2929import java .io .Serializable ;
3030import java .lang .reflect .Method ;
3131import java .lang .reflect .Proxy ;
32+ import java .util .Iterator ;
3233import java .util .LinkedHashSet ;
3334import java .util .Set ;
3435import org .jspecify .annotations .NullMarked ;
@@ -50,7 +51,22 @@ abstract class DummyProxy {
5051 */
5152 final <T > T newProxy (TypeToken <T > interfaceType ) {
5253 Set <Class <?>> interfaceClasses = new LinkedHashSet <>();
53- interfaceClasses .addAll (interfaceType .getTypes ().interfaces ().rawTypes ());
54+ Set <Class <? super T >> allInterfaceClasses = interfaceType .getTypes ().interfaces ().rawTypes ();
55+ for (Class <? super T > itf : allInterfaceClasses ) {
56+ Iterator <Class <?>> iterator = interfaceClasses .iterator ();
57+ boolean addToSet = true ;
58+ while (iterator .hasNext ()) {
59+ Class <?> current = iterator .next ();
60+ if (current == itf || itf .isAssignableFrom (current )) {
61+ // Skip any super interface of the ones that are already included.
62+ addToSet = false ;
63+ break ;
64+ }
65+ }
66+ if (addToSet ) {
67+ interfaceClasses .add (itf );
68+ }
69+ }
5470 // Make the proxy serializable to work with SerializableTester
5571 interfaceClasses .add (Serializable .class );
5672 Object dummy =
You can’t perform that action at this time.
0 commit comments