Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
8f770f10
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,发现更多精彩内容 >>
提交
8f770f10
编写于
12月 03, 2014
作者:
N
Niko Matsakis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extend Typer interface to include `expr_ty_adjusted` so that we can
remove another direct dependency on tcx from euv.
上级
f3ff084d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
16 addition
and
4 deletion
+16
-4
src/librustc/middle/expr_use_visitor.rs
src/librustc/middle/expr_use_visitor.rs
+1
-1
src/librustc/middle/mem_categorization.rs
src/librustc/middle/mem_categorization.rs
+1
-0
src/librustc/middle/ty.rs
src/librustc/middle/ty.rs
+5
-1
src/librustc_trans/trans/common.rs
src/librustc_trans/trans/common.rs
+6
-2
src/librustc_typeck/check/mod.rs
src/librustc_typeck/check/mod.rs
+3
-0
未找到文件。
src/librustc/middle/expr_use_visitor.rs
浏览文件 @
8f770f10
...
...
@@ -647,7 +647,7 @@ pub fn walk_expr(&mut self, expr: &ast::Expr) {
}
fn
walk_callee
(
&
mut
self
,
call
:
&
ast
::
Expr
,
callee
:
&
ast
::
Expr
)
{
let
callee_ty
=
ty
::
expr_ty_adjusted
(
self
.tcx
(),
callee
);
let
callee_ty
=
return_if_err!
(
self
.typer
.expr_ty_adjusted
(
callee
)
);
debug!
(
"walk_callee: callee={} callee_ty={}"
,
callee
.repr
(
self
.tcx
()),
callee_ty
.repr
(
self
.tcx
()));
let
call_scope
=
region
::
CodeExtent
::
from_node_id
(
call
.id
);
...
...
src/librustc/middle/mem_categorization.rs
浏览文件 @
8f770f10
...
...
@@ -285,6 +285,7 @@ impl<'t,TYPER:'t> Copy for MemCategorizationContext<'t,TYPER> {}
pub
trait
Typer
<
'tcx
>
{
fn
tcx
<
'a
>
(
&
'a
self
)
->
&
'a
ty
::
ctxt
<
'tcx
>
;
fn
node_ty
(
&
self
,
id
:
ast
::
NodeId
)
->
McResult
<
Ty
<
'tcx
>>
;
fn
expr_ty_adjusted
(
&
self
,
expr
:
&
ast
::
Expr
)
->
McResult
<
Ty
<
'tcx
>>
;
fn
node_method_ty
(
&
self
,
method_call
:
ty
::
MethodCall
)
->
Option
<
Ty
<
'tcx
>>
;
fn
adjustments
<
'a
>
(
&
'a
self
)
->
&
'a
RefCell
<
NodeMap
<
ty
::
AutoAdjustment
<
'tcx
>>>
;
fn
is_method_call
(
&
self
,
id
:
ast
::
NodeId
)
->
bool
;
...
...
src/librustc/middle/ty.rs
浏览文件 @
8f770f10
...
...
@@ -6169,7 +6169,11 @@ fn node_ty(&self, id: ast::NodeId) -> mc::McResult<Ty<'tcx>> {
Ok
(
ty
::
node_id_to_type
(
self
,
id
))
}
fn
node_method_ty
(
&
self
,
method_call
:
MethodCall
)
->
Option
<
Ty
<
'tcx
>>
{
fn
expr_ty_adjusted
(
&
self
,
expr
:
&
ast
::
Expr
)
->
mc
::
McResult
<
Ty
<
'tcx
>>
{
Ok
(
ty
::
expr_ty_adjusted
(
self
,
expr
))
}
fn
node_method_ty
(
&
self
,
method_call
:
ty
::
MethodCall
)
->
Option
<
Ty
<
'tcx
>>
{
self
.method_map
.borrow
()
.get
(
&
method_call
)
.map
(|
method
|
method
.ty
)
}
...
...
src/librustc_trans/trans/common.rs
浏览文件 @
8f770f10
...
...
@@ -467,6 +467,10 @@ fn node_ty(&self, id: ast::NodeId) -> mc::McResult<Ty<'tcx>> {
Ok
(
node_id_type
(
self
,
id
))
}
fn
expr_ty_adjusted
(
&
self
,
expr
:
&
ast
::
Expr
)
->
mc
::
McResult
<
Ty
<
'tcx
>>
{
Ok
(
expr_ty_adjusted
(
self
,
expr
))
}
fn
node_method_ty
(
&
self
,
method_call
:
ty
::
MethodCall
)
->
Option
<
Ty
<
'tcx
>>
{
self
.tcx
()
.method_map
...
...
@@ -752,11 +756,11 @@ pub fn node_id_type<'blk, 'tcx>(bcx: &BlockS<'blk, 'tcx>, id: ast::NodeId) -> Ty
monomorphize_type
(
bcx
,
t
)
}
pub
fn
expr_ty
<
'blk
,
'tcx
>
(
bcx
:
Block
<
'blk
,
'tcx
>
,
ex
:
&
ast
::
Expr
)
->
Ty
<
'tcx
>
{
pub
fn
expr_ty
<
'blk
,
'tcx
>
(
bcx
:
&
BlockS
<
'blk
,
'tcx
>
,
ex
:
&
ast
::
Expr
)
->
Ty
<
'tcx
>
{
node_id_type
(
bcx
,
ex
.id
)
}
pub
fn
expr_ty_adjusted
<
'blk
,
'tcx
>
(
bcx
:
Block
<
'blk
,
'tcx
>
,
ex
:
&
ast
::
Expr
)
->
Ty
<
'tcx
>
{
pub
fn
expr_ty_adjusted
<
'blk
,
'tcx
>
(
bcx
:
&
BlockS
<
'blk
,
'tcx
>
,
ex
:
&
ast
::
Expr
)
->
Ty
<
'tcx
>
{
monomorphize_type
(
bcx
,
ty
::
expr_ty_adjusted
(
bcx
.tcx
(),
ex
))
}
...
...
src/librustc_typeck/check/mod.rs
浏览文件 @
8f770f10
...
...
@@ -290,6 +290,9 @@ fn node_ty(&self, id: ast::NodeId) -> McResult<Ty<'tcx>> {
let
ty
=
self
.node_ty
(
id
);
Ok
(
self
.infcx
()
.resolve_type_vars_if_possible
(
ty
))
}
fn
expr_ty_adjusted
(
&
self
,
expr
:
&
ast
::
Expr
)
->
McResult
<
Ty
<
'tcx
>>
{
let
ty
=
self
.expr_ty_adjusted
(
expr
);
Ok
(
self
.infcx
()
.resolve_type_vars_if_possible
(
ty
))
}
fn
node_method_ty
(
&
self
,
method_call
:
ty
::
MethodCall
)
->
Option
<
Ty
<
'tcx
>>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录