Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
110b3b97
R
Rust
项目概览
int
/
Rust
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
110b3b97
编写于
10月 05, 2018
作者:
N
Niko Matsakis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
canonicalizer.rs: rustfmt
上级
42f401dd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
24 deletion
+18
-24
src/librustc/infer/canonical/canonicalizer.rs
src/librustc/infer/canonical/canonicalizer.rs
+18
-24
未找到文件。
src/librustc/infer/canonical/canonicalizer.rs
浏览文件 @
110b3b97
...
...
@@ -48,7 +48,7 @@ impl<'cx, 'gcx, 'tcx> InferCtxt<'cx, 'gcx, 'tcx> {
pub
fn
canonicalize_query
<
V
>
(
&
self
,
value
:
&
V
,
var_values
:
&
mut
SmallCanonicalVarValues
<
'tcx
>
var_values
:
&
mut
SmallCanonicalVarValues
<
'tcx
>
,
)
->
Canonicalized
<
'gcx
,
V
>
where
V
:
TypeFoldable
<
'tcx
>
+
Lift
<
'gcx
>
,
...
...
@@ -96,10 +96,7 @@ pub fn canonicalize_query<V>(
/// out the [chapter in the rustc guide][c].
///
/// [c]: https://rust-lang-nursery.github.io/rustc-guide/traits/canonicalization.html#canonicalizing-the-query-result
pub
fn
canonicalize_response
<
V
>
(
&
self
,
value
:
&
V
,
)
->
Canonicalized
<
'gcx
,
V
>
pub
fn
canonicalize_response
<
V
>
(
&
self
,
value
:
&
V
)
->
Canonicalized
<
'gcx
,
V
>
where
V
:
TypeFoldable
<
'tcx
>
+
Lift
<
'gcx
>
,
{
...
...
@@ -112,7 +109,7 @@ pub fn canonicalize_response<V>(
static_region
:
false
,
other_free_regions
:
false
,
},
&
mut
var_values
&
mut
var_values
,
)
}
...
...
@@ -128,7 +125,7 @@ pub fn canonicalize_response<V>(
pub
fn
canonicalize_hr_query_hack
<
V
>
(
&
self
,
value
:
&
V
,
var_values
:
&
mut
SmallCanonicalVarValues
<
'tcx
>
var_values
:
&
mut
SmallCanonicalVarValues
<
'tcx
>
,
)
->
Canonicalized
<
'gcx
,
V
>
where
V
:
TypeFoldable
<
'tcx
>
+
Lift
<
'gcx
>
,
...
...
@@ -147,7 +144,7 @@ pub fn canonicalize_hr_query_hack<V>(
static_region
:
false
,
other_free_regions
:
true
,
},
var_values
var_values
,
)
}
}
...
...
@@ -192,8 +189,7 @@ fn fold_region(&mut self, r: ty::Region<'tcx>) -> ty::Region<'tcx> {
}
ty
::
ReVar
(
vid
)
=>
{
let
r
=
self
.infcx
let
r
=
self
.infcx
.unwrap
()
.borrow_region_constraints
()
.opportunistic_resolve_var
(
self
.tcx
,
vid
);
...
...
@@ -305,7 +301,7 @@ fn canonicalize<V>(
infcx
:
Option
<&
'cx
InferCtxt
<
'cx
,
'gcx
,
'tcx
>>
,
tcx
:
TyCtxt
<
'cx
,
'gcx
,
'tcx
>
,
canonicalize_region_mode
:
CanonicalizeRegionMode
,
var_values
:
&
'cx
mut
SmallCanonicalVarValues
<
'tcx
>
var_values
:
&
'cx
mut
SmallCanonicalVarValues
<
'tcx
>
,
)
->
Canonicalized
<
'gcx
,
V
>
where
V
:
TypeFoldable
<
'tcx
>
+
Lift
<
'gcx
>
,
...
...
@@ -398,25 +394,23 @@ fn canonical_var(&mut self, info: CanonicalVarInfo, kind: Kind<'tcx>) -> Canonic
// fill up `indices` to facilitate subsequent lookups.
if
var_values
.spilled
()
{
assert
!
(
indices
.is_empty
());
*
indices
=
var_values
.iter
()
.enumerate
()
.map
(|(
i
,
&
kind
)|
(
kind
,
CanonicalVar
::
new
(
i
)))
.collect
();
*
indices
=
var_values
.iter
()
.enumerate
()
.map
(|(
i
,
&
kind
)|
(
kind
,
CanonicalVar
::
new
(
i
)))
.collect
();
}
// The cv is the index of the appended element.
CanonicalVar
::
new
(
var_values
.len
()
-
1
)
}
}
else
{
// `var_values` is large. Do a hashmap search via `indices`.
*
indices
.entry
(
kind
)
.or_insert_with
(||
{
variables
.push
(
info
);
var_values
.push
(
kind
);
assert_eq!
(
variables
.len
(),
var_values
.len
());
CanonicalVar
::
new
(
variables
.len
()
-
1
)
})
*
indices
.entry
(
kind
)
.or_insert_with
(||
{
variables
.push
(
info
);
var_values
.push
(
kind
);
assert_eq!
(
variables
.len
(),
var_values
.len
());
CanonicalVar
::
new
(
variables
.len
()
-
1
)
})
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录