Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
09185394
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,发现更多精彩内容 >>
提交
09185394
编写于
12月 21, 2019
作者:
J
Janusz Marcinkiewicz
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add arguments to suggestion method call
上级
8e5b2c80
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
4 deletion
+19
-4
src/librustc_resolve/late/diagnostics.rs
src/librustc_resolve/late/diagnostics.rs
+16
-1
src/test/ui/self/suggest-self-2.stderr
src/test/ui/self/suggest-self-2.stderr
+3
-3
未找到文件。
src/librustc_resolve/late/diagnostics.rs
浏览文件 @
09185394
...
@@ -262,6 +262,7 @@ pub(crate) fn smart_resolve_report_errors(
...
@@ -262,6 +262,7 @@ pub(crate) fn smart_resolve_report_errors(
// Check if the first argument is `self` and suggest calling a method.
// Check if the first argument is `self` and suggest calling a method.
let
mut
has_self_arg
=
false
;
let
mut
has_self_arg
=
false
;
let
mut
args_span
=
None
;
if
let
PathSource
::
Expr
(
parent
)
=
source
{
if
let
PathSource
::
Expr
(
parent
)
=
source
{
match
&
parent
.map
(|
p
|
&
p
.kind
)
{
match
&
parent
.map
(|
p
|
&
p
.kind
)
{
Some
(
ExprKind
::
Call
(
_
,
args
))
if
args
.len
()
>
0
=>
{
Some
(
ExprKind
::
Call
(
_
,
args
))
if
args
.len
()
>
0
=>
{
...
@@ -270,6 +271,13 @@ pub(crate) fn smart_resolve_report_errors(
...
@@ -270,6 +271,13 @@ pub(crate) fn smart_resolve_report_errors(
match
expr_kind
{
match
expr_kind
{
ExprKind
::
Path
(
_
,
arg_name
)
if
arg_name
.segments
.len
()
==
1
=>
{
ExprKind
::
Path
(
_
,
arg_name
)
if
arg_name
.segments
.len
()
==
1
=>
{
has_self_arg
=
arg_name
.segments
[
0
]
.ident.name
==
kw
::
SelfLower
;
has_self_arg
=
arg_name
.segments
[
0
]
.ident.name
==
kw
::
SelfLower
;
if
args
.len
()
>
1
{
args_span
=
Some
(
Span
::
new
(
args
[
1
]
.span
.lo
(),
args
.last
()
.unwrap
()
.span
.hi
(),
parent
.unwrap
()
.span
.ctxt
(),
));
}
break
;
break
;
},
},
ExprKind
::
AddrOf
(
_
,
_
,
expr
)
=>
expr_kind
=
&
expr
.kind
,
ExprKind
::
AddrOf
(
_
,
_
,
expr
)
=>
expr_kind
=
&
expr
.kind
,
...
@@ -282,10 +290,17 @@ pub(crate) fn smart_resolve_report_errors(
...
@@ -282,10 +290,17 @@ pub(crate) fn smart_resolve_report_errors(
};
};
if
has_self_arg
{
if
has_self_arg
{
let
mut
args_snippet
:
String
=
String
::
from
(
""
);
if
let
Some
(
args_span
)
=
args_span
{
if
let
Ok
(
snippet
)
=
self
.r.session
.source_map
()
.span_to_snippet
(
args_span
)
{
args_snippet
=
snippet
;
}
}
err
.span_suggestion
(
err
.span_suggestion
(
span
,
span
,
&
format!
(
"try calling `{}` as a method"
,
ident
),
&
format!
(
"try calling `{}` as a method"
,
ident
),
format!
(
"self.{}
"
,
path_str
),
format!
(
"self.{}
({})"
,
path_str
,
args_snippet
),
Applicability
::
MachineApplicable
,
Applicability
::
MachineApplicable
,
);
);
return
(
err
,
candidates
);
return
(
err
,
candidates
);
...
...
src/test/ui/self/suggest-self-2.stderr
浏览文件 @
09185394
...
@@ -2,19 +2,19 @@ error[E0425]: cannot find function `bar` in this scope
...
@@ -2,19 +2,19 @@ error[E0425]: cannot find function `bar` in this scope
--> $DIR/suggest-self-2.rs:5:9
--> $DIR/suggest-self-2.rs:5:9
|
|
LL | bar(self);
LL | bar(self);
| ^^^ help: try calling `bar` as a method: `self.bar`
| ^^^ help: try calling `bar` as a method: `self.bar
()
`
error[E0425]: cannot find function `bar` in this scope
error[E0425]: cannot find function `bar` in this scope
--> $DIR/suggest-self-2.rs:9:9
--> $DIR/suggest-self-2.rs:9:9
|
|
LL | bar(&&self, 102);
LL | bar(&&self, 102);
| ^^^ help: try calling `bar` as a method: `self.bar`
| ^^^ help: try calling `bar` as a method: `self.bar
(102)
`
error[E0425]: cannot find function `bar` in this scope
error[E0425]: cannot find function `bar` in this scope
--> $DIR/suggest-self-2.rs:13:9
--> $DIR/suggest-self-2.rs:13:9
|
|
LL | bar(&mut self, 102, &"str");
LL | bar(&mut self, 102, &"str");
| ^^^ help: try calling `bar` as a method: `self.bar`
| ^^^ help: try calling `bar` as a method: `self.bar
(102, &"str")
`
error[E0425]: cannot find function `bar` in this scope
error[E0425]: cannot find function `bar` in this scope
--> $DIR/suggest-self-2.rs:17:9
--> $DIR/suggest-self-2.rs:17:9
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录