]> git.ipfire.org Git - thirdparty/git.git/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 883a2b307c04639b36e2985638310b33677c8a8e..60c2099c189a4c60fb3dac342d616e6cf36a4789 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 cf18429d03977403e66f2fd37a8f94a6ddf9be3e..60baf84b7a621066c333d2f0451f4ce85db70915 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 c64058f7affa7d66124c457ef3cb320242eca284..3b46554728ac2a5a62510a4d9b873f4b4e7191dd 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 ffc87bdffb33bdd43053e3ea149e1c18878eb184..d2d804f5b0880202752e92c9c37dc74b34908d89 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 ec77aa5b95249cfd53af8e788e49914a0c978a92..432217801b9b073995ed2f8f71cdf7177d263319 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
 >)