aboutsummaryrefslogtreecommitdiff
path: root/common/src/test/java/com
diff options
context:
space:
mode:
authorbcorso <bcorso@google.com>2019-11-13 07:49:10 -0800
committerChris Povirk <beigetangerine@gmail.com>2019-11-13 13:47:34 -0500
commit7db5511b899278f2f6daa4ea6f3e748bb7b84f64 (patch)
tree737387f97060387c203bfcc74af4307c3134f08a /common/src/test/java/com
parent37dac1e64194764d54245d31f9d1bc13f9508a61 (diff)
downloadauto-7db5511b899278f2f6daa4ea6f3e748bb7b84f64.tar.gz
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
Diffstat (limited to 'common/src/test/java/com')
-rw-r--r--common/src/test/java/com/google/auto/common/MoreTypesTest.java9
1 files changed, 9 insertions, 0 deletions
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<Number> {}
private static class ChildB extends Parent<String> {}
private static class GenericChild<T> extends Parent<T> {}
+ 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();