Skip to content

Commit 077d0be

Browse files
committed
fix: parse_record
1 parent 0ce616f commit 077d0be

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

crates/nu-parser/src/parser.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6159,8 +6159,9 @@ pub fn parse_record(working_set: &mut StateWorkingSet, span: Span) -> Expression
61596159

61606160
let mut unclosed = false;
61616161
let mut extra_tokens = false;
6162-
if bytes.ends_with(b"}") {
6163-
end -= 1;
6162+
if let Some(end_offset) = bytes.iter().rposition(|b| *b == b'}') {
6163+
end = span.start + end_offset;
6164+
extra_tokens = end != (span.end - 1);
61646165
} else {
61656166
unclosed = true;
61666167
}
@@ -6174,11 +6175,6 @@ pub fn parse_record(working_set: &mut StateWorkingSet, span: Span) -> Expression
61746175
span_offset: start,
61756176
};
61766177
while !lex_state.input.is_empty() {
6177-
if lex_state.input[0] == b'}' {
6178-
extra_tokens = true;
6179-
unclosed = false;
6180-
break;
6181-
}
61826178
let additional_whitespace = &[b'\n', b'\r', b','];
61836179
if lex_n_tokens(&mut lex_state, additional_whitespace, &[b':'], true, 1) < 1 {
61846180
break;
@@ -6211,8 +6207,8 @@ pub fn parse_record(working_set: &mut StateWorkingSet, span: Span) -> Expression
62116207
working_set.error(ParseError::Unclosed("}".into(), Span::new(end, end)));
62126208
} else if extra_tokens {
62136209
working_set.error(ParseError::ExtraTokensAfterClosingDelimiter(Span::new(
6214-
lex_state.span_offset + 1,
6215-
end,
6210+
end + 1,
6211+
span.end,
62166212
)));
62176213
}
62186214

0 commit comments

Comments
 (0)