mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 11:04:34 +02:00
6709246: ClassCastException in javadoc
Reviewed-by: jjg
This commit is contained in:
parent
f4883897ce
commit
528f733b28
3 changed files with 89 additions and 1 deletions
|
@ -60,7 +60,12 @@ public class AnnotationDescImpl implements AnnotationDesc {
|
|||
*/
|
||||
public AnnotationTypeDoc annotationType() {
|
||||
ClassSymbol atsym = (ClassSymbol)annotation.type.tsym;
|
||||
return (AnnotationTypeDoc)env.getClassDoc(atsym);
|
||||
if (annotation.type.isErroneous()) {
|
||||
env.warning(null, "javadoc.class_not_found", annotation.type.toString());
|
||||
return new AnnotationTypeDocImpl(env, atsym);
|
||||
} else {
|
||||
return (AnnotationTypeDoc)env.getClassDoc(atsym);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
52
langtools/test/tools/javadoc/annotations/missing/Main.java
Normal file
52
langtools/test/tools/javadoc/annotations/missing/Main.java
Normal file
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright 2009 Google, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 6709246
|
||||
* @summary Class-cast exception when annotation type is missing.
|
||||
* @library ../../lib
|
||||
*/
|
||||
|
||||
import java.io.IOException;
|
||||
import com.sun.javadoc.RootDoc;
|
||||
import com.sun.javadoc.ClassDoc;
|
||||
import com.sun.javadoc.AnnotationDesc;
|
||||
|
||||
public class Main extends Tester.Doclet {
|
||||
|
||||
private static final Tester tester = new Tester("Main", "somepackage");
|
||||
|
||||
public static void main(String... args) throws Exception {
|
||||
tester.run();
|
||||
}
|
||||
|
||||
public static boolean start(RootDoc root) {
|
||||
for (ClassDoc d : root.classes()) {
|
||||
for (AnnotationDesc a : d.annotations()) {
|
||||
System.out.println(a.annotationType());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright 2009 Google, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
package somepackage;
|
||||
|
||||
/**
|
||||
* This class has an annotation which is not available.
|
||||
*/
|
||||
@NoSuchAnnotation
|
||||
public class MissingAnnotationClass {
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue