about summary refs log tree commit diff
path: root/src/librustc_parse/parser/mod.rs
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-11-10 00:44:59 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-11-16 21:21:37 +0300
commit00bc4496026a3168eed95e88c29f17dac2739d48 (patch)
tree8848a81d29817d48c21111a119637703cae0656f /src/librustc_parse/parser/mod.rs
parent266f5471272532989332117e8a2e0bacb5b94ccf (diff)
downloadrust-00bc4496026a3168eed95e88c29f17dac2739d48.tar.gz
rust-00bc4496026a3168eed95e88c29f17dac2739d48.zip
ast: Keep string literals in ABIs precisely
Diffstat (limited to 'src/librustc_parse/parser/mod.rs')
-rw-r--r--src/librustc_parse/parser/mod.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/librustc_parse/parser/mod.rs b/src/librustc_parse/parser/mod.rs
index 2d05a696791..2b49091192c 100644
--- a/src/librustc_parse/parser/mod.rs
+++ b/src/librustc_parse/parser/mod.rs
@@ -15,7 +15,7 @@ use crate::{Directory, DirectoryOwnership};
 use crate::lexer::UnmatchedBrace;
 
 use syntax::ast::{
-    self, Abi, DUMMY_NODE_ID, AttrStyle, Attribute, CrateSugar, Extern, Ident,
+    self, DUMMY_NODE_ID, AttrStyle, Attribute, CrateSugar, Extern, Ident,
     IsAsync, MacDelimiter, Mutability, StrStyle, Visibility, VisibilityKind, Unsafety,
 };
 
@@ -1221,11 +1221,14 @@ impl<'a> Parser<'a> {
     }
 
     /// Parses a string literal as an ABI spec.
-    fn parse_opt_abi(&mut self) -> PResult<'a, Option<Abi>> {
+    fn parse_opt_abi(&mut self) -> PResult<'a, Option<StrLit>> {
         if self.token.can_begin_literal_or_bool() {
-            let ast::Lit { span, kind, .. } = self.parse_lit()?;
+            let ast::Lit { token: token::Lit { symbol, suffix, .. }, span, kind }
+                = self.parse_lit()?;
             match kind {
-                ast::LitKind::Str(symbol, _) => return Ok(Some(Abi { symbol, span })),
+                ast::LitKind::Str(symbol_unescaped, style) => return Ok(Some(StrLit {
+                    style, symbol, suffix, span, symbol_unescaped,
+                })),
                 ast::LitKind::Err(_) => {}
                 _ => {
                     self.struct_span_err(span, "non-string ABI literal")