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();
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
|
|
|
@ -160,4 +160,13 @@ public interface Type {
|
|||
* @since 1.5
|
||||
*/
|
||||
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) {
|
||||
linkInfo.displayLength += 1;
|
||||
output.append(" ");
|
||||
isFirst = false;
|
||||
}
|
||||
output.append(anno);
|
||||
isFirst = false;
|
||||
}
|
||||
if (!annos.isEmpty()) {
|
||||
linkInfo.displayLength += 1;
|
||||
|
|
|
@ -60,6 +60,13 @@ public class LinkOutputImpl implements LinkOutput {
|
|||
(String) o : ((LinkOutputImpl)o).toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void insert(int offset, Object o) {
|
||||
output.insert(offset, o.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
|
|
|
@ -61,7 +61,7 @@ public abstract class LinkFactory {
|
|||
//Just a primitive.
|
||||
linkInfo.displayLength += type.typeName().length();
|
||||
linkOutput.append(type.typeName());
|
||||
} else if (type.asAnnotatedType() != null) {
|
||||
} else if (type.asAnnotatedType() != null && type.dimension().length() == 0) {
|
||||
linkOutput.append(getTypeAnnotationLinks(linkInfo));
|
||||
linkInfo.type = type.asAnnotatedType().underlyingType();
|
||||
linkOutput.append(getLinkOutput(linkInfo));
|
||||
|
@ -141,8 +141,21 @@ public abstract class LinkFactory {
|
|||
linkInfo.displayLength += 3;
|
||||
linkOutput.append("...");
|
||||
} else {
|
||||
linkInfo.displayLength += type.dimension().length();
|
||||
linkOutput.append(type.dimension());
|
||||
while (type != null && type.dimension().length() > 0) {
|
||||
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;
|
||||
} else if (linkInfo.classDoc != null) {
|
||||
|
|
|
@ -44,4 +44,12 @@ public interface LinkOutput {
|
|||
* @param o the object to append.
|
||||
*/
|
||||
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();
|
||||
}
|
||||
|
||||
public com.sun.javadoc.Type getElementType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String simpleTypeName() {
|
||||
return type.tsym.name.toString();
|
||||
}
|
||||
|
|
|
@ -108,6 +108,10 @@ public class ClassDocImpl extends ProgramElementDocImpl implements ClassDoc {
|
|||
this.tsym = sym;
|
||||
}
|
||||
|
||||
public com.sun.javadoc.Type getElementType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
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 an empty array if there are none.
|
||||
|
|
|
@ -63,6 +63,10 @@ class PrimitiveType implements com.sun.javadoc.Type {
|
|||
return name;
|
||||
}
|
||||
|
||||
public com.sun.javadoc.Type getElementType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return qualified name of type excluding any dimension information.
|
||||
*<p>
|
||||
|
|
|
@ -222,6 +222,10 @@ public class TypeMaker {
|
|||
|
||||
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() {
|
||||
if (skipArraysCache == null) {
|
||||
Type t;
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8005091
|
||||
* @bug 8005091 8009686
|
||||
* @summary Make sure that type annotations are displayed correctly
|
||||
* @author Bhavesh Patel
|
||||
* @library ../lib/
|
||||
|
@ -34,7 +34,7 @@
|
|||
public class TestTypeAnnotations extends JavadocTester {
|
||||
|
||||
//Test information.
|
||||
private static final String BUG_ID = "8005091";
|
||||
private static final String BUG_ID = "8005091-8009686";
|
||||
|
||||
//Javadoc arguments.
|
||||
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[][] TEST = {
|
||||
// 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",
|
||||
"implements <a href=\"../typeannos/ClassExtB.html\" title=\"" +
|
||||
"annotation in typeannos\">@ClassExtB</a> java.lang.CharSequence, " +
|
||||
"<a href=\"../typeannos/ParameterizedInterface.html\" title=\"" +
|
||||
"interface in typeannos\">ParameterizedInterface</a><java.lang.String></pre>"
|
||||
"<a href=\"../typeannos/ClassExtA.html\" title=\"annotation in " +
|
||||
"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",
|
||||
"extends <a href=\"../typeannos/ParameterizedInterface.html\" title" +
|
||||
"=\"interface in typeannos\">ParameterizedInterface</a><java." +
|
||||
"lang.String>, <a href=\"../typeannos/ClassExtB.html\" title=\"" +
|
||||
"annotation in typeannos\">@ClassExtB</a> java.lang.CharSequence</pre>"
|
||||
"extends <a href=\"../typeannos/ClassExtA.html\" title=\"annotation " +
|
||||
"in typeannos\">@ClassExtA</a> <a href=\"../typeannos/" +
|
||||
"ParameterizedInterface.html\" title=\"interface in typeannos\">" +
|
||||
"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).
|
||||
{BUG_ID + FS + "typeannos" + FS + "ExtendsBound.html",
|
||||
|
@ -64,11 +83,21 @@ public class TestTypeAnnotations extends JavadocTester {
|
|||
"href=\"../typeannos/ClassParamA.html\" title=\"annotation in " +
|
||||
"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",
|
||||
"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\">" +
|
||||
"@ClassParamA</a> java.lang.String,V extends <a href=\"../typeannos" +
|
||||
"/ClassParamB.html\" title=\"annotation in typeannos\">@ClassParamB" +
|
||||
"@ClassParamA</a> java.lang.String,V extends <a href=\"../typeannos/" +
|
||||
"ClassParamB.html\" title=\"annotation in typeannos\">@ClassParamB" +
|
||||
"</a> java.lang.String></span>"
|
||||
},
|
||||
{BUG_ID + FS + "typeannos" + FS + "Complex1.html",
|
||||
|
@ -89,12 +118,86 @@ public class TestTypeAnnotations extends JavadocTester {
|
|||
"</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).
|
||||
{BUG_ID + FS + "typeannos" + FS + "MtdDefaultScope.html",
|
||||
"<pre>public <T> <a href=\"../typeannos/MRtnA.html\" " +
|
||||
"title=\"annotation in typeannos\">@MRtnA</a> java.lang.String" +
|
||||
" 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).
|
||||
{BUG_ID + FS + "typeannos" + FS + "UnscopedUnmodified.html",
|
||||
|
@ -102,11 +205,63 @@ public class TestTypeAnnotations extends JavadocTester {
|
|||
"annotation in typeannos\">@MTyParamA</a> java.lang.String>" +
|
||||
" 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",
|
||||
"<pre>public final <K extends <a href=\"../typeannos/" +
|
||||
"MTyParamA.html\" title=\"annotation in typeannos\">@MTyParamA</a> " +
|
||||
"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).
|
||||
{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>"
|
||||
},
|
||||
|
||||
// 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).
|
||||
{BUG_ID + FS + "typeannos" + FS + "BoundTest.html",
|
||||
"<pre>void wcExtends(<a href=\"../typeannos/MyList.html\" " +
|
||||
|
|
|
@ -40,7 +40,7 @@ class DefaultScope {
|
|||
@FldA String [] array1;
|
||||
@FldA String @FldB [] array1Deep;
|
||||
@FldA String [] [] array2;
|
||||
@FldA String @FldA [] @FldB [] array2Deep;
|
||||
@FldD String @FldC @FldA [] @FldC @FldB [] array2Deep;
|
||||
String @FldA [] [] array2First;
|
||||
String [] @FldB [] array2Second;
|
||||
|
||||
|
@ -74,3 +74,9 @@ class Parameterized<K, V> { }
|
|||
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
|
||||
@Documented
|
||||
@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