summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSorin Basca <sorinbasca@google.com>2023-04-11 14:21:36 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-04-11 14:21:36 +0000
commitb97eaae8eea657f43dfcb414f86619aca643882f (patch)
treeaca21afa4301729c7b9f79d84c88378e9f0b32e4
parent09bf66b2e7d4025981246494cd83b95ccca7e152 (diff)
parente2ca2833fdc37f0e0e0a545d9501f40d014170e5 (diff)
downloaddoclava-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.java18
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