Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
0110f5e0
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,发现更多精彩内容 >>
提交
0110f5e0
编写于
2月 09, 2015
作者:
K
Keegan McAllister
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
syntax::fold: Allow removing attributes
上级
0ba9e1fa
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
16 deletion
+20
-16
src/libsyntax/ext/expand.rs
src/libsyntax/ext/expand.rs
+2
-2
src/libsyntax/fold.rs
src/libsyntax/fold.rs
+18
-14
未找到文件。
src/libsyntax/ext/expand.rs
浏览文件 @
0110f5e0
...
...
@@ -844,7 +844,7 @@ fn expand_arm(arm: ast::Arm, fld: &mut MacroExpander) -> ast::Arm {
arm
.guard
.map
(|
g
|
fld
.fold_expr
(
rename_fld
.fold_expr
(
g
)));
let
rewritten_body
=
fld
.fold_expr
(
rename_fld
.fold_expr
(
arm
.body
));
ast
::
Arm
{
attrs
:
arm
.attrs
.move_map
(|
x
|
fld
.fold_attribute
(
x
)
),
attrs
:
fold
::
fold_attrs
(
arm
.attrs
,
fld
),
pats
:
rewritten_pats
,
guard
:
rewritten_guard
,
body
:
rewritten_body
,
...
...
@@ -1273,7 +1273,7 @@ fn expand_method(m: P<ast::Method>, fld: &mut MacroExpander) -> SmallVector<P<as
let
(
rewritten_fn_decl
,
rewritten_body
)
=
expand_and_rename_fn_decl_and_block
(
decl
,
body
,
fld
);
SmallVector
::
one
(
P
(
ast
::
Method
{
attrs
:
m
.attrs
.move_map
(|
a
|
fld
.fold_attribute
(
a
)
),
attrs
:
fold
::
fold_attrs
(
m
.attrs
,
fld
),
id
:
id
,
span
:
fld
.new_span
(
m
.span
),
node
:
ast
::
MethDecl
(
fld
.fold_ident
(
ident
),
...
...
src/libsyntax/fold.rs
浏览文件 @
0110f5e0
...
...
@@ -223,7 +223,7 @@ fn fold_lifetime_def(&mut self, l: LifetimeDef) -> LifetimeDef {
noop_fold_lifetime_def
(
l
,
self
)
}
fn
fold_attribute
(
&
mut
self
,
at
:
Attribute
)
->
Attribute
{
fn
fold_attribute
(
&
mut
self
,
at
:
Attribute
)
->
Option
<
Attribute
>
{
noop_fold_attribute
(
at
,
self
)
}
...
...
@@ -373,9 +373,13 @@ pub fn noop_fold_view_path<T: Folder>(view_path: P<ViewPath>, fld: &mut T) -> P<
})
}
pub
fn
fold_attrs
<
T
:
Folder
>
(
attrs
:
Vec
<
Attribute
>
,
fld
:
&
mut
T
)
->
Vec
<
Attribute
>
{
attrs
.into_iter
()
.flat_map
(|
x
|
fld
.fold_attribute
(
x
)
.into_iter
())
.collect
()
}
pub
fn
noop_fold_arm
<
T
:
Folder
>
(
Arm
{
attrs
,
pats
,
guard
,
body
}:
Arm
,
fld
:
&
mut
T
)
->
Arm
{
Arm
{
attrs
:
attrs
.move_map
(|
x
|
fld
.fold_attribute
(
x
)
),
attrs
:
fold_attrs
(
attrs
,
fld
),
pats
:
pats
.move_map
(|
x
|
fld
.fold_pat
(
x
)),
guard
:
guard
.map
(|
x
|
fld
.fold_expr
(
x
)),
body
:
fld
.fold_expr
(
body
),
...
...
@@ -475,7 +479,7 @@ pub fn noop_fold_variant<T: Folder>(v: P<Variant>, fld: &mut T) -> P<Variant> {
node
:
Variant_
{
id
:
fld
.new_id
(
id
),
name
:
name
,
attrs
:
attrs
.move_map
(|
x
|
fld
.fold_attribute
(
x
)
),
attrs
:
fold_attrs
(
attrs
,
fld
),
kind
:
match
kind
{
TupleVariantKind
(
variant_args
)
=>
{
TupleVariantKind
(
variant_args
.move_map
(|
x
|
...
...
@@ -553,9 +557,9 @@ pub fn noop_fold_local<T: Folder>(l: P<Local>, fld: &mut T) -> P<Local> {
})
}
pub
fn
noop_fold_attribute
<
T
:
Folder
>
(
at
:
Attribute
,
fld
:
&
mut
T
)
->
Attribute
{
pub
fn
noop_fold_attribute
<
T
:
Folder
>
(
at
:
Attribute
,
fld
:
&
mut
T
)
->
Option
<
Attribute
>
{
let
Spanned
{
node
:
Attribute_
{
id
,
style
,
value
,
is_sugared_doc
},
span
}
=
at
;
Spanned
{
S
ome
(
S
panned
{
node
:
Attribute_
{
id
:
id
,
style
:
style
,
...
...
@@ -563,7 +567,7 @@ pub fn noop_fold_attribute<T: Folder>(at: Attribute, fld: &mut T) -> Attribute {
is_sugared_doc
:
is_sugared_doc
},
span
:
fld
.new_span
(
span
)
}
}
)
}
pub
fn
noop_fold_explicit_self_underscore
<
T
:
Folder
>
(
es
:
ExplicitSelf_
,
fld
:
&
mut
T
)
...
...
@@ -843,8 +847,8 @@ pub fn noop_fold_typedef<T>(t: Typedef, folder: &mut T)
where
T
:
Folder
{
let
new_id
=
folder
.new_id
(
t
.id
);
let
new_span
=
folder
.new_span
(
t
.span
);
let
new_attrs
=
t
.attrs
.iter
()
.map
(|
attr
|
{
folder
.fold_attribute
((
*
attr
)
.clone
())
let
new_attrs
=
t
.attrs
.iter
()
.
flat_
map
(|
attr
|
{
folder
.fold_attribute
((
*
attr
)
.clone
())
.into_iter
()
})
.collect
();
let
new_ident
=
folder
.fold_ident
(
t
.ident
);
let
new_type
=
folder
.fold_ty
(
t
.typ
);
...
...
@@ -864,7 +868,7 @@ pub fn noop_fold_associated_type<T>(at: AssociatedType, folder: &mut T)
{
let
new_attrs
=
at
.attrs
.iter
()
.
map
(|
attr
|
folder
.fold_attribute
((
*
attr
)
.clone
()
))
.
flat_map
(|
attr
|
folder
.fold_attribute
((
*
attr
)
.clone
())
.into_iter
(
))
.collect
();
let
new_param
=
folder
.fold_ty_param
(
at
.ty_param
);
ast
::
AssociatedType
{
...
...
@@ -906,7 +910,7 @@ pub fn noop_fold_struct_field<T: Folder>(f: StructField, fld: &mut T) -> StructF
id
:
fld
.new_id
(
id
),
kind
:
kind
,
ty
:
fld
.fold_ty
(
ty
),
attrs
:
attrs
.move_map
(|
a
|
fld
.fold_attribute
(
a
))
attrs
:
fold_attrs
(
attrs
,
fld
),
},
span
:
fld
.new_span
(
span
)
}
...
...
@@ -1069,7 +1073,7 @@ pub fn noop_fold_type_method<T: Folder>(m: TypeMethod, fld: &mut T) -> TypeMetho
TypeMethod
{
id
:
fld
.new_id
(
id
),
ident
:
fld
.fold_ident
(
ident
),
attrs
:
attrs
.move_map
(|
a
|
fld
.fold_attribute
(
a
)
),
attrs
:
fold_attrs
(
attrs
,
fld
),
unsafety
:
unsafety
,
abi
:
abi
,
decl
:
fld
.fold_fn_decl
(
decl
),
...
...
@@ -1151,7 +1155,7 @@ pub fn noop_fold_item_simple<T: Folder>(Item {id, ident, attrs, node, vis, span}
Item
{
id
:
id
,
ident
:
folder
.fold_ident
(
ident
),
attrs
:
attrs
.move_map
(|
e
|
folder
.fold_attribute
(
e
)
),
attrs
:
fold_attrs
(
attrs
,
folder
),
node
:
node
,
vis
:
vis
,
span
:
folder
.new_span
(
span
)
...
...
@@ -1162,7 +1166,7 @@ pub fn noop_fold_foreign_item<T: Folder>(ni: P<ForeignItem>, folder: &mut T) ->
ni
.map
(|
ForeignItem
{
id
,
ident
,
attrs
,
node
,
span
,
vis
}|
ForeignItem
{
id
:
folder
.new_id
(
id
),
ident
:
folder
.fold_ident
(
ident
),
attrs
:
attrs
.move_map
(|
x
|
folder
.fold_attribute
(
x
)
),
attrs
:
fold_attrs
(
attrs
,
folder
),
node
:
match
node
{
ForeignItemFn
(
fdec
,
generics
)
=>
{
ForeignItemFn
(
folder
.fold_fn_decl
(
fdec
),
folder
.fold_generics
(
generics
))
...
...
@@ -1181,7 +1185,7 @@ pub fn noop_fold_foreign_item<T: Folder>(ni: P<ForeignItem>, folder: &mut T) ->
pub
fn
noop_fold_method
<
T
:
Folder
>
(
m
:
P
<
Method
>
,
folder
:
&
mut
T
)
->
SmallVector
<
P
<
Method
>>
{
SmallVector
::
one
(
m
.map
(|
Method
{
id
,
attrs
,
node
,
span
}|
Method
{
id
:
folder
.new_id
(
id
),
attrs
:
attrs
.move_map
(|
a
|
folder
.fold_attribute
(
a
)
),
attrs
:
fold_attrs
(
attrs
,
folder
),
node
:
match
node
{
MethDecl
(
ident
,
generics
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录