diff --git a/src/libsyntax/ext/quote.rs b/src/libsyntax/ext/quote.rs index d7bab3e2ffaa0..0f5928ee19842 100644 --- a/src/libsyntax/ext/quote.rs +++ b/src/libsyntax/ext/quote.rs @@ -135,6 +135,12 @@ pub mod rt { } } + impl ToSource for ast::Arg { + fn to_source(&self) -> String { + pprust::arg_to_str(self) + } + } + impl<'a> ToSource for &'a str { fn to_source(&self) -> String { let lit = dummy_spanned(ast::LitStr( @@ -264,6 +270,7 @@ pub mod rt { impl_to_tokens!(Generics) impl_to_tokens!(@ast::Expr) impl_to_tokens!(ast::Block) + impl_to_tokens!(ast::Arg) impl_to_tokens_self!(&'a str) impl_to_tokens!(()) impl_to_tokens!(char) diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 440070e70a6bb..05c2558da486f 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -242,6 +242,10 @@ pub fn variant_to_str(var: &ast::Variant) -> String { to_str(|s| s.print_variant(var)) } +pub fn arg_to_str(arg: &ast::Arg) -> String { + to_str(|s| s.print_arg(arg)) +} + pub fn visibility_qualified(vis: ast::Visibility, s: &str) -> String { match vis { ast::Public => format!("pub {}", s).to_string(),