Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
2c3bb42e
R
Rust
项目概览
int
/
Rust
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
2c3bb42e
编写于
6月 19, 2022
作者:
M
Michael Goulet
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Only omit trailing comma if block doesn't come from macro expansion
上级
2b646bd5
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
50 addition
and
4 deletion
+50
-4
compiler/rustc_mir_build/src/thir/pattern/check_match.rs
compiler/rustc_mir_build/src/thir/pattern/check_match.rs
+14
-3
src/test/ui/issue-94866.rs
src/test/ui/issue-94866.rs
+14
-0
src/test/ui/issue-94866.stderr
src/test/ui/issue-94866.stderr
+21
-0
src/test/ui/pattern/usefulness/tuple-struct-nonexhaustive.stderr
...t/ui/pattern/usefulness/tuple-struct-nonexhaustive.stderr
+1
-1
未找到文件。
compiler/rustc_mir_build/src/thir/pattern/check_match.rs
浏览文件 @
2c3bb42e
...
...
@@ -829,7 +829,13 @@ fn non_exhaustive_match<'p, 'tcx>(
}
else
{
" "
.to_string
()
};
let
comma
=
if
matches!
(
only
.body.kind
,
hir
::
ExprKind
::
Block
(
..
))
{
""
}
else
{
","
};
let
comma
=
if
matches!
(
only
.body.kind
,
hir
::
ExprKind
::
Block
(
..
))
&&
only
.span
.ctxt
()
==
only
.body.span
.ctxt
()
{
""
}
else
{
","
};
suggestion
=
Some
((
only
.span
.shrink_to_hi
(),
format!
(
"{}{}{} => todo!()"
,
comma
,
pre_indentation
,
pattern
),
...
...
@@ -837,8 +843,13 @@ fn non_exhaustive_match<'p, 'tcx>(
}
[
..
,
prev
,
last
]
if
prev
.span
.ctxt
()
==
last
.span
.ctxt
()
=>
{
if
let
Ok
(
snippet
)
=
sm
.span_to_snippet
(
prev
.span
.between
(
last
.span
))
{
let
comma
=
if
matches!
(
last
.body.kind
,
hir
::
ExprKind
::
Block
(
..
))
{
""
}
else
{
","
};
let
comma
=
if
matches!
(
last
.body.kind
,
hir
::
ExprKind
::
Block
(
..
))
&&
last
.span
.ctxt
()
==
last
.body.span
.ctxt
()
{
""
}
else
{
","
};
suggestion
=
Some
((
last
.span
.shrink_to_hi
(),
format!
(
...
...
src/test/ui/issue-94866.rs
0 → 100644
浏览文件 @
2c3bb42e
macro_rules!
m
{
()
=>
{
{}
};
}
enum
Enum
{
A
,
B
}
fn
main
()
{
match
Enum
::
A
{
//~^ ERROR non-exhaustive patterns
Enum
::
A
=>
m!
()
}
}
src/test/ui/issue-94866.stderr
0 → 100644
浏览文件 @
2c3bb42e
error[E0004]: non-exhaustive patterns: `B` not covered
--> $DIR/issue-94866.rs:10:11
|
LL | match Enum::A {
| ^^^^^^^ pattern `B` not covered
|
note: `Enum` defined here
--> $DIR/issue-94866.rs:7:16
|
LL | enum Enum { A, B }
| ---- ^ not covered
= note: the matched value is of type `Enum`
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
LL ~ Enum::A => m!(),
LL + B => todo!()
|
error: aborting due to previous error
For more information about this error, try `rustc --explain E0004`.
src/test/ui/pattern/usefulness/tuple-struct-nonexhaustive.stderr
浏览文件 @
2c3bb42e
...
...
@@ -12,7 +12,7 @@ LL | struct Foo(isize, isize);
= note: the matched value is of type `Foo`
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
LL ~ Foo(2, b) => println!("{}", b)
LL ~ Foo(2, b) => println!("{}", b)
,
LL + Foo(_, _) => todo!()
|
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录