'main': Highlight literal semicolons in array assignments as errors.

Fixes the test added in the penultimate (grandparent) commit.
This commit is contained in:
Daniel Shahaf 2020-03-15 14:19:23 +00:00
parent a4525a0826
commit 3ca93f864f
2 changed files with 10 additions and 2 deletions

View file

@ -737,9 +737,17 @@ _zsh_highlight_main_highlighter_highlight_list()
else else
style=unknown-token style=unknown-token
fi fi
if [[ $arg == (';'|$'\n') ]] && $in_array_assignment; then if [[ $arg == $'\n' ]] && $in_array_assignment; then
# literal newline inside an array assignment # literal newline inside an array assignment
next_word=':regular:' next_word=':regular:'
elif [[ $arg == ';' ]] && $in_array_assignment; then
# literal semicolon inside an array assignment
#
# This is parsed the same way as a literal newline. Nevertheless,
# highlight it as an error since it's probably unintended. Compare
# issue #691.
next_word=':regular:'
style=unknown-token
else else
next_word=':start:' next_word=':start:'
highlight_glob=true highlight_glob=true

View file

@ -33,7 +33,7 @@ BUFFER=$'a=( foo ; bar )'
expected_region_highlight=( expected_region_highlight=(
'1 3 assign' # a=( '1 3 assign' # a=(
'5 7 default' # foo '5 7 default' # foo
'9 9 unknown-token "fixed in the after-next (grandchild) commit"' # ; '9 9 unknown-token' # ; (not commandseparator; see highlighter source code)
'11 13 default' # bar '11 13 default' # bar
'15 15 assign' # ) '15 15 assign' # )
) )