]> Kevux Git Server - rit/commitdiff
chainlint.sed: improve ?!SEMI?! placement accuracy
authorEric Sunshine <sunshine@sunshineco.com>
Mon, 13 Dec 2021 06:30:51 +0000 (01:30 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Dec 2021 22:15:29 +0000 (14:15 -0800)
When chainlint.sed detects commands separated by a semicolon rather than
by `&&`, it places a ?!SEMI?! annotation at the beginning of the line.
However, this is an unusual location for programmers accustomed to error
messages (from compilers, for instance) indicating the exact point of
the problem. Therefore, relocate the ?!SEMI?! annotation to the location
of the semicolon in order to better direct the programmer's attention to
the source of the problem.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/chainlint.sed
t/chainlint/negated-one-liner.expect
t/chainlint/one-liner.expect
t/chainlint/semicolon.expect
t/chainlint/subshell-one-liner.expect

index 883a2b3..60c2099 100644 (file)
@@ -126,7 +126,7 @@ b
 # "&&" (but not ";" in a string)
 :oneline
 /;/{
-       /"[^"]*;[^"]*"/!s/^/?!SEMI?!/
+       /"[^"]*;[^"]*"/!s/;/; ?!SEMI?!/
 }
 b
 
@@ -230,7 +230,7 @@ s/.*\n//
 # string and not ";;" in one-liner "case...esac")
 /;/{
        /;;/!{
-               /"[^"]*;[^"]*"/!s/^/?!SEMI?!/
+               /"[^"]*;[^"]*"/!s/;/; ?!SEMI?!/
        }
 }
 # line ends with pipe "...|" -- valid; not missing "&&"
index cf18429..60baf84 100644 (file)
@@ -1,5 +1,5 @@
 ! (foo && bar) &&
 ! (foo && bar) >baz &&
 
-?!SEMI?!! (foo; bar) &&
-?!SEMI?!! (foo; bar) >baz
+! (foo; ?!SEMI?! bar) &&
+! (foo; ?!SEMI?! bar) >baz
index c64058f..3b46554 100644 (file)
@@ -2,8 +2,8 @@
 (foo && bar) |
 (foo && bar) >baz &&
 
-?!SEMI?!(foo; bar) &&
-?!SEMI?!(foo; bar) |
-?!SEMI?!(foo; bar) >baz &&
+(foo; ?!SEMI?! bar) &&
+(foo; ?!SEMI?! bar) |
+(foo; ?!SEMI?! bar) >baz &&
 
 (foo "bar; baz")
index ffc87bd..d2d804f 100644 (file)
@@ -1,20 +1,20 @@
 (
-?!SEMI?!       cat foo ; echo bar ?!AMP?!
-?!SEMI?!       cat foo ; echo bar
+       cat foo ; ?!SEMI?! echo bar ?!AMP?!
+       cat foo ; ?!SEMI?! echo bar
 >) &&
 (
-?!SEMI?!       cat foo ; echo bar &&
-?!SEMI?!       cat foo ; echo bar
+       cat foo ; ?!SEMI?! echo bar &&
+       cat foo ; ?!SEMI?! echo bar
 >) &&
 (
        echo "foo; bar" &&
-?!SEMI?!       cat foo; echo bar
+       cat foo; ?!SEMI?! echo bar
 >) &&
 (
-?!SEMI?!       foo;
+       foo; ?!SEMI?!
 >) &&
 (
 cd foo &&
        for i in a b c; do
-?!SEMI?!               echo;
+               echo; ?!SEMI?!
 >      done)
index ec77aa5..4322178 100644 (file)
@@ -2,13 +2,13 @@
        (foo && bar) &&
        (foo && bar) |
        (foo && bar) >baz &&
-?!SEMI?!       (foo; bar) &&
-?!SEMI?!       (foo; bar) |
-?!SEMI?!       (foo; bar) >baz &&
+       (foo; ?!SEMI?! bar) &&
+       (foo; ?!SEMI?! bar) |
+       (foo; ?!SEMI?! bar) >baz &&
        (foo || exit 1) &&
        (foo || exit 1) |
        (foo || exit 1) >baz &&
        (foo && bar) ?!AMP?!
-?!SEMI?!       (foo && bar; baz) ?!AMP?!
+       (foo && bar; ?!SEMI?! baz) ?!AMP?!
        foobar
 >)