diff options
author | Joel Galenson <jgalenson@google.com> | 2021-09-22 11:14:26 -0700 |
---|---|---|
committer | Joel Galenson <jgalenson@google.com> | 2021-09-22 11:14:26 -0700 |
commit | 1313a232f89dd0e477ec98bc47edf6e407a4d240 (patch) | |
tree | 299a38190cc9f91f7fbc3e7c21dcd02900b7286b /src/wrapper.rs | |
parent | a44e52188aa0726735f1e059d0c0b983b1226507 (diff) | |
download | proc-macro2-1313a232f89dd0e477ec98bc47edf6e407a4d240.tar.gz |
Upgrade rust/crates/proc-macro2 to 1.0.29
Test: make
Change-Id: I78e7ca2609d95d74b6c251a90b119e0de49a7e25
Diffstat (limited to 'src/wrapper.rs')
-rw-r--r-- | src/wrapper.rs | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/wrapper.rs b/src/wrapper.rs index 2829dd7..dc93873 100644 --- a/src/wrapper.rs +++ b/src/wrapper.rs @@ -921,18 +921,25 @@ impl FromStr for Literal { fn from_str(repr: &str) -> Result<Self, Self::Err> { if inside_proc_macro() { - // TODO: use libproc_macro's FromStr impl once it is available in - // rustc. https://github.com/rust-lang/rust/pull/84717 - let tokens = proc_macro_parse(repr)?; - let mut iter = tokens.into_iter(); - if let (Some(proc_macro::TokenTree::Literal(literal)), None) = - (iter.next(), iter.next()) + #[cfg(literal_from_str)] { - if literal.to_string().len() == repr.len() { - return Ok(Literal::Compiler(literal)); + proc_macro::Literal::from_str(repr) + .map(Literal::Compiler) + .map_err(LexError::Compiler) + } + #[cfg(not(literal_from_str))] + { + let tokens = proc_macro_parse(repr)?; + let mut iter = tokens.into_iter(); + if let (Some(proc_macro::TokenTree::Literal(literal)), None) = + (iter.next(), iter.next()) + { + if literal.to_string().len() == repr.len() { + return Ok(Literal::Compiler(literal)); + } } + Err(LexError::call_site()) } - Err(LexError::call_site()) } else { let literal = fallback::Literal::from_str(repr)?; Ok(Literal::Fallback(literal)) |