Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
62f23c2b
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,发现更多精彩内容 >>
提交
62f23c2b
编写于
2月 20, 2019
作者:
V
varkor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add Const generic param to ty
Co-Authored-By:
N
Gabriel Smith
<
yodaldevoid@users.noreply.github.com
>
上级
f22dca0a
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
24 addition
and
4 deletion
+24
-4
src/librustc/ty/mod.rs
src/librustc/ty/mod.rs
+24
-4
未找到文件。
src/librustc/ty/mod.rs
浏览文件 @
62f23c2b
...
...
@@ -837,7 +837,8 @@ pub enum GenericParamDefKind {
has_default
:
bool
,
object_lifetime_default
:
ObjectLifetimeDefault
,
synthetic
:
Option
<
hir
::
SyntheticTyParamKind
>
,
}
},
Const
,
}
#[derive(Clone,
RustcEncodable,
RustcDecodable)]
...
...
@@ -880,6 +881,7 @@ pub fn to_bound_region(&self) -> ty::BoundRegion {
pub
struct
GenericParamCount
{
pub
lifetimes
:
usize
,
pub
types
:
usize
,
pub
consts
:
usize
,
}
/// Information about the formal type/lifetime parameters associated
...
...
@@ -915,6 +917,7 @@ pub fn own_counts(&self) -> GenericParamCount {
match
param
.kind
{
GenericParamDefKind
::
Lifetime
=>
own_counts
.lifetimes
+=
1
,
GenericParamDefKind
::
Type
{
..
}
=>
own_counts
.types
+=
1
,
GenericParamDefKind
::
Const
=>
own_counts
.consts
+=
1
,
};
}
...
...
@@ -924,7 +927,7 @@ pub fn own_counts(&self) -> GenericParamCount {
pub
fn
requires_monomorphization
(
&
self
,
tcx
:
TyCtxt
<
'a
,
'gcx
,
'tcx
>
)
->
bool
{
for
param
in
&
self
.params
{
match
param
.kind
{
GenericParamDefKind
::
Type
{
..
}
=>
return
true
,
GenericParamDefKind
::
Type
{
..
}
|
GenericParamDefKind
::
Const
=>
return
true
,
GenericParamDefKind
::
Lifetime
=>
{}
}
}
...
...
@@ -944,7 +947,7 @@ pub fn region_param(&'tcx self,
if
let
Some
(
index
)
=
param
.index
.checked_sub
(
self
.parent_count
as
u32
)
{
let
param
=
&
self
.params
[
index
as
usize
];
match
param
.kind
{
ty
::
GenericParamDefKind
::
Lifetime
=>
param
,
GenericParamDefKind
::
Lifetime
=>
param
,
_
=>
bug!
(
"expected lifetime parameter, but found another generic parameter"
)
}
}
else
{
...
...
@@ -961,7 +964,7 @@ pub fn type_param(&'tcx self,
if
let
Some
(
index
)
=
param
.idx
.checked_sub
(
self
.parent_count
as
u32
)
{
let
param
=
&
self
.params
[
index
as
usize
];
match
param
.kind
{
ty
::
GenericParamDefKind
::
Type
{
..
}
=>
param
,
GenericParamDefKind
::
Type
{
..
}
=>
param
,
_
=>
bug!
(
"expected type parameter, but found another generic parameter"
)
}
}
else
{
...
...
@@ -969,6 +972,23 @@ pub fn type_param(&'tcx self,
.type_param
(
param
,
tcx
)
}
}
/// Returns the `ConstParameterDef` associated with this `ParamConst`.
pub
fn
const_param
(
&
'tcx
self
,
param
:
&
ParamConst
,
tcx
:
TyCtxt
<
'a
,
'gcx
,
'tcx
>
)
->
&
GenericParamDef
{
if
let
Some
(
index
)
=
param
.index
.checked_sub
(
self
.parent_count
as
u32
)
{
let
param
=
&
self
.params
[
index
as
usize
];
match
param
.kind
{
GenericParamDefKind
::
Const
=>
param
,
_
=>
bug!
(
"expected const parameter, but found another generic parameter"
)
}
}
else
{
tcx
.generics_of
(
self
.parent
.expect
(
"parent_count>0 but no parent?"
))
.const_param
(
param
,
tcx
)
}
}
}
/// Bounds on generics.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录