Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
941b2e32
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,发现更多精彩内容 >>
提交
941b2e32
编写于
9月 05, 2018
作者:
E
Esteban Küber
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
slight rewording of labels
上级
d7a74be0
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
23 addition
and
17 deletion
+23
-17
src/librustc_resolve/lib.rs
src/librustc_resolve/lib.rs
+19
-13
src/test/ui/error-codes/E0401.stderr
src/test/ui/error-codes/E0401.stderr
+1
-1
src/test/ui/issues/issue-12796.stderr
src/test/ui/issues/issue-12796.stderr
+1
-1
src/test/ui/use-self-in-inner-fn.rs
src/test/ui/use-self-in-inner-fn.rs
+1
-1
src/test/ui/use-self-in-inner-fn.stderr
src/test/ui/use-self-in-inner-fn.stderr
+1
-1
未找到文件。
src/librustc_resolve/lib.rs
浏览文件 @
941b2e32
...
...
@@ -197,15 +197,26 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
err
.span_label
(
span
,
"use of type variable from outer function"
);
let
cm
=
resolver
.session
.source_map
();
let
mut
is_self
=
false
;
match
outer_def
{
Def
::
SelfTy
(
_
,
maybe_impl_defid
)
=>
{
if
let
Some
(
impl_span
)
=
maybe_impl_defid
.map_or
(
None
,
|
def_id
|
resolver
.definitions
.opt_span
(
def_id
))
{
err
.span_label
(
reduce_impl_span_to_impl_keyword
(
cm
,
impl_span
),
"`Self` type implicitly declared here, on the `impl`"
);
Def
::
SelfTy
(
maybe_trait_defid
,
maybe_impl_defid
)
=>
{
if
let
Some
(
impl_span
)
=
maybe_impl_defid
.and_then
(|
def_id
|
{
resolver
.definitions
.opt_span
(
def_id
)
})
{
err
.span_label
(
reduce_impl_span_to_impl_keyword
(
cm
,
impl_span
),
"`Self` type implicitly declared here, on the `impl`"
,
);
}
match
(
maybe_trait_defid
,
maybe_impl_defid
)
{
(
Some
(
_
),
None
)
=>
{
err
.span_label
(
span
,
"can't use `Self` here"
);
}
(
_
,
Some
(
_
))
=>
{
err
.span_label
(
span
,
"use a type here instead"
);
}
(
None
,
None
)
=>
bug!
(
"`impl` without trait nor type?"
),
}
is_self
=
true
;
return
err
;
},
Def
::
TyParam
(
typaram_defid
)
=>
{
if
let
Some
(
typaram_span
)
=
resolver
.definitions
.opt_span
(
typaram_defid
)
{
...
...
@@ -221,12 +232,7 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
// Try to retrieve the span of the function signature and generate a new message with
// a local type parameter
let
sugg_msg
=
"try using a local type parameter instead"
;
if
is_self
{
// Suggest using the actual type
err
.span_label
(
span
,
"use a materialized type here instead"
);
}
else
if
let
Some
(
(
sugg_span
,
new_snippet
),
)
=
cm
.generate_local_type_param_snippet
(
span
)
{
if
let
Some
((
sugg_span
,
new_snippet
))
=
cm
.generate_local_type_param_snippet
(
span
)
{
// Suggest the modification to the user
err
.span_suggestion_with_applicability
(
sugg_span
,
...
...
src/test/ui/error-codes/E0401.stderr
浏览文件 @
941b2e32
...
...
@@ -30,7 +30,7 @@ LL | fn helper(sel: &Self) -> u8 { //~ ERROR E0401
| ^^^^
| |
| use of type variable from outer function
| use a
materialized
type here instead
| use a type here instead
error: aborting due to 3 previous errors
...
...
src/test/ui/issues/issue-12796.stderr
浏览文件 @
941b2e32
...
...
@@ -5,7 +5,7 @@ LL | fn inner(_: &Self) {
| ^^^^
| |
| use of type variable from outer function
|
use a materialized type here instead
|
can't use `Self` here
error: aborting due to previous error
...
...
src/test/ui/use-self-in-inner-fn.rs
浏览文件 @
941b2e32
...
...
@@ -16,7 +16,7 @@ fn banana(&mut self) {
fn
peach
(
this
:
&
Self
)
{
//~^ ERROR can't use type parameters from outer function
//~| NOTE use of type variable from outer function
//~| NOTE use a
materialized
type here instead
//~| NOTE use a type here instead
}
}
}
...
...
src/test/ui/use-self-in-inner-fn.stderr
浏览文件 @
941b2e32
...
...
@@ -8,7 +8,7 @@ LL | fn peach(this: &Self) {
| ^^^^
| |
| use of type variable from outer function
| use a
materialized
type here instead
| use a type here instead
error: aborting due to previous error
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录