Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
c900abf4
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,发现更多精彩内容 >>
提交
c900abf4
编写于
9月 20, 2017
作者:
D
Douglas Campos
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
expose ParamEnv as a param
上级
77d3ca1b
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
4 addition
and
4 deletion
+4
-4
src/librustc/traits/trans/mod.rs
src/librustc/traits/trans/mod.rs
+2
-2
src/librustc_trans/monomorphize.rs
src/librustc_trans/monomorphize.rs
+2
-2
未找到文件。
src/librustc/traits/trans/mod.rs
浏览文件 @
c900abf4
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
use
std
::
marker
::
PhantomData
;
use
std
::
marker
::
PhantomData
;
use
syntax
::
ast
;
use
syntax
::
ast
;
use
syntax_pos
::
Span
;
use
syntax_pos
::
Span
;
use
traits
::{
FulfillmentContext
,
Obligation
,
ObligationCause
,
Reveal
,
SelectionContext
,
Vtable
};
use
traits
::{
FulfillmentContext
,
Obligation
,
ObligationCause
,
SelectionContext
,
Vtable
};
use
ty
::{
self
,
Ty
,
TyCtxt
};
use
ty
::{
self
,
Ty
,
TyCtxt
};
use
ty
::
subst
::{
Subst
,
Substs
};
use
ty
::
subst
::{
Subst
,
Substs
};
use
ty
::
fold
::{
TypeFoldable
,
TypeFolder
};
use
ty
::
fold
::{
TypeFoldable
,
TypeFolder
};
...
@@ -33,12 +33,12 @@ impl<'a, 'tcx> TyCtxt<'a, 'tcx, 'tcx> {
...
@@ -33,12 +33,12 @@ impl<'a, 'tcx> TyCtxt<'a, 'tcx, 'tcx> {
/// obligations *could be* resolved if we wanted to.
/// obligations *could be* resolved if we wanted to.
pub
fn
trans_fulfill_obligation
(
self
,
pub
fn
trans_fulfill_obligation
(
self
,
span
:
Span
,
span
:
Span
,
param_env
:
ty
::
ParamEnv
<
'tcx
>
,
trait_ref
:
ty
::
PolyTraitRef
<
'tcx
>
)
trait_ref
:
ty
::
PolyTraitRef
<
'tcx
>
)
->
Vtable
<
'tcx
,
()
>
->
Vtable
<
'tcx
,
()
>
{
{
// Remove any references to regions; this helps improve caching.
// Remove any references to regions; this helps improve caching.
let
trait_ref
=
self
.erase_regions
(
&
trait_ref
);
let
trait_ref
=
self
.erase_regions
(
&
trait_ref
);
let
param_env
=
ty
::
ParamEnv
::
empty
(
Reveal
::
All
);
self
.trans_trait_caches.trait_cache
.memoize
((
param_env
,
trait_ref
),
||
{
self
.trans_trait_caches.trait_cache
.memoize
((
param_env
,
trait_ref
),
||
{
debug!
(
"trans::fulfill_obligation(trait_ref={:?}, def_id={:?})"
,
debug!
(
"trans::fulfill_obligation(trait_ref={:?}, def_id={:?})"
,
...
...
src/librustc_trans/monomorphize.rs
浏览文件 @
c900abf4
...
@@ -112,7 +112,7 @@ fn resolve_associated_item<'a, 'tcx>(
...
@@ -112,7 +112,7 @@ fn resolve_associated_item<'a, 'tcx>(
def_id
,
trait_id
,
rcvr_substs
);
def_id
,
trait_id
,
rcvr_substs
);
let
trait_ref
=
ty
::
TraitRef
::
from_method
(
tcx
,
trait_id
,
rcvr_substs
);
let
trait_ref
=
ty
::
TraitRef
::
from_method
(
tcx
,
trait_id
,
rcvr_substs
);
let
vtbl
=
tcx
.trans_fulfill_obligation
(
DUMMY_SP
,
ty
::
Binder
(
trait_ref
));
let
vtbl
=
tcx
.trans_fulfill_obligation
(
DUMMY_SP
,
ty
::
ParamEnv
::
empty
(
traits
::
Reveal
::
All
),
ty
::
Binder
(
trait_ref
));
// Now that we know which impl is being used, we can dispatch to
// Now that we know which impl is being used, we can dispatch to
// the actual function:
// the actual function:
...
@@ -226,7 +226,7 @@ pub fn custom_coerce_unsize_info<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
...
@@ -226,7 +226,7 @@ pub fn custom_coerce_unsize_info<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
substs
:
tcx
.mk_substs_trait
(
source_ty
,
&
[
target_ty
])
substs
:
tcx
.mk_substs_trait
(
source_ty
,
&
[
target_ty
])
});
});
match
tcx
.trans_fulfill_obligation
(
DUMMY_SP
,
trait_ref
)
{
match
tcx
.trans_fulfill_obligation
(
DUMMY_SP
,
t
y
::
ParamEnv
::
empty
(
traits
::
Reveal
::
All
),
t
rait_ref
)
{
traits
::
VtableImpl
(
traits
::
VtableImplData
{
impl_def_id
,
..
})
=>
{
traits
::
VtableImpl
(
traits
::
VtableImplData
{
impl_def_id
,
..
})
=>
{
tcx
.coerce_unsized_info
(
impl_def_id
)
.custom_kind
.unwrap
()
tcx
.coerce_unsized_info
(
impl_def_id
)
.custom_kind
.unwrap
()
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录