Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
3b10b4e9
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,发现更多精彩内容 >>
提交
3b10b4e9
编写于
3月 14, 2017
作者:
T
Taylor Cramer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
On-demandify the typechecking of item bodies
上级
07a34293
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
6 deletion
+22
-6
src/librustc/ty/maps.rs
src/librustc/ty/maps.rs
+14
-0
src/librustc_typeck/check/mod.rs
src/librustc_typeck/check/mod.rs
+8
-6
未找到文件。
src/librustc/ty/maps.rs
浏览文件 @
3b10b4e9
...
...
@@ -13,6 +13,7 @@
use
middle
::
const_val
::
ConstVal
;
use
middle
::
privacy
::
AccessLevels
;
use
mir
;
use
session
::
CompileResult
;
use
ty
::{
self
,
CrateInherentImpls
,
Ty
,
TyCtxt
};
use
rustc_data_structures
::
indexed_vec
::
IndexVec
;
...
...
@@ -202,6 +203,13 @@ fn describe(_: TyCtxt, _: CrateNum) -> String {
}
}
impl
<
'tcx
>
QueryDescription
for
queries
::
typeck_item_bodies
<
'tcx
>
{
fn
describe
(
_
:
TyCtxt
,
_
:
CrateNum
)
->
String
{
format!
(
"type-checking all item bodies"
)
}
}
macro_rules!
define_maps
{
(
<
$tcx:tt
>
$
(
$
(
#[
$
attr:meta]
)
*
...
...
@@ -409,6 +417,8 @@ fn default() -> Self {
pub
coerce_unsized_info
:
ItemSignature
(
DefId
)
->
ty
::
adjustment
::
CoerceUnsizedInfo
,
pub
typeck_item_bodies
:
typeck_item_bodies_dep_node
(
CrateNum
)
->
CompileResult
,
pub
typeck_tables
:
TypeckTables
(
DefId
)
->
&
'tcx
ty
::
TypeckTables
<
'tcx
>
,
pub
coherent_trait
:
coherent_trait_dep_node
((
CrateNum
,
DefId
))
->
(),
...
...
@@ -444,3 +454,7 @@ fn crate_inherent_impls_dep_node(_: CrateNum) -> DepNode<DefId> {
fn
mir_shim
(
instance
:
ty
::
InstanceDef
)
->
DepNode
<
DefId
>
{
instance
.dep_node
()
}
fn
typeck_item_bodies_dep_node
(
_
:
CrateNum
)
->
DepNode
<
DefId
>
{
DepNode
::
TypeckBodiesKrate
}
src/librustc_typeck/check/mod.rs
浏览文件 @
3b10b4e9
...
...
@@ -84,7 +84,7 @@
use
dep_graph
::
DepNode
;
use
fmt_macros
::{
Parser
,
Piece
,
Position
};
use
hir
::
def
::{
Def
,
CtorKind
};
use
hir
::
def_id
::{
DefId
,
LOCAL_CRATE
};
use
hir
::
def_id
::{
CrateNum
,
DefId
,
LOCAL_CRATE
};
use
rustc
::
infer
::{
self
,
InferCtxt
,
InferOk
,
RegionVariableOrigin
,
TypeTrace
};
use
rustc
::
infer
::
type_variable
::{
self
,
TypeVariableOrigin
};
use
rustc
::
ty
::
subst
::{
Kind
,
Subst
,
Substs
};
...
...
@@ -541,19 +541,21 @@ pub fn check_item_types<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) -> CompileResult
}
pub
fn
check_item_bodies
<
'a
,
'tcx
>
(
tcx
:
TyCtxt
<
'a
,
'tcx
,
'tcx
>
)
->
CompileResult
{
return
tcx
.sess
.track_errors
(||
{
tcx
.dep_graph
.with_task
(
DepNode
::
TypeckBodiesKrate
,
tcx
,
(),
check_item_bodies_task
);
});
ty
::
queries
::
typeck_item_bodies
::
get
(
tcx
,
DUMMY_SP
,
LOCAL_CRATE
)
}
fn
check_item_bodies_task
<
'a
,
'tcx
>
(
tcx
:
TyCtxt
<
'a
,
'tcx
,
'tcx
>
,
():
())
{
fn
typeck_item_bodies
<
'a
,
'tcx
>
(
tcx
:
TyCtxt
<
'a
,
'tcx
,
'tcx
>
,
crate_num
:
CrateNum
)
->
CompileResult
{
debug_assert!
(
crate_num
==
LOCAL_CRATE
);
tcx
.sess
.track_errors
(||
{
tcx
.visit_all_bodies_in_krate
(|
body_owner_def_id
,
_
body_id
|
{
tcx
.item_tables
(
body_owner_def_id
);
});
}
}
)
}
pub
fn
provide
(
providers
:
&
mut
Providers
)
{
*
providers
=
Providers
{
typeck_item_bodies
,
typeck_tables
,
closure_type
,
closure_kind
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录