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();

Reply via email to