diff --git a/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java b/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java index f3f63f295c4..4759a346d18 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java @@ -884,8 +884,6 @@ public class Checker extends DocTreePathScanner { String sig = tree.getSignature(); if (sig.contains("<") || sig.contains(">")) { env.messages.error(REFERENCE, tree, "dc.type.arg.not.allowed"); - } else if (isArrayType(sig)) { - env.messages.error(REFERENCE, tree, "dc.array.type.not.allowed"); } else { Element e = env.trees.getElement(getCurrentPath()); if (e == null) @@ -975,12 +973,6 @@ public class Checker extends DocTreePathScanner { return scan(tree.getDescription(), ignore); } - private boolean isArrayType(String signature) { - int brackets = signature.indexOf('['); - int parens = signature.indexOf('('); - return brackets >= 0 && (parens < 0 || brackets < parens); - } - private boolean isThrowable(TypeMirror tm) { switch (tm.getKind()) { case DECLARED: diff --git a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties index 56afea1aea4..221cb3573c8 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties @@ -25,7 +25,6 @@ dc.anchor.already.defined = anchor already defined: "{0}" dc.anchor.value.missing = no value given for anchor -dc.array.type.not.allowed = array type not allowed here dc.attr.lacks.value = attribute lacks value dc.attr.not.number = attribute value is not a number dc.attr.not.supported.html4 = attribute not supported in HTML4: {0} diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java index 13af71d65f4..b70d88f70c7 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java @@ -443,11 +443,7 @@ public class JavacTrees extends DocTrees { // we first check if qualifierExpression identifies a type, // and if not, then we check to see if it identifies a package. Type t = attr.attribType(ref.qualifierExpression, env); - - if (t.getKind() == TypeKind.ARRAY) { - // cannot refer to an array type - return null; - } else if (t.isErroneous()) { + if (t.isErroneous()) { JCCompilationUnit toplevel = treeMaker.TopLevel(List.nil()); final ModuleSymbol msym = modules.getDefaultModule(); @@ -478,7 +474,11 @@ public class JavacTrees extends DocTrees { } } } else { - tsym = t.tsym; + Type e = t; + // If this is an array type convert to element type + while (e instanceof ArrayType) + e = ((ArrayType)e).elemtype; + tsym = e.tsym; memberName = (Name) ref.memberName; } } diff --git a/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java b/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java index 1e9df13cb51..9440d63e59f 100644 --- a/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java +++ b/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java @@ -95,7 +95,7 @@ public class TestSeeTag extends JavadocTester { checkOutput("badref/Test.html", true, "
\n" + "
See Also:
\n" - + "
Object[], \n" + + "
Object, \n" + "Foo
\n" + "
"); } diff --git a/test/langtools/jdk/javadoc/doclet/testSerializedForm/SerializedForm.java b/test/langtools/jdk/javadoc/doclet/testSerializedForm/SerializedForm.java index cf0f7febd3a..f25fc680078 100644 --- a/test/langtools/jdk/javadoc/doclet/testSerializedForm/SerializedForm.java +++ b/test/langtools/jdk/javadoc/doclet/testSerializedForm/SerializedForm.java @@ -31,13 +31,15 @@ public class SerializedForm implements Serializable { /** * @serialField name String a test + * @serialField longs Long[] the longs * @see TestSerializedForm */ @Deprecated private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField("i", int.class), new ObjectStreamField("count", Integer.TYPE), - new ObjectStreamField("name", String.class) + new ObjectStreamField("name", String.class), + new ObjectStreamField("longs", Long[].class) }; /** diff --git a/test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java b/test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java index 496eec4ed38..d6aa23a349f 100644 --- a/test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java +++ b/test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java @@ -84,6 +84,19 @@ public class TestSerializedForm extends JavadocTester { + "pkg1.ProtectedInnerClass.ProInnerClass extends java.lang.Object implements Serializable", "

Class pkg1.PublicExcludeInnerClass.PubInnerClass extends java.lang.Object implements " + "Serializable

"); + + checkOutput("serialized-form.html", true, + "

Serialized Fields

\n" + + "