Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
a19aed22
R
Rust
项目概览
int
/
Rust
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
a19aed22
编写于
10月 11, 2019
作者:
S
Santiago Pastorino
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add intern table for `List<PlaceElem<'tcx>>`
上级
190802cf
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
2 deletion
+20
-2
src/librustc/ty/context.rs
src/librustc/ty/context.rs
+20
-2
未找到文件。
src/librustc/ty/context.rs
浏览文件 @
a19aed22
...
...
@@ -21,7 +21,7 @@
use
crate
::
middle
::
lang_items
;
use
crate
::
middle
::
resolve_lifetime
::{
self
,
ObjectLifetimeDefault
};
use
crate
::
middle
::
stability
;
use
crate
::
mir
::{
Body
,
interpret
,
ProjectionKind
,
Promoted
};
use
crate
::
mir
::{
Body
,
interpret
,
P
laceElem
,
P
rojectionKind
,
Promoted
};
use
crate
::
mir
::
interpret
::{
ConstValue
,
Allocation
,
Scalar
};
use
crate
::
ty
::
subst
::{
GenericArg
,
InternalSubsts
,
SubstsRef
,
Subst
};
use
crate
::
ty
::
ReprOptions
;
...
...
@@ -106,6 +106,7 @@ pub struct CtxtInterners<'tcx> {
goal
:
InternedSet
<
'tcx
,
GoalKind
<
'tcx
>>
,
goal_list
:
InternedSet
<
'tcx
,
List
<
Goal
<
'tcx
>>>
,
projs
:
InternedSet
<
'tcx
,
List
<
ProjectionKind
>>
,
place_elems
:
InternedSet
<
'tcx
,
List
<
PlaceElem
<
'tcx
>>>
,
const_
:
InternedSet
<
'tcx
,
Const
<
'tcx
>>
,
}
...
...
@@ -124,6 +125,7 @@ fn new(arena: &'tcx SyncDroplessArena) -> CtxtInterners<'tcx> {
goal
:
Default
::
default
(),
goal_list
:
Default
::
default
(),
projs
:
Default
::
default
(),
place_elems
:
Default
::
default
(),
const_
:
Default
::
default
(),
}
}
...
...
@@ -2145,6 +2147,13 @@ fn borrow(&self) -> &[ProjectionKind] {
}
}
impl
<
'tcx
>
Borrow
<
[
PlaceElem
<
'tcx
>
]
>
for
Interned
<
'tcx
,
List
<
PlaceElem
<
'tcx
>>>
{
fn
borrow
(
&
self
)
->
&
[
PlaceElem
<
'tcx
>
]
{
&
self
.0
[
..
]
}
}
impl
<
'tcx
>
Borrow
<
RegionKind
>
for
Interned
<
'tcx
,
RegionKind
>
{
fn
borrow
(
&
self
)
->
&
RegionKind
{
&
self
.0
...
...
@@ -2245,7 +2254,8 @@ pub fn $method(self, v: &[$ty]) -> &'tcx List<$ty> {
predicates
:
_
intern_predicates
(
Predicate
<
'tcx
>
),
clauses
:
_
intern_clauses
(
Clause
<
'tcx
>
),
goal_list
:
_
intern_goals
(
Goal
<
'tcx
>
),
projs
:
_
intern_projs
(
ProjectionKind
)
projs
:
_
intern_projs
(
ProjectionKind
),
place_elems
:
_
intern_place_elems
(
PlaceElem
<
'tcx
>
)
);
impl
<
'tcx
>
TyCtxt
<
'tcx
>
{
...
...
@@ -2631,6 +2641,14 @@ pub fn intern_projs(self, ps: &[ProjectionKind]) -> &'tcx List<ProjectionKind> {
}
}
pub
fn
intern_place_elems
(
self
,
ts
:
&
[
PlaceElem
<
'tcx
>
])
->
&
'tcx
List
<
PlaceElem
<
'tcx
>>
{
if
ts
.len
()
==
0
{
List
::
empty
()
}
else
{
self
._intern_place_elems
(
ts
)
}
}
pub
fn
intern_canonical_var_infos
(
self
,
ts
:
&
[
CanonicalVarInfo
])
->
CanonicalVarInfos
<
'tcx
>
{
if
ts
.len
()
==
0
{
List
::
empty
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录