Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
1e8a7f68
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,发现更多精彩内容 >>
提交
1e8a7f68
编写于
7月 25, 2017
作者:
V
Vadim Petrochenkov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Avoid duplicated errors for generic arguments in macro paths
上级
128f565d
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
16 addition
and
49 deletion
+16
-49
src/librustc_resolve/macros.rs
src/librustc_resolve/macros.rs
+14
-5
src/libsyntax/ext/base.rs
src/libsyntax/ext/base.rs
+1
-1
src/test/ui/span/macro-ty-params.stderr
src/test/ui/span/macro-ty-params.stderr
+1
-43
未找到文件。
src/librustc_resolve/macros.rs
浏览文件 @
1e8a7f68
...
...
@@ -385,12 +385,21 @@ fn resolve_invoc_to_def(&mut self, invoc: &mut Invocation, scope: Mark, force: b
fn
resolve_macro_to_def
(
&
mut
self
,
scope
:
Mark
,
path
:
&
ast
::
Path
,
kind
:
MacroKind
,
force
:
bool
)
->
Result
<
Def
,
Determinacy
>
{
let
ast
::
Path
{
ref
segments
,
span
}
=
*
path
;
segments
.iter
()
.find
(|
segment
|
segment
.parameters
.is_some
())
.map
(|
segment
|
{
let
def
=
self
.resolve_macro_to_def_inner
(
scope
,
path
,
kind
,
force
);
if
def
!=
Err
(
Determinacy
::
Undetermined
)
{
// Do not report duplicated errors on every undetermined resolution.
path
.segments
.iter
()
.find
(|
segment
|
segment
.parameters
.is_some
())
.map
(|
segment
|
{
self
.session
.span_err
(
segment
.parameters
.as_ref
()
.unwrap
()
.span
(),
"generic arguments in macro path"
);
});
}
def
}
fn
resolve_macro_to_def_inner
(
&
mut
self
,
scope
:
Mark
,
path
:
&
ast
::
Path
,
kind
:
MacroKind
,
force
:
bool
)
->
Result
<
Def
,
Determinacy
>
{
let
ast
::
Path
{
ref
segments
,
span
}
=
*
path
;
let
path
:
Vec
<
_
>
=
segments
.iter
()
.map
(|
seg
|
respan
(
seg
.span
,
seg
.identifier
))
.collect
();
let
invocation
=
self
.invocations
[
&
scope
];
self
.current_module
=
invocation
.module
.get
();
...
...
src/libsyntax/ext/base.rs
浏览文件 @
1e8a7f68
...
...
@@ -608,7 +608,7 @@ fn resolve_macro(&mut self, scope: Mark, path: &ast::Path, kind: MacroKind, forc
fn
check_unused_macros
(
&
self
);
}
#[derive(Copy,
Clone,
Debug)]
#[derive(Copy,
Clone,
Debug
,
PartialEq
)]
pub
enum
Determinacy
{
Determined
,
Undetermined
,
...
...
src/test/ui/span/macro-ty-params.stderr
浏览文件 @
1e8a7f68
...
...
@@ -16,47 +16,5 @@ error: generic arguments in macro path
26 | m!(MyTrait<>);
| ^^
error: generic arguments in macro path
--> $DIR/macro-ty-params.rs:26:15
|
26 | m!(MyTrait<>);
| ^^
error: generic arguments in macro path
--> $DIR/macro-ty-params.rs:26:15
|
26 | m!(MyTrait<>);
| ^^
error: generic arguments in macro path
--> $DIR/macro-ty-params.rs:22:8
|
22 | foo::<>!();
| ^^^^
error: generic arguments in macro path
--> $DIR/macro-ty-params.rs:18:8
|
18 | foo::<T>!();
| ^^^^^
error: generic arguments in macro path
--> $DIR/macro-ty-params.rs:18:8
|
18 | foo::<T>!();
| ^^^^^
error: generic arguments in macro path
--> $DIR/macro-ty-params.rs:22:8
|
22 | foo::<>!();
| ^^^^
error: generic arguments in macro path
--> $DIR/macro-ty-params.rs:26:15
|
26 | m!(MyTrait<>);
| ^^
error: aborting due to 10 previous errors
error: aborting due to 3 previous errors
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录