Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
aef1e35e
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,发现更多精彩内容 >>
提交
aef1e35e
编写于
6月 30, 2020
作者:
E
est31
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Emit unused externs
上级
76c500ec
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
34 addition
and
0 deletion
+34
-0
compiler/rustc_errors/src/emitter.rs
compiler/rustc_errors/src/emitter.rs
+3
-0
compiler/rustc_errors/src/json.rs
compiler/rustc_errors/src/json.rs
+19
-0
compiler/rustc_errors/src/lib.rs
compiler/rustc_errors/src/lib.rs
+8
-0
compiler/rustc_metadata/src/creader.rs
compiler/rustc_metadata/src/creader.rs
+4
-0
未找到文件。
compiler/rustc_errors/src/emitter.rs
浏览文件 @
aef1e35e
...
...
@@ -195,6 +195,9 @@ fn emit_artifact_notification(&mut self, _path: &Path, _artifact_type: &str) {}
fn
emit_future_breakage_report
(
&
mut
self
,
_
diags
:
Vec
<
(
FutureBreakage
,
Diagnostic
)
>
)
{}
/// Emit list of unused externs
fn
emit_unused_externs
(
&
mut
self
,
_u
nused_externs
:
&
[
&
str
])
{}
/// Checks if should show explanations about "rustc --explain"
fn
should_show_explain
(
&
self
)
->
bool
{
true
...
...
compiler/rustc_errors/src/json.rs
浏览文件 @
aef1e35e
...
...
@@ -159,6 +159,19 @@ fn emit_future_breakage_report(&mut self, diags: Vec<(FutureBreakage, crate::Dia
}
}
fn
emit_unused_externs
(
&
mut
self
,
unused_externs
:
&
[
&
str
])
{
let
data
=
UnusedExterns
{
unused_extern_names
:
unused_externs
};
let
result
=
if
self
.pretty
{
writeln!
(
&
mut
self
.dst
,
"{}"
,
as_pretty_json
(
&
data
))
}
else
{
writeln!
(
&
mut
self
.dst
,
"{}"
,
as_json
(
&
data
))
}
.and_then
(|
_
|
self
.dst
.flush
());
if
let
Err
(
e
)
=
result
{
panic!
(
"failed to print unused externs: {:?}"
,
e
);
}
}
fn
source_map
(
&
self
)
->
Option
<&
Lrc
<
SourceMap
>>
{
Some
(
&
self
.sm
)
}
...
...
@@ -322,6 +335,12 @@ struct FutureIncompatReport {
future_incompat_report
:
Vec
<
FutureBreakageItem
>
,
}
#[derive(Encodable)]
struct
UnusedExterns
<
'a
,
'b
>
{
/// List of unused externs by their names.
unused_extern_names
:
&
'a
[
&
'b
str
],
}
impl
Diagnostic
{
fn
from_errors_diagnostic
(
diag
:
&
crate
::
Diagnostic
,
je
:
&
JsonEmitter
)
->
Diagnostic
{
let
sugg
=
diag
.suggestions
.iter
()
.map
(|
sugg
|
Diagnostic
{
...
...
compiler/rustc_errors/src/lib.rs
浏览文件 @
aef1e35e
...
...
@@ -767,6 +767,10 @@ pub fn emit_future_breakage_report(&self, diags: Vec<(FutureBreakage, Diagnostic
self
.inner
.borrow_mut
()
.emitter
.emit_future_breakage_report
(
diags
)
}
pub
fn
emit_unused_externs
(
&
self
,
unused_externs
:
&
[
&
str
])
{
self
.inner
.borrow_mut
()
.emit_unused_externs
(
unused_externs
)
}
pub
fn
delay_as_bug
(
&
self
,
diagnostic
:
Diagnostic
)
{
self
.inner
.borrow_mut
()
.delay_as_bug
(
diagnostic
)
}
...
...
@@ -841,6 +845,10 @@ fn emit_artifact_notification(&mut self, path: &Path, artifact_type: &str) {
self
.emitter
.emit_artifact_notification
(
path
,
artifact_type
);
}
fn
emit_unused_externs
(
&
mut
self
,
unused_externs
:
&
[
&
str
])
{
self
.emitter
.emit_unused_externs
(
unused_externs
);
}
fn
treat_err_as_bug
(
&
self
)
->
bool
{
self
.flags.treat_err_as_bug
.map_or
(
false
,
|
c
|
self
.err_count
()
>=
c
.get
())
}
...
...
compiler/rustc_metadata/src/creader.rs
浏览文件 @
aef1e35e
...
...
@@ -893,6 +893,7 @@ fn inject_dependency_if(
fn
report_unused_deps
(
&
mut
self
,
krate
:
&
ast
::
Crate
)
{
// Make a point span rather than covering the whole file
let
span
=
krate
.span
.shrink_to_lo
();
let
mut
unused_externs
=
Vec
::
new
();
// Complain about anything left over
for
(
name
,
entry
)
in
self
.sess.opts.externs
.iter
()
{
if
let
ExternLocation
::
FoundInLibrarySearchDirectories
=
entry
.location
{
...
...
@@ -917,6 +918,7 @@ fn report_unused_deps(&mut self, krate: &ast::Crate) {
)
}
};
unused_externs
.push
(
name
as
&
str
);
self
.sess.parse_sess
.buffer_lint_with_diagnostic
(
lint
::
builtin
::
UNUSED_CRATE_DEPENDENCIES
,
span
,
...
...
@@ -929,6 +931,8 @@ fn report_unused_deps(&mut self, krate: &ast::Crate) {
diag
,
);
}
// FIXME: add gating
self
.sess.parse_sess.span_diagnostic
.emit_unused_externs
(
&
unused_externs
);
}
pub
fn
postprocess
(
&
mut
self
,
krate
:
&
ast
::
Crate
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录