Fix the generic class information in the documentation
If a parameter is defined like the following, the information about the items type defined for the param itself (not for each container type) should be included in the documentation:
@Param(
// ...
allowedTypes = {
@ParamType(type = Container1.class),
@ParamType(type = Container2.class),
},
generic1 = Item.class,
)
PiperOrigin-RevId: 179053750
diff --git a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkParamDoc.java b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkParamDoc.java
index aa5d85a..d61aef6 100644
--- a/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkParamDoc.java
+++ b/src/main/java/com/google/devtools/build/docgen/skylark/SkylarkParamDoc.java
@@ -43,10 +43,13 @@
StringBuilder sb = new StringBuilder();
for (int i = 0; i < param.allowedTypes().length; i++) {
ParamType paramType = param.allowedTypes()[i];
- if (paramType.generic1().equals(Object.class)) {
+ // Use the paramType's generic class if provided, otherwise the param's generic class
+ Class<?> generic =
+ paramType.generic1() == Object.class ? param.generic1() : paramType.generic1();
+ if (generic.equals(Object.class)) {
sb.append(getTypeAnchor(paramType.type()));
} else {
- sb.append(getTypeAnchor(paramType.type(), paramType.generic1()));
+ sb.append(getTypeAnchor(paramType.type(), generic));
}
if (i < param.allowedTypes().length - 1) {
sb.append("; or ");