OpenJDK / type-annotations / type-annotations / langtools
changeset 3208:4c09a8dd09b3
8029145: javadoc fails with java.lang.IllegalStateException: endPosTable already set
Reviewed-by: jjg
author | ksrini |
---|---|
date | Fri, 14 Feb 2014 17:28:07 -0800 |
parents | 37cf13ea5cf9 |
children | 7766dfafa530 |
files | src/share/classes/com/sun/tools/javadoc/JavadocTool.java test/tools/javadoc/parser/7091528/T7091528.java |
diffstat | 2 files changed, 21 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javadoc/JavadocTool.java Thu Feb 13 14:58:10 2014 +0100 +++ b/src/share/classes/com/sun/tools/javadoc/JavadocTool.java Fri Feb 14 17:28:07 2014 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, Oracle and/or its affiliates. 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 @@ -30,6 +30,7 @@ import java.util.Collection; import java.util.EnumSet; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.tools.JavaFileManager.Location; @@ -238,10 +239,13 @@ files = lb.toList(); } + Set<JavaFileObject> ufiles = new HashSet<>(); for (JavaFileObject fo : files) { - // messager.notice("main.Loading_source_file", fn); - trees.append(parse(fo)); - hasFiles = true; + if (ufiles.add(fo)) { // ignore duplicates + // messager.notice("main.Loading_source_file", fn); + trees.append(parse(fo)); + hasFiles = true; + } } if (!hasFiles) {
--- a/test/tools/javadoc/parser/7091528/T7091528.java Thu Feb 13 14:58:10 2014 +0100 +++ b/test/tools/javadoc/parser/7091528/T7091528.java Fri Feb 14 17:28:07 2014 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2014, Oracle and/or its affiliates. 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 @@ -23,8 +23,8 @@ /** * @test - * @bug 7091528 - * @summary javadoc attempts to parse .class files + * @bug 7091528 8029145 + * @summary ensures javadoc parses unique source files and ignores all class files * @compile p/C1.java p/q/C2.java * @run main T7091528 */ @@ -37,17 +37,22 @@ public static void main(String... args) { new T7091528().run(); } - void run() { File testSrc = new File(System.getProperty("test.src")); File testClasses = new File(System.getProperty("test.classes")); - String[] args = { - "-d", ".", + // 7091528, tests if class files are being ignored + runTest("-d", ".", "-sourcepath", testClasses + File.pathSeparator + testSrc, "-subpackages", - "p" - }; + "p"); + // 8029145, tests if unique source files are parsed + runTest("-d", ".", + "-sourcepath", testSrc.getAbsolutePath(), + "-subpackages", + "p:p.q"); + } + void runTest(String... args) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); String doclet = com.sun.tools.doclets.standard.Standard.class.getName();