runtime(sh): Update syntax, highlight escaped chars in test expressions
Highlight escape characters in unquoted test expression operands.
E.g., [[ foo == \[bar\] ]]
fixes #17221
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/syntax/testdir/dumps/sh_14_00.dump b/runtime/syntax/testdir/dumps/sh_14_00.dump
new file mode 100644
index 0000000..7538aae
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_14_00.dump
@@ -0,0 +1,20 @@
+>#+0#0000e05#ffffff0|!|/|b|i|n|/|b|a|s|h| +0#0000000&@63
+|#+0#0000e05&| |I|s@1|u|e| |#|1|7|2@1|1| |(|s|h| |s|y|n|t|a|x|:| |e|s|c|a|p|e|d| |s|q|u|a|r|e| |b|r|a|c|k|e|t|s| |d|o|n|'|t| |w|o|r|k| |i|n| |[@1| |]@1|)| +0#0000000&@3
+@75
+|[+0#e000e06&@1| +0#0000000&|f+0#e000002&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|[+0#e000e06&|b+0#0000000&|a|r|]+0#e000e06&| +0#0000000&|]+0#e000e06&@1| +0#0000000&@56
+|[+0#e000e06&@1| +0#0000000&|f+0#e000002&|o@1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|\+0#e000e06&|[|b+0#e000002&|a|r|\+0#e000e06&|]| +0#0000000&|]+0#e000e06&@1| +0#0000000&@54
+@75
+|e+0#af5f00255&|c|h|o| +0#e000002&|[+0#e000e06&|f+0#0000000&|o@1|]+0#e000e06&| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#e000002&|\+0#e000e06&|[|f+0#e000002&|o@1|\+0#e000e06&|]| +0#0000000&@62
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|i+0#0000000&|s|_|b|a|s|h|:| |1|,| @45|1|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/input/sh_14.sh b/runtime/syntax/testdir/input/sh_14.sh
new file mode 100644
index 0000000..bfa3d93
--- /dev/null
+++ b/runtime/syntax/testdir/input/sh_14.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+# Issue #17221 (sh syntax: escaped square brackets don't work in [[ ]])
+
+[[ foo == [bar] ]]
+[[ foo == \[bar\] ]]
+
+echo [foo]
+echo \[foo\]