From 045e766bf3de78b73029a0c4ad8391bcf2387f9c Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Sun, 22 Jan 2023 13:50:51 +0100 Subject: [PATCH] implement verbatim in prettyplease --- prettyplease-forked/src/expr.rs | 9 +-------- prettyplease-forked/src/item.rs | 32 ++++++++------------------------ prettyplease-forked/src/pat.rs | 2 +- prettyplease-forked/src/ty.rs | 11 +---------- 4 files changed, 11 insertions(+), 43 deletions(-) diff --git a/prettyplease-forked/src/expr.rs b/prettyplease-forked/src/expr.rs index 0689595..500a79d 100644 --- a/prettyplease-forked/src/expr.rs +++ b/prettyplease-forked/src/expr.rs @@ -686,13 +686,6 @@ impl Printer { self.word("}"); } - #[cfg(not(feature = "verbatim"))] - fn expr_verbatim(&mut self, expr: &TokenStream) { - if !expr.is_empty() { - unimplemented!("Expr::Verbatim `{}`", expr); - } - } - #[cfg(feature = "verbatim")] fn expr_verbatim(&mut self, tokens: &TokenStream) { use syn::parse::{Parse, ParseStream, Result}; @@ -803,7 +796,7 @@ impl Printer { let expr: ExprVerbatim = match syn::parse2(tokens.clone()) { Ok(expr) => expr, - Err(_) => unimplemented!("Expr::Verbatim `{}`", tokens), + Err(_) => return self.word(tokens.to_string()), }; match expr { diff --git a/prettyplease-forked/src/item.rs b/prettyplease-forked/src/item.rs index 1c33012..718f284 100644 --- a/prettyplease-forked/src/item.rs +++ b/prettyplease-forked/src/item.rs @@ -351,14 +351,6 @@ impl Printer { self.hardbreak(); } - #[cfg(not(feature = "verbatim"))] - fn item_verbatim(&mut self, item: &TokenStream) { - if !item.is_empty() { - unimplemented!("Item::Verbatim `{}`", item); - } - self.hardbreak(); - } - #[cfg(feature = "verbatim")] fn item_verbatim(&mut self, tokens: &TokenStream) { use syn::parse::{Parse, ParseStream, Result}; @@ -387,7 +379,7 @@ impl Printer { let item: ItemVerbatim = match syn::parse2(tokens.clone()) { Ok(item) => item, - Err(_) => unimplemented!("Item::Verbatim `{}`", tokens), + Err(_) => return self.word(tokens.to_string()), }; match item { @@ -532,14 +524,6 @@ impl Printer { self.hardbreak(); } - #[cfg(not(feature = "verbatim"))] - fn foreign_item_verbatim(&mut self, foreign_item: &TokenStream) { - if !foreign_item.is_empty() { - unimplemented!("ForeignItem::Verbatim `{}`", foreign_item); - } - self.hardbreak(); - } - #[cfg(feature = "verbatim")] fn foreign_item_verbatim(&mut self, tokens: &TokenStream) { use syn::parse::{Parse, ParseStream, Result}; @@ -556,7 +540,11 @@ impl Printer { let foreign_item: ForeignItemVerbatim = match syn::parse2(tokens.clone()) { Ok(foreign_item) => foreign_item, - Err(_) => unimplemented!("ForeignItem::Verbatim `{}`", tokens), + Err(_) => { + self.word(tokens.to_string()); + self.hardbreak(); + return; + }, }; match foreign_item { @@ -650,9 +638,7 @@ impl Printer { } fn trait_item_verbatim(&mut self, trait_item: &TokenStream) { - if !trait_item.is_empty() { - unimplemented!("TraitItem::Verbatim `{}`", trait_item); - } + self.word(trait_item.to_string()); self.hardbreak(); } @@ -747,9 +733,7 @@ impl Printer { } fn impl_item_verbatim(&mut self, impl_item: &TokenStream) { - if !impl_item.is_empty() { - unimplemented!("ImplItem::Verbatim `{}`", impl_item); - } + self.word(impl_item.to_string()); self.hardbreak(); } diff --git a/prettyplease-forked/src/pat.rs b/prettyplease-forked/src/pat.rs index 4cec22c..d5c6fe4 100644 --- a/prettyplease-forked/src/pat.rs +++ b/prettyplease-forked/src/pat.rs @@ -191,7 +191,7 @@ impl Printer { } fn pat_verbatim(&mut self, pat: &TokenStream) { - unimplemented!("Pat::Verbatim `{}`", pat); + self.word(pat.to_string()); } fn pat_wild(&mut self, pat: &PatWild) { diff --git a/prettyplease-forked/src/ty.rs b/prettyplease-forked/src/ty.rs index 7bbdf46..0c1fb47 100644 --- a/prettyplease-forked/src/ty.rs +++ b/prettyplease-forked/src/ty.rs @@ -160,15 +160,6 @@ impl Printer { self.word(")"); } - #[cfg(not(feature = "verbatim"))] - fn type_verbatim(&mut self, ty: &TokenStream) { - if ty.to_string() == "..." { - self.word("..."); - } else { - unimplemented!("Type::Verbatim `{}`", ty); - } - } - #[cfg(feature = "verbatim")] fn type_verbatim(&mut self, tokens: &TokenStream) { use syn::parse::{Parse, ParseStream, Result}; @@ -194,7 +185,7 @@ impl Printer { let ty: TypeVerbatim = match syn::parse2(tokens.clone()) { Ok(ty) => ty, - Err(_) => unimplemented!("Type::Verbatim `{}`", tokens), + Err(_) => return self.word(tokens.to_string()), }; match ty {