Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
41f65180
D
dragonwell8_langtools
项目概览
openanolis
/
dragonwell8_langtools
通知
0
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_langtools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
41f65180
编写于
4月 16, 2014
作者:
K
ksrini
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8037484: [javadoc] fails with java.lang.IllegalStateException: endPosTable already set
Reviewed-by: jjg
上级
4377aaa0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
57 addition
and
20 deletion
+57
-20
src/share/classes/com/sun/tools/javadoc/JavadocTool.java
src/share/classes/com/sun/tools/javadoc/JavadocTool.java
+18
-18
test/tools/javadoc/parser/7091528/T7091528.java
test/tools/javadoc/parser/7091528/T7091528.java
+12
-2
test/tools/javadoc/parser/7091528/p/C3.java
test/tools/javadoc/parser/7091528/p/C3.java
+27
-0
未找到文件。
src/share/classes/com/sun/tools/javadoc/JavadocTool.java
浏览文件 @
41f65180
...
...
@@ -68,6 +68,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
final
Messager
messager
;
final
JavadocClassReader
javadocReader
;
final
JavadocEnter
javadocEnter
;
final
Set
<
JavaFileObject
>
uniquefiles
;
/**
* Construct a new JavaCompiler processor, using appropriately
...
...
@@ -78,6 +79,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
messager
=
Messager
.
instance0
(
context
);
javadocReader
=
JavadocClassReader
.
instance0
(
context
);
javadocEnter
=
JavadocEnter
.
instance0
(
context
);
uniquefiles
=
new
HashSet
<>();
}
/**
...
...
@@ -148,9 +150,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
String
name
=
it
.
head
;
if
(!
docClasses
&&
fm
!=
null
&&
name
.
endsWith
(
".java"
)
&&
new
File
(
name
).
exists
())
{
JavaFileObject
fo
=
fm
.
getJavaFileObjects
(
name
).
iterator
().
next
();
docenv
.
notice
(
"main.Loading_source_file"
,
name
);
JCCompilationUnit
tree
=
parse
(
fo
);
classTrees
.
append
(
tree
);
parse
(
fo
,
classTrees
,
true
);
}
else
if
(
isValidPackageName
(
name
))
{
names
=
names
.
append
(
name
);
}
else
if
(
name
.
endsWith
(
".java"
))
{
...
...
@@ -163,9 +163,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
}
}
for
(
JavaFileObject
fo:
fileObjects
)
{
docenv
.
notice
(
"main.Loading_source_file"
,
fo
.
getName
());
JCCompilationUnit
tree
=
parse
(
fo
);
classTrees
.
append
(
tree
);
parse
(
fo
,
classTrees
,
true
);
}
if
(!
docClasses
)
{
...
...
@@ -213,7 +211,7 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
* .java files found in such a directory to args.
*/
private
void
parsePackageClasses
(
String
name
,
Iterable
<
JavaFileObject
>
files
,
List
<
JavaFileObject
>
files
,
ListBuffer
<
JCCompilationUnit
>
trees
,
List
<
String
>
excludedPackages
)
throws
IOException
{
...
...
@@ -221,7 +219,6 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
return
;
}
boolean
hasFiles
=
false
;
docenv
.
notice
(
"main.Loading_source_files_for_package"
,
name
);
if
(
files
==
null
)
{
...
...
@@ -238,19 +235,22 @@ public class JavadocTool extends com.sun.tools.javac.main.JavaCompiler {
}
files
=
lb
.
toList
();
}
Set
<
JavaFileObject
>
ufiles
=
new
HashSet
<>();
for
(
JavaFileObject
fo
:
files
)
{
if
(
ufiles
.
add
(
fo
))
{
// ignore duplicates
// messager.notice("main.Loading_source_file", fn);
trees
.
append
(
parse
(
fo
));
hasFiles
=
true
;
if
(
files
.
nonEmpty
())
{
for
(
JavaFileObject
fo
:
files
)
{
parse
(
fo
,
trees
,
false
);
}
}
else
{
messager
.
warning
(
Messager
.
NOPOS
,
"main.no_source_files_for_package"
,
name
.
replace
(
File
.
separatorChar
,
'.'
));
}
}
if
(!
hasFiles
)
{
messager
.
warning
(
Messager
.
NOPOS
,
"main.no_source_files_for_package"
,
name
.
replace
(
File
.
separatorChar
,
'.'
));
private
void
parse
(
JavaFileObject
fo
,
ListBuffer
<
JCCompilationUnit
>
trees
,
boolean
trace
)
{
if
(
uniquefiles
.
add
(
fo
))
{
// ignore duplicates
if
(
trace
)
docenv
.
notice
(
"main.Loading_source_file"
,
fo
.
getName
());
trees
.
append
(
parse
(
fo
));
}
}
...
...
test/tools/javadoc/parser/7091528/T7091528.java
浏览文件 @
41f65180
...
...
@@ -23,7 +23,7 @@
/**
* @test
* @bug 7091528 8029145
* @bug 7091528 8029145
8037484
* @summary ensures javadoc parses unique source files and ignores all class files
* @compile p/C1.java p/q/C2.java
* @run main T7091528
...
...
@@ -50,6 +50,16 @@ public class T7091528 {
"-sourcepath"
,
testSrc
.
getAbsolutePath
(),
"-subpackages"
,
"p:p.q"
);
File
testPkgDir
=
new
File
(
testSrc
,
"p"
);
File
testFile
=
new
File
(
testPkgDir
,
"C3.java"
);
runTest
(
"-d"
,
"."
,
"-sourcepath"
,
testSrc
.
getAbsolutePath
(),
testFile
.
getAbsolutePath
(),
"p"
);
runTest
(
"-d"
,
"."
,
"-classpath"
,
testSrc
.
getAbsolutePath
(),
testFile
.
getAbsolutePath
(),
"p"
);
}
void
runTest
(
String
...
args
)
{
...
...
@@ -65,7 +75,7 @@ public class T7091528 {
}
if
(
rc
!=
0
)
System
.
err
.
println
(
"javadoc failed: exit code = "
+
rc
);
throw
new
Error
(
"javadoc failed: exit code = "
+
rc
);
if
(
out
.
matches
(
"(?s).*p/[^ ]+\\.class.*"
))
throw
new
Error
(
"reading .class files"
);
...
...
test/tools/javadoc/parser/7091528/p/C3.java
0 → 100644
浏览文件 @
41f65180
/*
* Copyright (c) 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
* 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/** This is class C3, and no package for me please */
public
class
C3
{}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录