diff options
author | bcorso <bcorso@google.com> | 2019-11-13 07:49:10 -0800 |
---|---|---|
committer | Chris Povirk <beigetangerine@gmail.com> | 2019-11-13 13:47:34 -0500 |
commit | 7db5511b899278f2f6daa4ea6f3e748bb7b84f64 (patch) | |
tree | 737387f97060387c203bfcc74af4307c3134f08a /common/src/test/java/com | |
parent | 37dac1e64194764d54245d31f9d1bc13f9508a61 (diff) | |
download | auto-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.java | 9 |
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(); |