mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-03 12:13:43 +00:00
auto merge of #17787 : bgamari/rust/fix-quote-method, r=huonw
The previous fix introduced in 75d49c8203
neglected to parse outer attributes as described in #17782.
This commit is contained in:
commit
3b945dcae6
@ -464,13 +464,8 @@ pub fn expand_quote_method(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[ast::TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
let e_attrs = cx.expr_vec_ng(sp);
|
||||
let e_visibility = cx.expr_path(cx.path_global(sp, vec!(
|
||||
id_ext("syntax"),
|
||||
id_ext("ast"),
|
||||
id_ext("Inherited"))));
|
||||
let expanded = expand_parse_call(cx, sp, "parse_method",
|
||||
vec!(e_attrs, e_visibility), tts);
|
||||
let expanded = expand_parse_call(cx, sp, "parse_method_with_outer_attributes",
|
||||
vec!(), tts);
|
||||
base::MacExpr::new(expanded)
|
||||
}
|
||||
|
||||
|
@ -4371,6 +4371,13 @@ impl<'a> Parser<'a> {
|
||||
(ident, ItemFn(decl, fn_style, abi, generics, body), Some(inner_attrs))
|
||||
}
|
||||
|
||||
/// Parse a method in a trait impl
|
||||
pub fn parse_method_with_outer_attributes(&mut self) -> P<Method> {
|
||||
let attrs = self.parse_outer_attributes();
|
||||
let visa = self.parse_visibility();
|
||||
self.parse_method(attrs, visa)
|
||||
}
|
||||
|
||||
/// Parse a method in a trait impl, starting with `attrs` attributes.
|
||||
pub fn parse_method(&mut self,
|
||||
attrs: Vec<Attribute>,
|
||||
|
@ -37,6 +37,7 @@ fn syntax_extension(cx: &ExtCtxt) {
|
||||
assert!(i.is_some());
|
||||
|
||||
let _j: P<syntax::ast::Method> = quote_method!(cx, fn foo(&self) {});
|
||||
let _k: P<syntax::ast::Method> = quote_method!(cx, #[doc = "hello"] fn foo(&self) {});
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
Loading…
Reference in New Issue
Block a user