Hello,
Currently when a primitive type is annotated with a `@Documented`
annotation, the fqn of the annotation(s)
is always included in the resulting javadoc, and links aren't properly
inserted. For example,
``
public abstract void
foo(@org.checkerframework.checker.signedness.qual.Unsigned int bar);
``
The `bar` parameter, in the resulting javadoc, is documented with the fqn
`org.checkerframework.checker.signedness.qual.Unsigned` annotation, instead
of just `Unsigned` with a link
to the annotation.
This patch fixes
jdk.javadoc.internal.doclets.formats.html.HtmlLinkFactory::getLink() by
introducing special
handling for primitive types that takes their use annotation into account,
and prints the simple type name.
Note that the type name is currently being derived using
PrimitiveType::getKind() instead of
utils::getTypeName(), this is because the toString() for the default case
in getTypeName() will always include
the annotations, which we want to avoid. I didn't modify
utils::getTypeName() since I wasn't sure if a primitive
specific visit method would mess with any expected behavior.
Cheers,
Al
diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java
index 52da85ce375..d18825522c9 100644
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java
@@ -29,6 +29,7 @@ import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
+import java.util.Locale;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.Element;
@@ -39,6 +40,7 @@ import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.type.TypeVariable;
import javax.lang.model.type.WildcardType;
+import javax.lang.model.type.PrimitiveType;
import javax.lang.model.util.SimpleTypeVisitor14;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
@@ -177,6 +179,13 @@ public class HtmlLinkFactory {
return link;
}
+ @Override
+ public Content visitPrimitive(PrimitiveType type, HtmlLinkInfo linkInfo) {
+ link.add(getTypeAnnotationLinks(linkInfo));
+ link.add(type.getKind().toString().toLowerCase(Locale.ROOT));
+ return link;
+ }
+
@Override
public Content visitDeclared(DeclaredType type, HtmlLinkInfo linkInfo) {
TypeMirror enc = type.getEnclosingType();