Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
211a67e6
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看板
提交
211a67e6
编写于
7月 17, 2013
作者:
J
jjg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8020313: doclint doesn't reset HTML anchors correctly
Reviewed-by: mcimadamore
上级
be2674dc
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
47 addition
and
5 deletion
+47
-5
src/share/classes/com/sun/tools/doclint/Checker.java
src/share/classes/com/sun/tools/doclint/Checker.java
+16
-5
test/tools/doclint/AnchorTest2.java
test/tools/doclint/AnchorTest2.java
+20
-0
test/tools/doclint/AnchorTest2.out
test/tools/doclint/AnchorTest2.out
+4
-0
test/tools/doclint/AnchorTest2a.java
test/tools/doclint/AnchorTest2a.java
+7
-0
未找到文件。
src/share/classes/com/sun/tools/doclint/Checker.java
浏览文件 @
211a67e6
...
@@ -31,9 +31,11 @@ import java.net.URI;
...
@@ -31,9 +31,11 @@ import java.net.URI;
import
java.net.URISyntaxException
;
import
java.net.URISyntaxException
;
import
java.util.Deque
;
import
java.util.Deque
;
import
java.util.EnumSet
;
import
java.util.EnumSet
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.LinkedList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.regex.Matcher
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.regex.Pattern
;
...
@@ -45,6 +47,7 @@ import javax.lang.model.element.Name;
...
@@ -45,6 +47,7 @@ import javax.lang.model.element.Name;
import
javax.lang.model.type.TypeKind
;
import
javax.lang.model.type.TypeKind
;
import
javax.lang.model.type.TypeMirror
;
import
javax.lang.model.type.TypeMirror
;
import
javax.tools.Diagnostic.Kind
;
import
javax.tools.Diagnostic.Kind
;
import
javax.tools.JavaFileObject
;
import
com.sun.source.doctree.AttributeTree
;
import
com.sun.source.doctree.AttributeTree
;
import
com.sun.source.doctree.AuthorTree
;
import
com.sun.source.doctree.AuthorTree
;
...
@@ -88,9 +91,9 @@ import static com.sun.tools.doclint.Messages.Group.*;
...
@@ -88,9 +91,9 @@ import static com.sun.tools.doclint.Messages.Group.*;
public
class
Checker
extends
DocTreePathScanner
<
Void
,
Void
>
{
public
class
Checker
extends
DocTreePathScanner
<
Void
,
Void
>
{
final
Env
env
;
final
Env
env
;
Set
<
Element
>
foundParams
=
new
HashSet
<
Element
>();
Set
<
Element
>
foundParams
=
new
HashSet
<>();
Set
<
TypeMirror
>
foundThrows
=
new
HashSet
<
TypeMirror
>();
Set
<
TypeMirror
>
foundThrows
=
new
HashSet
<>();
Set
<
String
>
foundAnchors
=
new
HashSet
<
String
>();
Map
<
JavaFileObject
,
Set
<
String
>>
foundAnchors
=
new
HashMap
<
>();
boolean
foundInheritDoc
=
false
;
boolean
foundInheritDoc
=
false
;
boolean
foundReturn
=
false
;
boolean
foundReturn
=
false
;
...
@@ -129,7 +132,7 @@ public class Checker extends DocTreePathScanner<Void, Void> {
...
@@ -129,7 +132,7 @@ public class Checker extends DocTreePathScanner<Void, Void> {
Checker
(
Env
env
)
{
Checker
(
Env
env
)
{
env
.
getClass
();
env
.
getClass
();
this
.
env
=
env
;
this
.
env
=
env
;
tagStack
=
new
LinkedList
<
TagStackItem
>();
tagStack
=
new
LinkedList
<>();
implicitHeaderLevel
=
env
.
implicitHeaderLevel
;
implicitHeaderLevel
=
env
.
implicitHeaderLevel
;
}
}
...
@@ -508,7 +511,7 @@ public class Checker extends DocTreePathScanner<Void, Void> {
...
@@ -508,7 +511,7 @@ public class Checker extends DocTreePathScanner<Void, Void> {
if
(!
validName
.
matcher
(
value
).
matches
())
{
if
(!
validName
.
matcher
(
value
).
matches
())
{
env
.
messages
.
error
(
HTML
,
tree
,
"dc.invalid.anchor"
,
value
);
env
.
messages
.
error
(
HTML
,
tree
,
"dc.invalid.anchor"
,
value
);
}
}
if
(!
foundAnchors
.
add
(
value
))
{
if
(!
checkAnchor
(
value
))
{
env
.
messages
.
error
(
HTML
,
tree
,
"dc.anchor.already.defined"
,
value
);
env
.
messages
.
error
(
HTML
,
tree
,
"dc.anchor.already.defined"
,
value
);
}
}
}
}
...
@@ -551,6 +554,14 @@ public class Checker extends DocTreePathScanner<Void, Void> {
...
@@ -551,6 +554,14 @@ public class Checker extends DocTreePathScanner<Void, Void> {
return
super
.
visitAttribute
(
tree
,
ignore
);
return
super
.
visitAttribute
(
tree
,
ignore
);
}
}
private
boolean
checkAnchor
(
String
name
)
{
JavaFileObject
fo
=
env
.
currPath
.
getCompilationUnit
().
getSourceFile
();
Set
<
String
>
set
=
foundAnchors
.
get
(
fo
);
if
(
set
==
null
)
foundAnchors
.
put
(
fo
,
set
=
new
HashSet
<>());
return
set
.
add
(
name
);
}
// http://www.w3.org/TR/html401/types.html#type-name
// http://www.w3.org/TR/html401/types.html#type-name
private
static
final
Pattern
validName
=
Pattern
.
compile
(
"[A-Za-z][A-Za-z0-9-_:.]*"
);
private
static
final
Pattern
validName
=
Pattern
.
compile
(
"[A-Za-z][A-Za-z0-9-_:.]*"
);
...
...
test/tools/doclint/AnchorTest2.java
0 → 100644
浏览文件 @
211a67e6
/*
* @test /nodynamiccopyright/
* @bug 8020313
* @summary doclint doesn't reset HTML anchors correctly
* @build DocLintTester
* @run main DocLintTester -ref AnchorTest2.out AnchorTest2.java AnchorTest2a.java
* @run main DocLintTester -ref AnchorTest2.out AnchorTest2a.java AnchorTest2.java
*/
/** */
public
class
AnchorTest2
{
/** <a name="AnchorTest2"> </a> */
public
void
a_name_AnchorTest2
()
{
}
/** <a name="AnchorTest2"> </a> */
public
void
a_name_AnchorTest2_already_defined
()
{
}
/** <a name="AnchorTest2a"> </a> */
public
void
a_name_AnchorTest2a_defined_in_other_file
()
{
}
}
test/tools/doclint/AnchorTest2.out
0 → 100644
浏览文件 @
211a67e6
AnchorTest2.java:15: error: anchor already defined: AnchorTest2
/** <a name="AnchorTest2"> </a> */
^
1 error
test/tools/doclint/AnchorTest2a.java
0 → 100644
浏览文件 @
211a67e6
/* /nodynamiccopyright/ */
/**
* <a name="AnchorTest2a"> </a>
*/
public
class
AnchorTest2a
{
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录