Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
6cb5c098
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,发现更多精彩内容 >>
提交
6cb5c098
编写于
7月 13, 2011
作者:
M
Marijn Haverbeke
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
box patterns, expect for the trans part
上级
6914d32a
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
35 addition
and
3 deletion
+35
-3
src/comp/middle/alias.rs
src/comp/middle/alias.rs
+1
-0
src/comp/middle/resolve.rs
src/comp/middle/resolve.rs
+3
-0
src/comp/middle/typeck.rs
src/comp/middle/typeck.rs
+14
-0
src/comp/syntax/ast.rs
src/comp/syntax/ast.rs
+2
-0
src/comp/syntax/fold.rs
src/comp/syntax/fold.rs
+1
-0
src/comp/syntax/parse/parser.rs
src/comp/syntax/parse/parser.rs
+8
-3
src/comp/syntax/print/pprust.rs
src/comp/syntax/print/pprust.rs
+4
-0
src/comp/syntax/visit.rs
src/comp/syntax/visit.rs
+1
-0
src/comp/syntax/walk.rs
src/comp/syntax/walk.rs
+1
-0
未找到文件。
src/comp/middle/alias.rs
浏览文件 @
6cb5c098
...
...
@@ -312,6 +312,7 @@ fn walk_pat(&mutable vec[node_id] found, &@ast::pat p) {
case
(
ast
::
pat_rec
(
?
fields
,
_
))
{
for
(
ast
::
field_pat
f
in
fields
)
{
walk_pat
(
found
,
f
.pat
);
}
}
case
(
ast
::
pat_box
(
?
inner
))
{
walk_pat
(
found
,
inner
);
}
case
(
_
)
{
}
}
}
...
...
src/comp/middle/resolve.rs
浏览文件 @
6cb5c098
...
...
@@ -311,6 +311,7 @@ fn walk_pat(&env e, &scopes sc, &@ast::pat pat) {
case
(
ast
::
pat_rec
(
?
fields
,
_
))
{
for
(
ast
::
field_pat
f
in
fields
)
{
walk_pat
(
e
,
sc
,
f
.pat
);
}
}
case
(
ast
::
pat_box
(
?
inner
))
{
walk_pat
(
e
,
sc
,
inner
);
}
case
(
_
)
{
}
}
}
...
...
@@ -727,6 +728,7 @@ fn lookup_in_pat(&ident name, &ast::pat pat) -> option::t[def] {
if
(
!
option
::
is_none
(
found
))
{
ret
found
;
}
}
}
case
(
ast
::
pat_box
(
?
inner
))
{
ret
lookup_in_pat
(
name
,
*
inner
);
}
}
ret
none
[
def
];
}
...
...
@@ -1268,6 +1270,7 @@ fn walk_pat(checker ch, &@ast::pat p) {
case
(
ast
::
pat_rec
(
?
fields
,
_
))
{
for
(
ast
::
field_pat
f
in
fields
)
{
walk_pat
(
ch
,
f
.pat
);
}
}
case
(
ast
::
pat_box
(
?
inner
))
{
walk_pat
(
ch
,
inner
);
}
case
(
_
)
{
}
}
}
...
...
src/comp/middle/typeck.rs
浏览文件 @
6cb5c098
...
...
@@ -1435,6 +1435,20 @@ fn matches(&str name, &ty::field f) -> bool {
}
write
::
ty_only_fixup
(
fcx
,
pat
.id
,
expected
);
}
case
(
ast
::
pat_box
(
?
inner
))
{
alt
(
structure_of
(
fcx
,
pat
.span
,
expected
))
{
case
(
ty
::
ty_box
(
?
e_inner
))
{
check_pat
(
fcx
,
map
,
inner
,
e_inner
.ty
);
write
::
ty_only_fixup
(
fcx
,
pat
.id
,
expected
);
}
case
(
_
)
{
fcx
.ccx.tcx.sess
.span_fatal
(
pat
.span
,
"mismatched types: expected "
+
ty_to_str
(
fcx
.ccx.tcx
,
expected
)
+
" found box"
);
}
}
}
}
}
...
...
src/comp/syntax/ast.rs
浏览文件 @
6cb5c098
...
...
@@ -126,6 +126,7 @@ fn def_id_of_def(def d) -> def_id {
pat_lit
(
@
lit
);
pat_tag
(
path
,
(
@
pat
)[]);
pat_rec
(
field_pat
[],
bool
);
pat_box
(
@
pat
);
}
type
pat_id_map
=
std
::
map
::
hashmap
[
str
,
ast
::
node_id
];
...
...
@@ -143,6 +144,7 @@ fn walk(&pat_id_map map, &@pat pat) {
pat_rec
(
?
fields
,
_
)
{
for
(
field_pat
f
in
fields
)
{
walk
(
map
,
f
.pat
);
}
}
pat_box
(
?
inner
)
{
walk
(
map
,
inner
);
}
_
{}
}
}
...
...
src/comp/syntax/fold.rs
浏览文件 @
6cb5c098
...
...
@@ -292,6 +292,7 @@ fn noop_fold_pat(&pat_ p, ast_fold fld) -> pat_ {
}
pat_rec
(
fs
,
etc
)
}
case
(
pat_box
(
?
inner
))
{
pat_box
(
fld
.fold_pat
(
inner
))
}
};
}
...
...
src/comp/syntax/parse/parser.rs
浏览文件 @
6cb5c098
...
...
@@ -1459,6 +1459,12 @@ fn parse_pat(&parser p) -> @ast::pat {
}
}
}
case
(
token
::
AT
)
{
p
.bump
();
auto
sub
=
parse_pat
(
p
);
pat
=
ast
::
pat_box
(
sub
);
hi
=
sub
.span.hi
;
}
case
(
token
::
LBRACE
)
{
p
.bump
();
auto
fields
=
~
[];
...
...
@@ -2313,9 +2319,8 @@ fn parse_rest_import_name(&parser p, ast::ident first,
}
alt
(
p
.peek
())
{
case
(
token
::
IDENT
(
_
,
_
))
{
identifiers
+=
~
[
parse_ident
(
p
)];
}
case
(
//the lexer can't tell the different kinds of stars apart ) :
token
::
BINOP
(
token
::
STAR
))
{
//the lexer can't tell the different kinds of stars apart ) :
case
(
token
::
BINOP
(
token
::
STAR
))
{
glob
=
true
;
p
.bump
();
}
...
...
src/comp/syntax/print/pprust.rs
浏览文件 @
6cb5c098
...
...
@@ -1136,6 +1136,10 @@ fn get_span(&ast::field_pat f) -> codemap::span {
}
word
(
s
.s
,
"}"
);
}
case
(
ast
::
pat_box
(
?
inner
))
{
word
(
s
.s
,
"@"
);
print_pat
(
s
,
inner
);
}
}
s
.ann
.post
(
ann_node
);
}
...
...
src/comp/syntax/visit.rs
浏览文件 @
6cb5c098
...
...
@@ -200,6 +200,7 @@ fn visit_pat[E](&@pat p, &E e, &vt[E] v) {
case
(
pat_rec
(
?
fields
,
_
))
{
for
(
field_pat
f
in
fields
)
{
v
.visit_pat
(
f
.pat
,
e
,
v
);
}
}
case
(
pat_box
(
?
inner
))
{
v
.visit_pat
(
inner
,
e
,
v
);
}
case
(
_
)
{
}
}
}
...
...
src/comp/syntax/walk.rs
浏览文件 @
6cb5c098
...
...
@@ -192,6 +192,7 @@ fn walk_pat(&ast_visitor v, &@ast::pat p) {
case
(
ast
::
pat_rec
(
?
fields
,
_
))
{
for
(
ast
::
field_pat
f
in
fields
)
{
walk_pat
(
v
,
f
.pat
);
}
}
case
(
ast
::
pat_box
(
?
inner
))
{
walk_pat
(
v
,
inner
);
}
case
(
_
)
{
}
}
v
.visit_pat_post
(
p
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录