Skip to content

Commit 302b175

Browse files
committed
Consistently use &Namespace in parser function signatures
1 parent 07c5141 commit 302b175

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

syntax/parse.rs

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ pub fn parse_items(
3030
let mut apis = Vec::new();
3131
for item in items {
3232
match item {
33-
Item::Struct(item) => match parse_struct(cx, item, namespace.clone()) {
33+
Item::Struct(item) => match parse_struct(cx, item, namespace) {
3434
Ok(strct) => apis.push(strct),
3535
Err(err) => cx.push(err),
3636
},
37-
Item::Enum(item) => match parse_enum(cx, item, namespace.clone()) {
37+
Item::Enum(item) => match parse_enum(cx, item, namespace) {
3838
Ok(enm) => apis.push(enm),
3939
Err(err) => cx.push(err),
4040
},
@@ -52,7 +52,7 @@ pub fn parse_items(
5252
apis
5353
}
5454

55-
fn parse_struct(cx: &mut Errors, item: ItemStruct, mut namespace: Namespace) -> Result<Api> {
55+
fn parse_struct(cx: &mut Errors, item: ItemStruct, namespace: &Namespace) -> Result<Api> {
5656
let generics = &item.generics;
5757
if !generics.params.is_empty() || generics.where_clause.is_some() {
5858
let struct_token = item.struct_token;
@@ -67,6 +67,7 @@ fn parse_struct(cx: &mut Errors, item: ItemStruct, mut namespace: Namespace) ->
6767

6868
let mut doc = Doc::new();
6969
let mut derives = Vec::new();
70+
let mut namespace = namespace.clone();
7071
attrs::parse(
7172
cx,
7273
&item.attrs,
@@ -78,34 +79,36 @@ fn parse_struct(cx: &mut Errors, item: ItemStruct, mut namespace: Namespace) ->
7879
},
7980
);
8081

81-
let fields = match item.fields {
82+
let named_fields = match item.fields {
8283
Fields::Named(fields) => fields,
8384
Fields::Unit => return Err(Error::new_spanned(item, "unit structs are not supported")),
8485
Fields::Unnamed(_) => {
8586
return Err(Error::new_spanned(item, "tuple structs are not supported"));
8687
}
8788
};
8889

90+
let fields = named_fields
91+
.named
92+
.into_iter()
93+
.map(|field| {
94+
Ok(Var {
95+
ident: field.ident.unwrap(),
96+
ty: parse_type(&field.ty, &namespace)?,
97+
})
98+
})
99+
.collect::<Result<_>>()?;
100+
89101
Ok(Api::Struct(Struct {
90102
doc,
91103
derives,
92104
struct_token: item.struct_token,
93-
name: Pair::new(namespace.clone(), item.ident),
94-
brace_token: fields.brace_token,
95-
fields: fields
96-
.named
97-
.into_iter()
98-
.map(|field| {
99-
Ok(Var {
100-
ident: field.ident.unwrap(),
101-
ty: parse_type(&field.ty, &namespace)?,
102-
})
103-
})
104-
.collect::<Result<_>>()?,
105+
name: Pair::new(namespace, item.ident),
106+
brace_token: named_fields.brace_token,
107+
fields,
105108
}))
106109
}
107110

108-
fn parse_enum(cx: &mut Errors, item: ItemEnum, mut namespace: Namespace) -> Result<Api> {
111+
fn parse_enum(cx: &mut Errors, item: ItemEnum, namespace: &Namespace) -> Result<Api> {
109112
let generics = &item.generics;
110113
if !generics.params.is_empty() || generics.where_clause.is_some() {
111114
let enum_token = item.enum_token;
@@ -120,6 +123,7 @@ fn parse_enum(cx: &mut Errors, item: ItemEnum, mut namespace: Namespace) -> Resu
120123

121124
let mut doc = Doc::new();
122125
let mut repr = None;
126+
let mut namespace = namespace.clone();
123127
attrs::parse(
124128
cx,
125129
&item.attrs,
@@ -214,13 +218,12 @@ fn parse_foreign_mod(
214218
for foreign in &foreign_mod.items {
215219
match foreign {
216220
ForeignItem::Type(foreign) => {
217-
match parse_extern_type(cx, foreign, lang, trusted, namespace.clone()) {
221+
match parse_extern_type(cx, foreign, lang, trusted, namespace) {
218222
Ok(ety) => items.push(ety),
219223
Err(err) => cx.push(err),
220224
}
221225
}
222-
ForeignItem::Fn(foreign) => match parse_extern_fn(cx, foreign, lang, namespace.clone())
223-
{
226+
ForeignItem::Fn(foreign) => match parse_extern_fn(cx, foreign, lang, namespace) {
224227
Ok(efn) => items.push(efn),
225228
Err(err) => cx.push(err),
226229
},
@@ -231,7 +234,7 @@ fn parse_foreign_mod(
231234
}
232235
}
233236
ForeignItem::Verbatim(tokens) => {
234-
match parse_extern_verbatim(cx, tokens, lang, namespace.clone()) {
237+
match parse_extern_verbatim(cx, tokens, lang, namespace) {
235238
Ok(api) => items.push(api),
236239
Err(err) => cx.push(err),
237240
}
@@ -283,9 +286,10 @@ fn parse_extern_type(
283286
foreign_type: &ForeignItemType,
284287
lang: Lang,
285288
trusted: bool,
286-
mut namespace: Namespace,
289+
namespace: &Namespace,
287290
) -> Result<Api> {
288291
let mut doc = Doc::new();
292+
let mut namespace = namespace.clone();
289293
attrs::parse(
290294
cx,
291295
&foreign_type.attrs,
@@ -315,7 +319,7 @@ fn parse_extern_fn(
315319
cx: &mut Errors,
316320
foreign_fn: &ForeignItemFn,
317321
lang: Lang,
318-
mut namespace: Namespace,
322+
namespace: &Namespace,
319323
) -> Result<Api> {
320324
let generics = &foreign_fn.sig.generics;
321325
if !generics.params.is_empty() || generics.where_clause.is_some() {
@@ -334,6 +338,7 @@ fn parse_extern_fn(
334338
let mut doc = Doc::new();
335339
let mut cxx_name = None;
336340
let mut rust_name = None;
341+
let mut namespace = namespace.clone();
337342
attrs::parse(
338343
cx,
339344
&foreign_fn.attrs,
@@ -438,7 +443,7 @@ fn parse_extern_verbatim(
438443
cx: &mut Errors,
439444
tokens: &TokenStream,
440445
lang: Lang,
441-
mut namespace: Namespace,
446+
namespace: &Namespace,
442447
) -> Result<Api> {
443448
// type Alias = crate::path::to::Type;
444449
let parse = |input: ParseStream| -> Result<TypeAlias> {
@@ -455,6 +460,7 @@ fn parse_extern_verbatim(
455460
let ty: RustType = input.parse()?;
456461
let semi_token: Token![;] = input.parse()?;
457462
let mut doc = Doc::new();
463+
let mut namespace = namespace.clone();
458464
attrs::parse(
459465
cx,
460466
&attrs,

0 commit comments

Comments
 (0)