]> git.lizzy.rs Git - rust.git/commitdiff
Fixed quote_method!() implementation
authorVladimir Pouzanov <farcaller@gmail.com>
Sat, 20 Sep 2014 16:02:48 +0000 (17:02 +0100)
committerVladimir Pouzanov <farcaller@gmail.com>
Mon, 29 Sep 2014 08:45:36 +0000 (09:45 +0100)
Parser.parse_method now has a second argument, I assume ast::Inherited is the correct visibility in this case.

src/libsyntax/ext/quote.rs
src/test/run-pass-fulldeps/quote-tokens.rs

index aa2a23dd2768aff621919e3cb8f973ed67a93156..0503c1e8cc2f161da84ec7996c01b6556a71f077 100644 (file)
@@ -464,9 +464,13 @@ pub fn expand_quote_method(cx: &mut ExtCtxt,
                            sp: Span,
                            tts: &[ast::TokenTree])
                            -> Box<base::MacResult+'static> {
-    let e_param_colons = cx.expr_none(sp);
+    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_param_colons), tts);
+                                     vec!(e_attrs, e_visibility), tts);
     base::MacExpr::new(expanded)
 }
 
index b7c4c14638226e23a56fc2a73987e0ce3655ff68..7b48e7a84b65608bade3c724e658335604a1e978 100644 (file)
@@ -35,6 +35,8 @@ fn syntax_extension(cx: &ExtCtxt) {
 
     let i: Option<P<syntax::ast::Item>> = quote_item!(cx, #[deriving(Eq)] struct Foo; );
     assert!(i.is_some());
+
+    let _j: P<syntax::ast::Method> = quote_method!(cx, fn foo(&self) {});
 }
 
 fn main() {