From cc28ae5201b0927683b253dbe893a62a188aa5a5 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Sat, 7 Jun 2014 13:46:41 +0000 Subject: [PATCH] Implement ToSource and ToToken for ast::Arg This makes ast::Arg usable in the quote_ macros. Please note that this commit doesn't include a regression test. There are tests that use the quote macros, but all of them are ignored. Due to that, there is no obvious (to me) way to test this. Since this change is absolutely trivial and only hooks up an additional type to existing infrastructure (which presumably is tested elsewhere), I concluded it's not worth the effort to follow up on this. --- src/libsyntax/ext/quote.rs | 7 +++++++ src/libsyntax/print/pprust.rs | 4 ++++ 2 files changed, 11 insertions(+) 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(),