Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
9473e219
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,发现更多精彩内容 >>
提交
9473e219
编写于
6月 05, 2022
作者:
L
ltdk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Changes from code review
上级
5fabdb8f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
56 addition
and
23 deletion
+56
-23
compiler/rustc_error_codes/src/error_codes/E0788.md
compiler/rustc_error_codes/src/error_codes/E0788.md
+7
-2
compiler/rustc_passes/src/check_attr.rs
compiler/rustc_passes/src/check_attr.rs
+3
-2
src/test/ui/lint/no-coverage.rs
src/test/ui/lint/no-coverage.rs
+12
-3
src/test/ui/lint/no-coverage.stderr
src/test/ui/lint/no-coverage.stderr
+34
-16
未找到文件。
compiler/rustc_error_codes/src/error_codes/E0788.md
浏览文件 @
9473e219
A
`#[no_coverage]`
attribute was incorrectly placed on something that couldn't
be covered.
A
`#[no_coverage]`
attribute was applied to something which does not show up
in code coverage, or is too granular to be excluded from the coverage report.
For now, this attribute can only be applied to function, method, and closure
definitions. In the future, it may be added to statements, blocks, and
expressions, and for the time being, using this attribute in those places
will just emit an
`unused_attributes`
lint instead of this error.
Example of erroneous code:
...
...
compiler/rustc_passes/src/check_attr.rs
浏览文件 @
9473e219
...
...
@@ -317,14 +317,15 @@ fn check_no_coverage(
Target
::
Mod
|
Target
::
ForeignMod
|
Target
::
Impl
|
Target
::
Trait
=>
{
self
.tcx
.struct_span_lint_hir
(
UNUSED_ATTRIBUTES
,
hir_id
,
attr
.span
,
|
lint
|
{
lint
.build
(
"`#[no_coverage]`
cannot be done recursively and must be applied to
functions directly"
)
.emit
();
lint
.build
(
"`#[no_coverage]`
does not propagate into items and must be applied to the contained
functions directly"
)
.emit
();
});
true
}
Target
::
Expression
|
Target
::
Statement
|
Target
::
Arm
=>
{
self
.tcx
.struct_span_lint_hir
(
UNUSED_ATTRIBUTES
,
hir_id
,
attr
.span
,
|
lint
|
{
lint
.build
(
"`#[no_coverage]` can only be applied at the function level, not on code directly"
)
.emit
();
lint
.build
(
"`#[no_coverage]` may only be applied to function definitions"
)
.emit
();
});
true
}
...
...
src/test/ui/lint/no-coverage.rs
浏览文件 @
9473e219
...
...
@@ -2,7 +2,11 @@
#![feature(no_coverage)]
#![feature(type_alias_impl_trait)]
#![warn(unused_attributes)]
#![no_coverage]
//~^ WARN: `#[no_coverage]` does not propagate into items and must be applied to the contained functions directly
#[no_coverage]
//~^ WARN: `#[no_coverage]` does not propagate into items and must be applied to the contained functions directly
trait
Trait
{
#[no_coverage]
//~ ERROR `#[no_coverage]` must be applied to coverable code
const
X
:
u32
;
...
...
@@ -13,6 +17,8 @@ trait Trait {
type
U
;
}
#[no_coverage]
//~^ WARN: `#[no_coverage]` does not propagate into items and must be applied to the contained functions directly
impl
Trait
for
()
{
const
X
:
u32
=
0
;
...
...
@@ -33,14 +39,17 @@ impl Trait for () {
#[no_coverage]
fn
main
()
{
#[no_coverage]
//~ WARN `#[no_coverage]` can only be applied at the function level, not on code directly
#[no_coverage]
//~^ WARN `#[no_coverage]` may only be applied to function definitions
let
_
=
();
match
()
{
#[no_coverage]
//~ WARN `#[no_coverage]` can only be applied at the function level, not on code directly
#[no_coverage]
//~^ WARN `#[no_coverage]` may only be applied to function definitions
()
=>
(),
}
#[no_coverage]
//~ WARN `#[no_coverage]` can only be applied at the function level, not on code directly
#[no_coverage]
//~^ WARN `#[no_coverage]` may only be applied to function definitions
return
();
}
src/test/ui/lint/no-coverage.stderr
浏览文件 @
9473e219
warning: `#[no_coverage]`
can only be applied at the function level, not on code
directly
--> $DIR/no-coverage.rs:
36:5
warning: `#[no_coverage]`
does not propagate into items and must be applied to the contained functions
directly
--> $DIR/no-coverage.rs:
8:1
|
LL |
#[no_coverage]
|
^^^^^^^^^^^^^^
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
|
note: the lint level is defined here
--> $DIR/no-coverage.rs:4:9
...
...
@@ -10,20 +10,32 @@ note: the lint level is defined here
LL | #![warn(unused_attributes)]
| ^^^^^^^^^^^^^^^^^
warning: `#[no_coverage]` can only be applied at the function level, not on code directly
--> $DIR/no-coverage.rs:40:9
warning: `#[no_coverage]` does not propagate into items and must be applied to the contained functions directly
--> $DIR/no-coverage.rs:20:1
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
warning: `#[no_coverage]` may only be applied to function definitions
--> $DIR/no-coverage.rs:42:5
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
warning: `#[no_coverage]` may only be applied to function definitions
--> $DIR/no-coverage.rs:47:9
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
warning: `#[no_coverage]`
can only be applied at the function level, not on code directly
--> $DIR/no-coverage.rs:
44
:5
warning: `#[no_coverage]`
may only be applied to function definitions
--> $DIR/no-coverage.rs:
52
:5
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
error[E0788]: `#[no_coverage]` must be applied to coverable code
--> $DIR/no-coverage.rs:
7
:5
--> $DIR/no-coverage.rs:
11
:5
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
...
...
@@ -31,7 +43,7 @@ LL | const X: u32;
| ------------- not coverable code
error[E0788]: `#[no_coverage]` must be applied to coverable code
--> $DIR/no-coverage.rs:1
0
:5
--> $DIR/no-coverage.rs:1
4
:5
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
...
...
@@ -39,7 +51,7 @@ LL | type T;
| ------- not coverable code
error[E0788]: `#[no_coverage]` must be applied to coverable code
--> $DIR/no-coverage.rs:
19
:5
--> $DIR/no-coverage.rs:
25
:5
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
...
...
@@ -47,7 +59,7 @@ LL | type T = Self;
| -------------- not coverable code
error[E0788]: `#[no_coverage]` must be applied to coverable code
--> $DIR/no-coverage.rs:2
2
:5
--> $DIR/no-coverage.rs:2
8
:5
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
...
...
@@ -55,7 +67,7 @@ LL | type U = impl Trait;
| -------------------- not coverable code
error[E0788]: `#[no_coverage]` must be applied to coverable code
--> $DIR/no-coverage.rs:
27
:5
--> $DIR/no-coverage.rs:
33
:5
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
...
...
@@ -63,21 +75,27 @@ LL | static X: u32;
| -------------- not coverable code
error[E0788]: `#[no_coverage]` must be applied to coverable code
--> $DIR/no-coverage.rs:3
0
:5
--> $DIR/no-coverage.rs:3
6
:5
|
LL | #[no_coverage]
| ^^^^^^^^^^^^^^
LL | type T;
| ------- not coverable code
warning: `#[no_coverage]` does not propagate into items and must be applied to the contained functions directly
--> $DIR/no-coverage.rs:5:1
|
LL | #![no_coverage]
| ^^^^^^^^^^^^^^^
error: unconstrained opaque type
--> $DIR/no-coverage.rs:2
3
:14
--> $DIR/no-coverage.rs:2
9
:14
|
LL | type U = impl Trait;
| ^^^^^^^^^^
|
= note: `U` must be used in combination with a concrete type within the same module
error: aborting due to 7 previous errors;
3
warnings emitted
error: aborting due to 7 previous errors;
6
warnings emitted
For more information about this error, try `rustc --explain E0788`.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录