about summary refs log tree commit diff
path: root/compiler/rustc_parse_format
diff options
context:
space:
mode:
authorTakayuki Maeda <takoyaki0316@gmail.com>2022-08-04 11:51:25 +0900
committerTakayuki Maeda <takoyaki0316@gmail.com>2022-08-04 11:51:25 +0900
commitdcd70c0995a6773ba3f78c072a899c62329f6a41 (patch)
tree889683de8ea81ddfe5978cfb378c6e56ed4da6ef /compiler/rustc_parse_format
parenta0a2ec332621d35b92633dc4db0451e0c3cb4ab2 (diff)
downloadrust-dcd70c0995a6773ba3f78c072a899c62329f6a41.tar.gz
rust-dcd70c0995a6773ba3f78c072a899c62329f6a41.zip
return when captured argument is not a struct field
Diffstat (limited to 'compiler/rustc_parse_format')
-rw-r--r--compiler/rustc_parse_format/src/lib.rs25
1 files changed, 12 insertions, 13 deletions
diff --git a/compiler/rustc_parse_format/src/lib.rs b/compiler/rustc_parse_format/src/lib.rs
index 4d8bd20aa36..c98c8cae378 100644
--- a/compiler/rustc_parse_format/src/lib.rs
+++ b/compiler/rustc_parse_format/src/lib.rs
@@ -229,20 +229,16 @@ impl<'a> Iterator for Parser<'a> {
                         Some(String(self.string(pos + 1)))
                     } else {
                         let arg = self.argument(lbrace_end);
-                        match self.must_consume('}') {
-                            Some(rbrace_byte_idx) => {
-                                let lbrace_inner_offset = self.to_span_index(pos);
-                                let rbrace_inner_offset = self.to_span_index(rbrace_byte_idx);
-                                if self.is_literal {
-                                    self.arg_places.push(
-                                        lbrace_inner_offset
-                                            .to(InnerOffset(rbrace_inner_offset.0 + 1)),
-                                    );
-                                }
-                            }
-                            None => {
-                                self.suggest_positional_arg_instead_of_captured_arg(arg);
+                        if let Some(rbrace_byte_idx) = self.must_consume('}') {
+                            let lbrace_inner_offset = self.to_span_index(pos);
+                            let rbrace_inner_offset = self.to_span_index(rbrace_byte_idx);
+                            if self.is_literal {
+                                self.arg_places.push(
+                                    lbrace_inner_offset.to(InnerOffset(rbrace_inner_offset.0 + 1)),
+                                );
                             }
+                        } else {
+                            self.suggest_positional_arg_instead_of_captured_arg(arg);
                         }
                         Some(NextArgument(arg))
                     }
@@ -767,6 +763,9 @@ impl<'a> Parser<'a> {
             let byte_pos = self.to_span_index(end);
             let start = InnerOffset(byte_pos.0 + 1);
             let field = self.argument(start);
+            if !self.consume('}') {
+                return;
+            }
             if let ArgumentNamed(_) = arg.position {
                 if let ArgumentNamed(_) = field.position {
                     self.errors.insert(