Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-expand/src/quote.rs')
| -rw-r--r-- | crates/hir-expand/src/quote.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/crates/hir-expand/src/quote.rs b/crates/hir-expand/src/quote.rs index a3b84afd2a..824f3c3e8f 100644 --- a/crates/hir-expand/src/quote.rs +++ b/crates/hir-expand/src/quote.rs @@ -1,11 +1,13 @@ //! A simplified version of quote-crate like quasi quote macro +#![allow(clippy::crate_in_macro_def)] use span::Span; +use syntax::format_smolstr; use crate::name::Name; -pub(crate) fn dollar_crate(span: Span) -> tt::Ident<Span> { - tt::Ident { text: syntax::SmolStr::new_inline("$crate"), span } +pub(crate) const fn dollar_crate(span: Span) -> tt::Ident<Span> { + tt::Ident { text: syntax::SmolStr::new_static("$crate"), span } } // A helper macro quote macro @@ -17,13 +19,13 @@ pub(crate) fn dollar_crate(span: Span) -> tt::Ident<Span> { #[macro_export] macro_rules! __quote { ($span:ident) => { - Vec::<crate::tt::TokenTree>::new() + Vec::<$crate::tt::TokenTree>::new() }; ( @SUBTREE($span:ident) $delim:ident $($tt:tt)* ) => { { let children = $crate::__quote!($span $($tt)*); - crate::tt::Subtree { + $crate::tt::Subtree { delimiter: crate::tt::Delimiter { kind: crate::tt::DelimiterKind::$delim, open: $span, @@ -214,8 +216,8 @@ impl_to_to_tokentrees! { _span: crate::tt::Literal => self { self }; _span: crate::tt::Ident => self { self }; _span: crate::tt::Punct => self { self }; - span: &str => self { crate::tt::Literal{text: format!("\"{}\"", self.escape_default()).into(), span}}; - span: String => self { crate::tt::Literal{text: format!("\"{}\"", self.escape_default()).into(), span}}; + span: &str => self { crate::tt::Literal{text: format_smolstr!("\"{}\"", self.escape_default()), span}}; + span: String => self { crate::tt::Literal{text: format_smolstr!("\"{}\"", self.escape_default()), span}}; span: Name => self { crate::tt::Ident{text: self.to_smol_str(), span}}; } |