From 10dd8a8e7363eb291fe6e62a8e7c1565380e9ded Mon Sep 17 00:00:00 2001 From: Johannes Altmanninger Date: Sun, 12 Jan 2025 16:40:27 +0100 Subject: [PATCH] Add range to closing-unopened brace error The error on "echo }" is needlessly inconsistent with "echo )" and "echo (}" etc; fix that I guess. --- src/tokenizer.rs | 6 +++--- tests/checks/read.fish | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/tokenizer.rs b/src/tokenizer.rs index 2558d6a45..0fc7caf7c 100644 --- a/src/tokenizer.rs +++ b/src/tokenizer.rs @@ -678,9 +678,9 @@ impl<'c> Tokenizer<'c> { return self.call_error( TokenizerError::closing_unopened_brace, self.token_cursor, - self.start.len(), - None, - 0, + self.token_cursor, + Some(1), + 1, ); } if brace_offsets.is_empty() { diff --git a/tests/checks/read.fish b/tests/checks/read.fish index 93f5a54a9..b1324b5b5 100644 --- a/tests/checks/read.fish +++ b/tests/checks/read.fish @@ -400,3 +400,31 @@ echo foo | read -n -1 # CHECKERR: echo foo | read -n -1 # CHECKERR: ^ # CHECKERR: (Type 'help read' for related documentation) + +echo '1 ( (' | read -lat var +set -S var +# CHECK: $var: set in local scope, unexported, with 2 elements +# CHECK: $var[1]: |1| +# CHECK: $var[2]: |( (| + +echo '1 ) )' | read -lat var +set -S var +# CHECK: $var: set in local scope, unexported, with 2 elements +# CHECK: $var[1]: |1| +# CHECK: $var[2]: |)| + +echo '1 { {' | read -lat var +set -S var +# CHECK: $var: set in local scope, unexported, with 2 elements +# CHECK: $var[1]: |1| +# CHECK: $var[2]: |{ {| + +echo '1 } }' | read -lat var +set -S var +# CHECK: $var: set in local scope, unexported, with 2 elements +# CHECK: $var[1]: |1| +# CHECK: $var[2]: |}| + +echo '1 {} "{}"' | read -lat var +echo $var +# CHECK: 1 {} {}