Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
4a5d887b
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4a5d887b
编写于
5月 28, 2013
作者:
A
Alex Crichton
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow doc(hidden) and --test to disable doc linting
上级
af995ce1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
49 addition
and
3 deletion
+49
-3
src/librustc/middle/lint.rs
src/librustc/middle/lint.rs
+36
-3
src/test/compile-fail/lint-missing-doc.rs
src/test/compile-fail/lint-missing-doc.rs
+13
-0
未找到文件。
src/librustc/middle/lint.rs
浏览文件 @
4a5d887b
...
...
@@ -297,6 +297,10 @@ struct Context {
// Just a simple flag if we're currently recursing into a trait
// implementation. This is only used by the lint_missing_doc() pass
in_trait_impl
:
bool
,
// Another flag for doc lint emissions. Does some parent of the current node
// have the doc(hidden) attribute? Treating this as allow(missing_doc) would
// play badly with forbid(missing_doc) when it shouldn't.
doc_hidden
:
bool
,
// When recursing into an attributed node of the ast which modifies lint
// levels, this stack keeps track of the previous lint levels of whatever
// was modified.
...
...
@@ -422,9 +426,30 @@ fn with_lint_attrs(@mut self, attrs: &[ast::attribute], f: &fn()) {
}
}
// detect doc(hidden)
let
mut
doc_hidden
=
false
;
for
attr
::
find_attrs_by_name
(
attrs
,
"doc"
)
.each
|
attr
|
{
match
attr
::
get_meta_item_list
(
attr
.node.value
)
{
Some
(
s
)
=>
{
if
attr
::
find_meta_items_by_name
(
s
,
"hidden"
)
.len
()
>
0
{
doc_hidden
=
true
;
}
}
None
=>
{}
}
}
if
doc_hidden
&&
!
self
.doc_hidden
{
self
.doc_hidden
=
true
;
}
else
{
doc_hidden
=
false
;
}
f
();
// rollback
if
doc_hidden
&&
self
.doc_hidden
{
self
.doc_hidden
=
false
;
}
for
pushed
.times
{
let
(
lint
,
lvl
,
src
)
=
self
.lint_stack
.pop
();
self
.set_level
(
lint
,
lvl
,
src
);
...
...
@@ -980,9 +1005,16 @@ fn check(cx: &Context, e: @ast::expr) {
fn
lint_missing_doc
()
->
visit
::
vt
<@
mut
Context
>
{
fn
check_attrs
(
cx
:
@
mut
Context
,
attrs
:
&
[
ast
::
attribute
],
sp
:
span
,
msg
:
&
str
)
{
if
!
attrs
.any
(|
a
|
a
.node.is_sugared_doc
)
{
cx
.span_lint
(
missing_doc
,
sp
,
msg
);
}
// If we're building a test harness, then warning about documentation is
// probably not really relevant right now
if
cx
.tcx.sess.opts.test
{
return
}
// If we have doc(hidden), nothing to do
if
cx
.doc_hidden
{
return
}
// If we're documented, nothing to do
if
attrs
.any
(|
a
|
a
.node.is_sugared_doc
)
{
return
}
// otherwise, warn!
cx
.span_lint
(
missing_doc
,
sp
,
msg
);
}
visit
::
mk_vt
(
@
visit
::
Visitor
{
...
...
@@ -1067,6 +1099,7 @@ pub fn check_crate(tcx: ty::ctxt, crate: @ast::crate) {
lint_stack
:
~
[],
visitors
:
~
[],
in_trait_impl
:
false
,
doc_hidden
:
false
,
};
// Install defaults.
...
...
src/test/compile-fail/lint-missing-doc.rs
浏览文件 @
4a5d887b
...
...
@@ -69,4 +69,17 @@ pub fn a() {}
fn
b
(
&
self
)
{}
}
// It sure is nice if doc(hidden) implies allow(missing_doc), and that it
// applies recursively
#[doc(hidden)]
mod
a
{
pub
fn
baz
()
{}
pub
mod
b
{
pub
fn
baz
()
{}
}
}
#[doc(hidden)]
pub
fn
baz
()
{}
fn
main
()
{}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录