Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
35a3fa09
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,发现更多精彩内容 >>
提交
35a3fa09
编写于
3月 29, 2012
作者:
N
Niko Matsakis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add some comments explaining how the tables work
上级
2b45da8a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
35 addition
and
0 deletion
+35
-0
src/rustc/middle/ty.rs
src/rustc/middle/ty.rs
+10
-0
src/rustc/middle/typeck.rs
src/rustc/middle/typeck.rs
+25
-0
未找到文件。
src/rustc/middle/ty.rs
浏览文件 @
35a3fa09
...
...
@@ -194,8 +194,18 @@ enum borrowing {
sess
:
session
::
session
,
def_map
:
resolve
::
def_map
,
region_map
:
@
middle
::
region
::
region_map
,
// Stores the types for various nodes in the AST. Note that this table
// is not guaranteed to be populated until after typeck. See
// typeck::fn_ctxt for details.
node_types
:
node_type_table
,
// Stores the type parameters which were substituted to obtain the type
// of this node. This only applies to nodes that refer to entities
// parameterized by type parameters, such as generic fns, types, or
// other items.
node_type_substs
:
hashmap
<
node_id
,
[
t
]
>
,
items
:
ast_map
::
map
,
freevars
:
freevars
::
freevar_map
,
tcache
:
type_cache
,
...
...
src/rustc/middle/typeck.rs
浏览文件 @
35a3fa09
...
...
@@ -82,8 +82,33 @@ enum self_info { self_impl(ty::t, ast::node_id) }
locals
:
hashmap
<
ast
::
node_id
,
int
>
,
next_var_id
:
@
mut
int
,
next_region_var_id
:
@
mut
int
,
// While type checking a function, the intermediate types for the
// expressions, blocks, and so forth contained within the function are
// stored in these tables. These types may contain unresolved type
// variables. After type checking is complete, the functions in the
// writeback module are used to take the types from this table, resolve
// them, and then write them into their permanent home in the type
// context `ccx.tcx`.
//
// This means that during inferencing you should use `fcx.write_ty()`
// and `fcx.expr_ty()` / `fcx.node_ty()` to write/obtain the types of
// nodes within the function.
//
// The types of top-level items, which never contain unbound type
// variables, are stored directly into the `tcx` tables.
//
// n.b.: A type variable is not the same thing as a type parameter. A
// type variable is rather an "instance" of a type parameter: that is,
// given a generic function `fn foo<T>(t: T)`: while checking the
// function `foo`, the type `ty_param(0)` refers to the type `T`, which
// is treated in abstract. When `foo()` is called, however, `T` will be
// substituted for a fresh type variable `ty_var(N)`. This variable will
// eventually be resolved to some concrete type (which might itself be
// type parameter).
node_types
:
smallintmap
::
smallintmap
<
ty
::
t
>
,
node_type_substs
:
hashmap
<
ast
::
node_id
,
[
ty
::
t
]
>
,
ccx
:
@
crate_ctxt
};
// Determines whether the given node ID is a use of the def of
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录