mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
8009686: Generated javadoc documentation should be able to display type annotation on an array
Reviewed-by: jjg
This commit is contained in:
parent
3044b19d21
commit
56d97d6507
13 changed files with 237 additions and 43 deletions
|
@ -95,15 +95,6 @@ public interface ExecutableMemberDoc extends MemberDoc {
|
||||||
*/
|
*/
|
||||||
Type receiverType();
|
Type receiverType();
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the receiver annotations of this executable element.
|
|
||||||
* Return an empty array if there are none.
|
|
||||||
*
|
|
||||||
* @return the receiver annotations of this executable element.
|
|
||||||
* @since 1.8
|
|
||||||
*/
|
|
||||||
AnnotationDesc[] receiverAnnotations();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the throws tags in this method.
|
* Return the throws tags in this method.
|
||||||
*
|
*
|
||||||
|
|
|
@ -160,4 +160,13 @@ public interface Type {
|
||||||
* @since 1.5
|
* @since 1.5
|
||||||
*/
|
*/
|
||||||
AnnotationTypeDoc asAnnotationTypeDoc();
|
AnnotationTypeDoc asAnnotationTypeDoc();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this type is an array type, return the element type of the
|
||||||
|
* array. Otherwise, return null.
|
||||||
|
*
|
||||||
|
* @return a <code>Type</code> representing the element type or null.
|
||||||
|
* @since 1.8
|
||||||
|
*/
|
||||||
|
Type getElementType();
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,9 +157,9 @@ public class LinkFactoryImpl extends LinkFactory {
|
||||||
if (!isFirst) {
|
if (!isFirst) {
|
||||||
linkInfo.displayLength += 1;
|
linkInfo.displayLength += 1;
|
||||||
output.append(" ");
|
output.append(" ");
|
||||||
isFirst = false;
|
|
||||||
}
|
}
|
||||||
output.append(anno);
|
output.append(anno);
|
||||||
|
isFirst = false;
|
||||||
}
|
}
|
||||||
if (!annos.isEmpty()) {
|
if (!annos.isEmpty()) {
|
||||||
linkInfo.displayLength += 1;
|
linkInfo.displayLength += 1;
|
||||||
|
|
|
@ -60,6 +60,13 @@ public class LinkOutputImpl implements LinkOutput {
|
||||||
(String) o : ((LinkOutputImpl)o).toString());
|
(String) o : ((LinkOutputImpl)o).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public void insert(int offset, Object o) {
|
||||||
|
output.insert(offset, o.toString());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -61,7 +61,7 @@ public abstract class LinkFactory {
|
||||||
//Just a primitive.
|
//Just a primitive.
|
||||||
linkInfo.displayLength += type.typeName().length();
|
linkInfo.displayLength += type.typeName().length();
|
||||||
linkOutput.append(type.typeName());
|
linkOutput.append(type.typeName());
|
||||||
} else if (type.asAnnotatedType() != null) {
|
} else if (type.asAnnotatedType() != null && type.dimension().length() == 0) {
|
||||||
linkOutput.append(getTypeAnnotationLinks(linkInfo));
|
linkOutput.append(getTypeAnnotationLinks(linkInfo));
|
||||||
linkInfo.type = type.asAnnotatedType().underlyingType();
|
linkInfo.type = type.asAnnotatedType().underlyingType();
|
||||||
linkOutput.append(getLinkOutput(linkInfo));
|
linkOutput.append(getLinkOutput(linkInfo));
|
||||||
|
@ -141,8 +141,21 @@ public abstract class LinkFactory {
|
||||||
linkInfo.displayLength += 3;
|
linkInfo.displayLength += 3;
|
||||||
linkOutput.append("...");
|
linkOutput.append("...");
|
||||||
} else {
|
} else {
|
||||||
linkInfo.displayLength += type.dimension().length();
|
while (type != null && type.dimension().length() > 0) {
|
||||||
linkOutput.append(type.dimension());
|
linkInfo.displayLength += type.dimension().length();
|
||||||
|
if (type.asAnnotatedType() != null) {
|
||||||
|
linkInfo.type = type;
|
||||||
|
linkOutput.append(" ");
|
||||||
|
linkOutput.append(getTypeAnnotationLinks(linkInfo));
|
||||||
|
linkOutput.append("[]");
|
||||||
|
type = type.asAnnotatedType().underlyingType().getElementType();
|
||||||
|
} else {
|
||||||
|
linkOutput.append("[]");
|
||||||
|
type = type.getElementType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
linkInfo.type = type;
|
||||||
|
linkOutput.insert(0, getTypeAnnotationLinks(linkInfo));
|
||||||
}
|
}
|
||||||
return linkOutput;
|
return linkOutput;
|
||||||
} else if (linkInfo.classDoc != null) {
|
} else if (linkInfo.classDoc != null) {
|
||||||
|
|
|
@ -44,4 +44,12 @@ public interface LinkOutput {
|
||||||
* @param o the object to append.
|
* @param o the object to append.
|
||||||
*/
|
*/
|
||||||
public void append(Object o);
|
public void append(Object o);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert the given object into the output sequence.
|
||||||
|
*
|
||||||
|
* @param offset the offset.
|
||||||
|
* @param o the object to be inserted.
|
||||||
|
*/
|
||||||
|
public void insert(int offset, Object o);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,10 @@ abstract class AbstractTypeImpl implements com.sun.javadoc.Type {
|
||||||
return type.tsym.getQualifiedName().toString();
|
return type.tsym.getQualifiedName().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public com.sun.javadoc.Type getElementType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public String simpleTypeName() {
|
public String simpleTypeName() {
|
||||||
return type.tsym.name.toString();
|
return type.tsym.name.toString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,10 @@ public class ClassDocImpl extends ProgramElementDocImpl implements ClassDoc {
|
||||||
this.tsym = sym;
|
this.tsym = sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public com.sun.javadoc.Type getElementType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the flags in terms of javac's flags
|
* Returns the flags in terms of javac's flags
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -210,24 +210,6 @@ public abstract class ExecutableMemberDocImpl
|
||||||
return (recvtype != null) ? TypeMaker.getType(env, recvtype, false, true) : null;
|
return (recvtype != null) ? TypeMaker.getType(env, recvtype, false, true) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AnnotationDesc[] receiverAnnotations() {
|
|
||||||
// TODO: change how receiver annotations are output!
|
|
||||||
Type recvtype = sym.type.asMethodType().recvtype;
|
|
||||||
if (recvtype == null) {
|
|
||||||
return new AnnotationDesc[0];
|
|
||||||
}
|
|
||||||
if (!recvtype.isAnnotated()) {
|
|
||||||
return new AnnotationDesc[0];
|
|
||||||
}
|
|
||||||
List<? extends Compound> typeAnnos = ((com.sun.tools.javac.code.Type.AnnotatedType)recvtype).typeAnnotations;
|
|
||||||
AnnotationDesc result[] = new AnnotationDesc[typeAnnos.length()];
|
|
||||||
int i = 0;
|
|
||||||
for (Attribute.Compound a : typeAnnos) {
|
|
||||||
result[i++] = new AnnotationDescImpl(env, a);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the formal type parameters of this method or constructor.
|
* Return the formal type parameters of this method or constructor.
|
||||||
* Return an empty array if there are none.
|
* Return an empty array if there are none.
|
||||||
|
|
|
@ -63,6 +63,10 @@ class PrimitiveType implements com.sun.javadoc.Type {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public com.sun.javadoc.Type getElementType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return qualified name of type excluding any dimension information.
|
* Return qualified name of type excluding any dimension information.
|
||||||
*<p>
|
*<p>
|
||||||
|
|
|
@ -222,6 +222,10 @@ public class TypeMaker {
|
||||||
|
|
||||||
private com.sun.javadoc.Type skipArraysCache = null;
|
private com.sun.javadoc.Type skipArraysCache = null;
|
||||||
|
|
||||||
|
public com.sun.javadoc.Type getElementType() {
|
||||||
|
return TypeMaker.getType(env, env.types.elemtype(arrayType));
|
||||||
|
}
|
||||||
|
|
||||||
private com.sun.javadoc.Type skipArrays() {
|
private com.sun.javadoc.Type skipArrays() {
|
||||||
if (skipArraysCache == null) {
|
if (skipArraysCache == null) {
|
||||||
Type t;
|
Type t;
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @test
|
* @test
|
||||||
* @bug 8005091
|
* @bug 8005091 8009686
|
||||||
* @summary Make sure that type annotations are displayed correctly
|
* @summary Make sure that type annotations are displayed correctly
|
||||||
* @author Bhavesh Patel
|
* @author Bhavesh Patel
|
||||||
* @library ../lib/
|
* @library ../lib/
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
public class TestTypeAnnotations extends JavadocTester {
|
public class TestTypeAnnotations extends JavadocTester {
|
||||||
|
|
||||||
//Test information.
|
//Test information.
|
||||||
private static final String BUG_ID = "8005091";
|
private static final String BUG_ID = "8005091-8009686";
|
||||||
|
|
||||||
//Javadoc arguments.
|
//Javadoc arguments.
|
||||||
private static final String[] ARGS = new String[] {
|
private static final String[] ARGS = new String[] {
|
||||||
|
@ -45,18 +45,37 @@ public class TestTypeAnnotations extends JavadocTester {
|
||||||
private static final String[][] NEGATED_TEST = NO_TEST;
|
private static final String[][] NEGATED_TEST = NO_TEST;
|
||||||
private static final String[][] TEST = {
|
private static final String[][] TEST = {
|
||||||
// Test for type annotations on Class Extends (ClassExtends.java).
|
// Test for type annotations on Class Extends (ClassExtends.java).
|
||||||
|
/* @ignore 8012173
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "MyClass.html",
|
||||||
|
"extends <a href=\"../typeannos/ClassExtA.html\" title=\"annotation " +
|
||||||
|
"in typeannos\">@ClassExtA</a> <a href=\"../typeannos/ParameterizedClass.html\" " +
|
||||||
|
"title=\"class in typeannos\">ParameterizedClass</a><<a href=\"" +
|
||||||
|
"../typeannos/ClassExtB.html\" title=\"annotation in typeannos\">" +
|
||||||
|
"@ClassExtB</a> java.lang.String>"
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
/* @ignore 8012173
|
||||||
{BUG_ID + FS + "typeannos" + FS + "MyClass.html",
|
{BUG_ID + FS + "typeannos" + FS + "MyClass.html",
|
||||||
"implements <a href=\"../typeannos/ClassExtB.html\" title=\"" +
|
"implements <a href=\"../typeannos/ClassExtB.html\" title=\"" +
|
||||||
"annotation in typeannos\">@ClassExtB</a> java.lang.CharSequence, " +
|
"annotation in typeannos\">@ClassExtB</a> java.lang.CharSequence, " +
|
||||||
"<a href=\"../typeannos/ParameterizedInterface.html\" title=\"" +
|
"<a href=\"../typeannos/ClassExtA.html\" title=\"annotation in " +
|
||||||
"interface in typeannos\">ParameterizedInterface</a><java.lang.String></pre>"
|
"typeannos\">@ClassExtA</a> <a href=\"../typeannos/ParameterizedInterface.html\" " +
|
||||||
|
"title=\"interface in typeannos\">ParameterizedInterface</a><" +
|
||||||
|
"<a href=\"../typeannos/ClassExtB.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@ClassExtB</a> java.lang.String></pre>"
|
||||||
},
|
},
|
||||||
|
*/
|
||||||
|
/* @ignore 8012173
|
||||||
{BUG_ID + FS + "typeannos" + FS + "MyInterface.html",
|
{BUG_ID + FS + "typeannos" + FS + "MyInterface.html",
|
||||||
"extends <a href=\"../typeannos/ParameterizedInterface.html\" title" +
|
"extends <a href=\"../typeannos/ClassExtA.html\" title=\"annotation " +
|
||||||
"=\"interface in typeannos\">ParameterizedInterface</a><java." +
|
"in typeannos\">@ClassExtA</a> <a href=\"../typeannos/" +
|
||||||
"lang.String>, <a href=\"../typeannos/ClassExtB.html\" title=\"" +
|
"ParameterizedInterface.html\" title=\"interface in typeannos\">" +
|
||||||
"annotation in typeannos\">@ClassExtB</a> java.lang.CharSequence</pre>"
|
"ParameterizedInterface</a><<a href=\"../typeannos/ClassExtA.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@ClassExtA</a> java.lang.String>, " +
|
||||||
|
"<a href=\"../typeannos/ClassExtB.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@ClassExtB</a> java.lang.CharSequence</pre>"
|
||||||
},
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
// Test for type annotations on Class Parameters (ClassParameters.java).
|
// Test for type annotations on Class Parameters (ClassParameters.java).
|
||||||
{BUG_ID + FS + "typeannos" + FS + "ExtendsBound.html",
|
{BUG_ID + FS + "typeannos" + FS + "ExtendsBound.html",
|
||||||
|
@ -64,11 +83,21 @@ public class TestTypeAnnotations extends JavadocTester {
|
||||||
"href=\"../typeannos/ClassParamA.html\" title=\"annotation in " +
|
"href=\"../typeannos/ClassParamA.html\" title=\"annotation in " +
|
||||||
"typeannos\">@ClassParamA</a> java.lang.String></span>"
|
"typeannos\">@ClassParamA</a> java.lang.String></span>"
|
||||||
},
|
},
|
||||||
|
/* @ignore 8012173
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "ExtendsGeneric.html",
|
||||||
|
"<pre> class <span class=\"strong\">ExtendsGeneric<K extends " +
|
||||||
|
"<a href=\"../typeannos/ClassParamA.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@ClassParamA</a> <a href=\"../typeannos/Unannotated.html\" " +
|
||||||
|
"title=\"class in typeannos\">Unannotated</a><<a href=\"" +
|
||||||
|
"../typeannos/ClassParamB.html\" title=\"annotation in typeannos\">" +
|
||||||
|
"@ClassParamB</a> java.lang.String>></span>"
|
||||||
|
},
|
||||||
|
*/
|
||||||
{BUG_ID + FS + "typeannos" + FS + "TwoBounds.html",
|
{BUG_ID + FS + "typeannos" + FS + "TwoBounds.html",
|
||||||
"class <span class=\"strong\">TwoBounds<K extends <a href=\"" +
|
"<pre> class <span class=\"strong\">TwoBounds<K extends <a href=\"" +
|
||||||
"../typeannos/ClassParamA.html\" title=\"annotation in typeannos\">" +
|
"../typeannos/ClassParamA.html\" title=\"annotation in typeannos\">" +
|
||||||
"@ClassParamA</a> java.lang.String,V extends <a href=\"../typeannos" +
|
"@ClassParamA</a> java.lang.String,V extends <a href=\"../typeannos/" +
|
||||||
"/ClassParamB.html\" title=\"annotation in typeannos\">@ClassParamB" +
|
"ClassParamB.html\" title=\"annotation in typeannos\">@ClassParamB" +
|
||||||
"</a> java.lang.String></span>"
|
"</a> java.lang.String></span>"
|
||||||
},
|
},
|
||||||
{BUG_ID + FS + "typeannos" + FS + "Complex1.html",
|
{BUG_ID + FS + "typeannos" + FS + "Complex1.html",
|
||||||
|
@ -89,12 +118,86 @@ public class TestTypeAnnotations extends JavadocTester {
|
||||||
"</a> java.lang.Runnable></span>"
|
"</a> java.lang.Runnable></span>"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Test for type annotations on fields (Fields.java).
|
||||||
|
/* @ignore 8012173
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "DefaultScope.html",
|
||||||
|
"<pre><a href=\"../typeannos/Parameterized.html\" title=\"class in " +
|
||||||
|
"typeannos\">Parameterized</a><<a href=\"../typeannos/FldA.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@FldA</a> java.lang.String,<a " +
|
||||||
|
"href=\"../typeannos/FldB.html\" title=\"annotation in typeannos\">" +
|
||||||
|
"@FldB</a> java.lang.String> bothTypeArgs</pre>"
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "DefaultScope.html",
|
||||||
|
"<pre><a href=\"../typeannos/FldA.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@FldA</a> java.lang.String <a href=\"../typeannos/" +
|
||||||
|
"FldB.html\" title=\"annotation in typeannos\">@FldB</a> [] " +
|
||||||
|
"array1Deep</pre>"
|
||||||
|
},
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "DefaultScope.html",
|
||||||
|
"<pre>java.lang.String[] <a href=\"../typeannos/FldB.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@FldB</a> [] array2SecondOld</pre>"
|
||||||
|
},
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "DefaultScope.html",
|
||||||
|
"<pre><a href=\"../typeannos/FldD.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@FldD</a> java.lang.String <a href=\"../typeannos/" +
|
||||||
|
"FldC.html\" title=\"annotation in typeannos\">@FldC</a> <a href=\"" +
|
||||||
|
"../typeannos/FldA.html\" title=\"annotation in typeannos\">@FldA" +
|
||||||
|
"</a> [] <a href=\"../typeannos/FldC.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@FldC</a> <a href=\"../typeannos/FldB.html\" title=\"" +
|
||||||
|
"annotation in typeannos\">@FldB</a> [] array2Deep</pre>"
|
||||||
|
},
|
||||||
|
/* @ignore 8012173
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "ModifiedScoped.html",
|
||||||
|
"<pre>public final <a href=\"../typeannos/Parameterized.html\" " +
|
||||||
|
"title=\"class in typeannos\">Parameterized</a><<a href=\"../" +
|
||||||
|
"typeannos/FldA.html\" title=\"annotation in typeannos\">@FldA</a> " +
|
||||||
|
"<a href=\"../typeannos/Parameterized.html\" title=\"class in " +
|
||||||
|
"typeannos\">Parameterized</a><<a href=\"../typeannos/FldA.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@FldA</a> java.lang.String,<a " +
|
||||||
|
"href=\"../typeannos/FldB.html\" title=\"annotation in typeannos\">" +
|
||||||
|
"@FldB</a> java.lang.String>,<a href=\"../typeannos/FldB.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@FldB</a> java.lang.String> " +
|
||||||
|
"nestedParameterized</pre>"
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "ModifiedScoped.html",
|
||||||
|
"<pre>public final <a href=\"../typeannos/FldA.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@FldA</a> java.lang.String[][] " +
|
||||||
|
"array2</pre>"
|
||||||
|
},
|
||||||
|
|
||||||
// Test for type annotations on method return types (MethodReturnType.java).
|
// Test for type annotations on method return types (MethodReturnType.java).
|
||||||
{BUG_ID + FS + "typeannos" + FS + "MtdDefaultScope.html",
|
{BUG_ID + FS + "typeannos" + FS + "MtdDefaultScope.html",
|
||||||
"<pre>public <T> <a href=\"../typeannos/MRtnA.html\" " +
|
"<pre>public <T> <a href=\"../typeannos/MRtnA.html\" " +
|
||||||
"title=\"annotation in typeannos\">@MRtnA</a> java.lang.String" +
|
"title=\"annotation in typeannos\">@MRtnA</a> java.lang.String" +
|
||||||
" method()</pre>"
|
" method()</pre>"
|
||||||
},
|
},
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "MtdDefaultScope.html",
|
||||||
|
"<pre><a href=\"../typeannos/MRtnA.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@MRtnA</a> java.lang.String <a href=\"../typeannos/" +
|
||||||
|
"MRtnA.html\" title=\"annotation in typeannos\">@MRtnA</a> [] <a " +
|
||||||
|
"href=\"../typeannos/MRtnB.html\" title=\"annotation in typeannos\">" +
|
||||||
|
"@MRtnB</a> [] array2Deep()</pre>"
|
||||||
|
},
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "MtdDefaultScope.html",
|
||||||
|
"<pre><a href=\"../typeannos/MRtnA.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@MRtnA</a> java.lang.String[][] array2()</pre>"
|
||||||
|
},
|
||||||
|
/* @ignore 8012173
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "MtdModifiedScoped.html",
|
||||||
|
"<pre>public final <a href=\"../typeannos/MtdParameterized.html\" " +
|
||||||
|
"title=\"class in typeannos\">MtdParameterized</a><<a href=\"../" +
|
||||||
|
"typeannos/MRtnA.html\" title=\"annotation in typeannos\">@MRtnA</a> " +
|
||||||
|
"<a href=\"../typeannos/MtdParameterized.html\" title=\"class in " +
|
||||||
|
"typeannos\">MtdParameterized</a><<a href=\"../typeannos/MRtnA." +
|
||||||
|
"html\" title=\"annotation in typeannos\">@MRtnA</a> java.lang." +
|
||||||
|
"String,<a href=\"../typeannos/MRtnB.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@MRtnB</a> java.lang.String>,<a href=\"../typeannos/" +
|
||||||
|
"MRtnB.html\" title=\"annotation in typeannos\">@MRtnB</a> java." +
|
||||||
|
"lang.String> nestedMtdParameterized()</pre>"
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
// Test for type annotations on method type parameters (MethodTypeParameters.java).
|
// Test for type annotations on method type parameters (MethodTypeParameters.java).
|
||||||
{BUG_ID + FS + "typeannos" + FS + "UnscopedUnmodified.html",
|
{BUG_ID + FS + "typeannos" + FS + "UnscopedUnmodified.html",
|
||||||
|
@ -102,11 +205,63 @@ public class TestTypeAnnotations extends JavadocTester {
|
||||||
"annotation in typeannos\">@MTyParamA</a> java.lang.String>" +
|
"annotation in typeannos\">@MTyParamA</a> java.lang.String>" +
|
||||||
" void methodExtends()</pre>"
|
" void methodExtends()</pre>"
|
||||||
},
|
},
|
||||||
|
/* @ignore 8012173
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "UnscopedUnmodified.html",
|
||||||
|
"<pre><K extends <a href=\"../typeannos/MTyParamA.html\" title=\"" +
|
||||||
|
"annotation in typeannos\">@MTyParamA</a> <a href=\"../typeannos/" +
|
||||||
|
"MtdTyParameterized.html\" title=\"class in typeannos\">" +
|
||||||
|
"MtdTyParameterized</a><<a href=\"../typeannos/MTyParamB.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@MTyParamB</a> java.lang.String" +
|
||||||
|
">> void nestedExtends()</pre>"
|
||||||
|
},
|
||||||
|
*/
|
||||||
{BUG_ID + FS + "typeannos" + FS + "PublicModifiedMethods.html",
|
{BUG_ID + FS + "typeannos" + FS + "PublicModifiedMethods.html",
|
||||||
"<pre>public final <K extends <a href=\"../typeannos/" +
|
"<pre>public final <K extends <a href=\"../typeannos/" +
|
||||||
"MTyParamA.html\" title=\"annotation in typeannos\">@MTyParamA</a> " +
|
"MTyParamA.html\" title=\"annotation in typeannos\">@MTyParamA</a> " +
|
||||||
"java.lang.String> void methodExtends()</pre>"
|
"java.lang.String> void methodExtends()</pre>"
|
||||||
},
|
},
|
||||||
|
/* @ignore 8012173
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "PublicModifiedMethods.html",
|
||||||
|
"<pre>public final <K extends <a href=\"../typeannos/" +
|
||||||
|
"MTyParamA.html\" title=\"annotation in typeannos\">@MTyParamA</a> " +
|
||||||
|
"java.lang.String,V extends <a href=\"../typeannos/MTyParamA.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@MTyParamA</a> <a href=\"../" +
|
||||||
|
"typeannos/MtdTyParameterized.html\" title=\"class in typeannos\">" +
|
||||||
|
"MtdTyParameterized</a><<a href=\"../typeannos/MTyParamB.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@MTyParamB</a> java.lang.String" +
|
||||||
|
">> void dual()</pre>"
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Test for type annotations on parameters (Parameters.java).
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "Parameters.html",
|
||||||
|
"<pre>void unannotated(<a href=\"../typeannos/" +
|
||||||
|
"ParaParameterized.html\" title=\"class in typeannos\">" +
|
||||||
|
"ParaParameterized</a><java.lang.String,java.lang.String>" +
|
||||||
|
" a)</pre>"
|
||||||
|
},
|
||||||
|
/* @ignore 8012173
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "Parameters.html",
|
||||||
|
"<pre>void nestedParaParameterized(<a href=\"../typeannos/" +
|
||||||
|
"ParaParameterized.html\" title=\"class in typeannos\">" +
|
||||||
|
"ParaParameterized</a><<a href=\"../typeannos/ParamA.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@ParamA</a> <a href=\"../" +
|
||||||
|
"typeannos/ParaParameterized.html\" title=\"class in typeannos\">" +
|
||||||
|
"ParaParameterized</a><<a href=\"../typeannos/ParamA.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@ParamA</a> java.lang.String," +
|
||||||
|
"<a href=\"../typeannos/ParamB.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@ParamB</a> java.lang.String>,<a href=\"../" +
|
||||||
|
"typeannos/ParamB.html\" title=\"annotation in typeannos\">@ParamB" +
|
||||||
|
"</a> java.lang.String> a)</pre>"
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "Parameters.html",
|
||||||
|
"<pre>void array2Deep(<a href=\"../typeannos/ParamA.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@ParamA</a> java.lang.String " +
|
||||||
|
"<a href=\"../typeannos/ParamA.html\" title=\"annotation in " +
|
||||||
|
"typeannos\">@ParamA</a> [] <a href=\"../typeannos/ParamB.html\" " +
|
||||||
|
"title=\"annotation in typeannos\">@ParamB</a> [] a)</pre>"
|
||||||
|
},
|
||||||
|
|
||||||
// Test for type annotations on throws (Throws.java).
|
// Test for type annotations on throws (Throws.java).
|
||||||
{BUG_ID + FS + "typeannos" + FS + "ThrDefaultUnmodified.html",
|
{BUG_ID + FS + "typeannos" + FS + "ThrDefaultUnmodified.html",
|
||||||
|
@ -148,6 +303,13 @@ public class TestTypeAnnotations extends JavadocTester {
|
||||||
"annotation in typeannos\">@ThrA</a> java.lang.Exception</pre>"
|
"annotation in typeannos\">@ThrA</a> java.lang.Exception</pre>"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Test for type annotations on type parameters (TypeParameters.java).
|
||||||
|
{BUG_ID + FS + "typeannos" + FS + "TestMethods.html",
|
||||||
|
"<pre><K,V extends <a href=\"../typeannos/TyParaA.html\" title=\"" +
|
||||||
|
"annotation in typeannos\">@TyParaA</a> java.lang.String> " +
|
||||||
|
"void secondAnnotated()</pre>"
|
||||||
|
},
|
||||||
|
|
||||||
// Test for type annotations on wildcard type (Wildcards.java).
|
// Test for type annotations on wildcard type (Wildcards.java).
|
||||||
{BUG_ID + FS + "typeannos" + FS + "BoundTest.html",
|
{BUG_ID + FS + "typeannos" + FS + "BoundTest.html",
|
||||||
"<pre>void wcExtends(<a href=\"../typeannos/MyList.html\" " +
|
"<pre>void wcExtends(<a href=\"../typeannos/MyList.html\" " +
|
||||||
|
|
|
@ -40,7 +40,7 @@ class DefaultScope {
|
||||||
@FldA String [] array1;
|
@FldA String [] array1;
|
||||||
@FldA String @FldB [] array1Deep;
|
@FldA String @FldB [] array1Deep;
|
||||||
@FldA String [] [] array2;
|
@FldA String [] [] array2;
|
||||||
@FldA String @FldA [] @FldB [] array2Deep;
|
@FldD String @FldC @FldA [] @FldC @FldB [] array2Deep;
|
||||||
String @FldA [] [] array2First;
|
String @FldA [] [] array2First;
|
||||||
String [] @FldB [] array2Second;
|
String [] @FldB [] array2Second;
|
||||||
|
|
||||||
|
@ -74,3 +74,9 @@ class Parameterized<K, V> { }
|
||||||
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
|
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
|
||||||
@Documented
|
@Documented
|
||||||
@interface FldB { }
|
@interface FldB { }
|
||||||
|
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
|
||||||
|
@Documented
|
||||||
|
@interface FldC { }
|
||||||
|
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
|
||||||
|
@Documented
|
||||||
|
@interface FldD { }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue