aboutsummaryrefslogtreecommitdiff
path: root/src/wrapper.rs
diff options
context:
space:
mode:
authorJoel Galenson <jgalenson@google.com>2021-09-22 11:14:26 -0700
committerJoel Galenson <jgalenson@google.com>2021-09-22 11:14:26 -0700
commit1313a232f89dd0e477ec98bc47edf6e407a4d240 (patch)
tree299a38190cc9f91f7fbc3e7c21dcd02900b7286b /src/wrapper.rs
parenta44e52188aa0726735f1e059d0c0b983b1226507 (diff)
downloadproc-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.rs25
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))