From 7db5511b899278f2f6daa4ea6f3e748bb7b84f64 Mon Sep 17 00:00:00 2001 From: bcorso Date: Wed, 13 Nov 2019 07:49:10 -0800 Subject: Optimize MoreTypes.nonObjectSuperclass This CL tries to avoid using expensive method calls like Elements#getTypeElement, TypeElement#getKind(), and Types#directSupertypes. Of all of these, TypeElement#getKind() had the largest cost because it requires symbol completion. In addition, getKind() was being called on unnecessarily on all supertypes, even though only the first type can possibly be an ElementKind.CLASS. RELNOTES=N/A ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=280196697 --- common/src/test/java/com/google/auto/common/MoreTypesTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'common/src/test/java/com') diff --git a/common/src/test/java/com/google/auto/common/MoreTypesTest.java b/common/src/test/java/com/google/auto/common/MoreTypesTest.java index 84bcb9d3..5b8d33f8 100644 --- a/common/src/test/java/com/google/auto/common/MoreTypesTest.java +++ b/common/src/test/java/com/google/auto/common/MoreTypesTest.java @@ -281,6 +281,7 @@ public class MoreTypesTest { private static class ChildA extends Parent {} private static class ChildB extends Parent {} private static class GenericChild extends Parent {} + private interface InterfaceType {} @Test public void asElement_throws() { @@ -317,7 +318,15 @@ public class MoreTypesTest { TypeElement genericChild = elements.getTypeElement(GenericChild.class.getCanonicalName()); TypeMirror genericChildOfNumber = types.getDeclaredType(genericChild, numberType); TypeMirror genericChildOfInteger = types.getDeclaredType(genericChild, integerType); + TypeMirror objectType = + elements.getTypeElement(Object.class.getCanonicalName()).asType(); + TypeMirror interfaceType = + elements.getTypeElement(InterfaceType.class.getCanonicalName()).asType(); + assertThat(MoreTypes.nonObjectSuperclass(types, elements, (DeclaredType) objectType)) + .isAbsent(); + assertThat(MoreTypes.nonObjectSuperclass(types, elements, (DeclaredType) interfaceType)) + .isAbsent(); assertThat(MoreTypes.nonObjectSuperclass(types, elements, (DeclaredType) parent.asType())) .isAbsent(); -- cgit v1.2.3