Skip to content

Commit 7feb264

Browse files
committed
Parse namespace attribute on foreign mods
1 parent 302b175 commit 7feb264

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

syntax/file.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ impl Parse for Item {
9494
RustItem::Struct(item) => Ok(Item::Struct(ItemStruct { attrs, ..item })),
9595
RustItem::Enum(item) => Ok(Item::Enum(ItemEnum { attrs, ..item })),
9696
RustItem::ForeignMod(item) => Ok(Item::ForeignMod(ItemForeignMod {
97-
attrs: item.attrs,
97+
attrs,
9898
unsafety,
9999
abi: item.abi,
100100
brace_token: item.brace_token,

syntax/parse.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,16 +214,26 @@ fn parse_foreign_mod(
214214

215215
let trusted = trusted || foreign_mod.unsafety.is_some();
216216

217+
let mut namespace = namespace.clone();
218+
attrs::parse(
219+
cx,
220+
&foreign_mod.attrs,
221+
attrs::Parser {
222+
namespace: Some(&mut namespace),
223+
..Default::default()
224+
},
225+
);
226+
217227
let mut items = Vec::new();
218228
for foreign in &foreign_mod.items {
219229
match foreign {
220230
ForeignItem::Type(foreign) => {
221-
match parse_extern_type(cx, foreign, lang, trusted, namespace) {
231+
match parse_extern_type(cx, foreign, lang, trusted, &namespace) {
222232
Ok(ety) => items.push(ety),
223233
Err(err) => cx.push(err),
224234
}
225235
}
226-
ForeignItem::Fn(foreign) => match parse_extern_fn(cx, foreign, lang, namespace) {
236+
ForeignItem::Fn(foreign) => match parse_extern_fn(cx, foreign, lang, &namespace) {
227237
Ok(efn) => items.push(efn),
228238
Err(err) => cx.push(err),
229239
},
@@ -234,7 +244,7 @@ fn parse_foreign_mod(
234244
}
235245
}
236246
ForeignItem::Verbatim(tokens) => {
237-
match parse_extern_verbatim(cx, tokens, lang, namespace) {
247+
match parse_extern_verbatim(cx, tokens, lang, &namespace) {
238248
Ok(api) => items.push(api),
239249
Err(err) => cx.push(err),
240250
}

0 commit comments

Comments
 (0)