summaryrefslogtreecommitdiff
path: root/t/chainlint.sed
diff options
context:
space:
mode:
authorEric Sunshine <sunshine@sunshineco.com>2018-08-13 04:47:37 -0400
committerJunio C Hamano <gitster@pobox.com>2018-08-13 12:22:12 -0700
commitd93871143fdb7c11ddea81aa7f698e5eee0246e5 (patch)
tree1f773aa5dbcb210176a75483e6594d76e84bb09f /t/chainlint.sed
parent06fc5c9f90da9be18371bafad5f35b6b17cbf49e (diff)
downloadgit-d93871143fdb7c11ddea81aa7f698e5eee0246e5.tar.gz
chainlint: let here-doc and multi-line string commence on same line
After swallowing a here-doc, chainlint.sed assumes that no other processing needs to be done on the line aside from checking for &&-chain breakage; likewise, after folding a multi-line quoted string. However, it's conceivable (even if unlikely in practice) that both a here-doc and a multi-line quoted string might commence on the same line: cat <<\EOF && echo "foo bar" data EOF Support this case by sending the line (after swallowing and folding) through the normal processing sequence rather than jumping directly to the check for broken &&-chain. This change also allows other somewhat pathological cases to be handled, such as closing a subshell on the same line starting a here-doc: ( cat <<-\INPUT) data INPUT or, for instance, opening a multi-line $(...) expression on the same line starting a here-doc: x=$(cat <<-\END && data END echo "x") among others. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/chainlint.sed')
-rw-r--r--t/chainlint.sed7
1 files changed, 4 insertions, 3 deletions
diff --git a/t/chainlint.sed b/t/chainlint.sed
index afb2443a9c..6661e21f20 100644
--- a/t/chainlint.sed
+++ b/t/chainlint.sed
@@ -157,6 +157,7 @@ s/.*\n//
/^[^']*'[^']*$/{
/"[^'"]*'[^'"]*"/!bsqstring
}
+:folded
# here-doc -- swallow it
/<<[ ]*[-\\']*[A-Za-z0-9_]/bheredoc
# comment or empty line -- discard since final non-comment, non-empty line
@@ -255,7 +256,7 @@ s/"//g
N
s/\n//
/"/!bdqstring
-bcheckchain
+bfolded
# found multi-line single-quoted string '...\n...' -- slurp until end of string
:sqstring
@@ -263,7 +264,7 @@ s/'//g
N
s/\n//
/'/!bsqstring
-bcheckchain
+bfolded
# found here-doc -- swallow it to avoid false hits within its body (but keep
# the command to which it was attached)
@@ -278,7 +279,7 @@ N
}
s/^<[^>]*>//
s/\n.*$//
-bcheckchain
+bfolded
# found "case ... in" -- pass through untouched
:case