diff options
author | Sorin Basca <sorinbasca@google.com> | 2023-04-11 14:21:36 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-04-11 14:21:36 +0000 |
commit | b97eaae8eea657f43dfcb414f86619aca643882f (patch) | |
tree | aca21afa4301729c7b9f79d84c88378e9f0b32e4 | |
parent | 09bf66b2e7d4025981246494cd83b95ccca7e152 (diff) | |
parent | e2ca2833fdc37f0e0e0a545d9501f40d014170e5 (diff) | |
download | doclava-b97eaae8eea657f43dfcb414f86619aca643882f.tar.gz |
Merge "Implement TypeVariable.bounds" am: e2ca2833fd
Original change: https://android-review.googlesource.com/c/platform/external/doclava/+/2523130
Change-Id: I3bbb5f20ecf2f8ce1078f1f770dc48875eaa56e4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | doclet_adapter/src/main/java/com/google/doclava/javadoc/TypeVariableImpl.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/doclet_adapter/src/main/java/com/google/doclava/javadoc/TypeVariableImpl.java b/doclet_adapter/src/main/java/com/google/doclava/javadoc/TypeVariableImpl.java index ccc8aab..5695ce5 100644 --- a/doclet_adapter/src/main/java/com/google/doclava/javadoc/TypeVariableImpl.java +++ b/doclet_adapter/src/main/java/com/google/doclava/javadoc/TypeVariableImpl.java @@ -33,11 +33,15 @@ import com.sun.javadoc.ProgramElementDoc; import com.sun.javadoc.Type; import com.sun.javadoc.TypeVariable; import java.util.Objects; +import java.util.stream.Stream; +import javax.lang.model.type.IntersectionType; import javax.lang.model.type.TypeMirror; +import javax.lang.model.util.SimpleTypeVisitor8; class TypeVariableImpl extends TypeImpl implements TypeVariable { private final javax.lang.model.type.TypeVariable typeVariable; + private Type[] bounds; protected TypeVariableImpl(javax.lang.model.type.TypeVariable typeVariable, Context context) { super(typeVariable, context); @@ -53,7 +57,19 @@ class TypeVariableImpl extends TypeImpl implements TypeVariable { @Override @Used(implemented = true) public Type[] bounds() { - return new Type[0]; + if (bounds == null) { + TypeMirror bound = typeVariable.getUpperBound(); + bounds = bound.accept(new SimpleTypeVisitor8<Stream<? extends TypeMirror>, Void>(Stream.of(bound)) { + @Override + public Stream<? extends TypeMirror> visitIntersection(IntersectionType t, Void o) { + return t.getBounds().stream(); + } + }, null) + .map(typeMirror -> TypeImpl.create(typeMirror, context)) + .filter(type -> !type.qualifiedTypeName().equals("java.lang.Object")) + .toArray(Type[]::new); + } + return bounds; } @Override |