--- /dev/null
+exit EOF-f
+"
+echo 1
+echo Hello World
+moo
+ EOF-f
+EOF-f f
+EOF-f
+Ok
--- /dev/null
+f=1
+ cat <<- EOF-f
+ exit EOF-f
+"
+echo $f
+echo `echo Hello World`
+ moo
+ EOF-f
+EOF-f f
+EOF-f
+EOF-f
+echo Ok
--- /dev/null
+qwe
+asd
+123
+456
+Ok
--- /dev/null
+cat <<000; cat <<www; cat <<eee
+000
+qwe
+asd
+www
+123
+456
+eee
+echo Ok
--- /dev/null
+foo () {
+cat <<EOF && { echo "$1" ; }
+$1
+EOF
+}
+
+foo "bar"
--- /dev/null
+exit EOF-f
+"
+echo $f
+echo `echo Hello World`
+moo
+ EOF-f
+EOF-f f
+EOF-f
+Ok
--- /dev/null
+f=1
+ cat <<- EOF-f""
+ exit EOF-f
+"
+echo $f
+echo `echo Hello World`
+ moo
+ EOF-f
+EOF-f f
+EOF-f
+EOF-f
+echo Ok
--- /dev/null
+cat <<EOF
+'$'
+EOF
--- /dev/null
+exit EOF-f
+"
+echo 1
+echo Hello World
+moo
+ EOF-f
+EOF-f f
+EOF-f
+Ok
--- /dev/null
+f=1
+ cat <<- EOF-f
+ exit EOF-f
+"
+echo $f
+echo `echo Hello World`
+ moo
+ EOF-f
+EOF-f f
+EOF-f
+EOF-f
+echo Ok
--- /dev/null
+Quoted heredoc:
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
+c\
+
+Unquoted heredoc:
+a b
+a\
+ b
+ 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
+ -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
+ 123456 v-$a-\t-\-\"-\x-`-\--\z-\*-\?-
+ 123456 v-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-
+cEOF2
+
+Quoted -heredoc:
+a\
+b
+a\\
+b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
+c\
+
+Unquoted -heredoc:
+a b
+a\
+b
+ 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
+-qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
+ 123456 v-$a-\t-\-\"-\x-`-\--\z-\*-\?-
+ 123456 v-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-
+cEOF4
+
+Done: 0
--- /dev/null
+# Test for correct handling of backslashes.
+# Note that some lines in each heredoc start with a tab.
+
+a=qwerty
+
+echo Quoted heredoc:
+cat <<"EOF1"
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
+c\
+EOF1
+echo
+
+echo Unquoted heredoc:
+cat <<EOF2
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
+c\
+EOF2
+EOF2
+echo
+
+echo Quoted -heredoc:
+cat <<-"EOF3"
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
+c\
+ EOF3
+# In -heredoc case the marker is detected even if it is indented.
+echo
+
+echo Unquoted -heredoc:
+cat <<-EOF4
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
+c\
+EOF4
+ EOF4
+# The marker is not detected if preceding line ends in backslash.
+# TODO: marker should be detected even if it is split by line continuation:
+# EOF\
+# 4
+# but currently hush doesn't do it. (Tab before "4" is not allowed, though.)
+echo
+
+echo "Done: $?"
--- /dev/null
+546ed3f5c81c780d3ab86ada14824237 -
+546ed3f5c81c780d3ab86ada14824237 -
+End
--- /dev/null
+# This creates 120k heredoc
+echo 'cat <<HERE | md5sum' >"$0.tmp"
+yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp"
+echo 'HERE' >>"$0.tmp"
+
+yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum
+. "$0.tmp"
+rm "$0.tmp"
+echo End
+++ /dev/null
-qwe
-asd
-123
-456
-Ok
+++ /dev/null
-cat <<000; cat <<www; cat <<eee
-000
-qwe
-asd
-www
-123
-456
-eee
-echo Ok
+++ /dev/null
-exit EOF-f
-"
-echo 1
-echo Hello World
-moo
- EOF-f
-EOF-f f
-EOF-f
-Ok
+++ /dev/null
-f=1
- cat <<- EOF-f
- exit EOF-f
-"
-echo $f
-echo `echo Hello World`
- moo
- EOF-f
-EOF-f f
-EOF-f
-EOF-f
-echo Ok
+++ /dev/null
-exit EOF-f
-"
-echo $f
-echo `echo Hello World`
-moo
- EOF-f
-EOF-f f
-EOF-f
-Ok
+++ /dev/null
-f=1
- cat <<- EOF-f""
- exit EOF-f
-"
-echo $f
-echo `echo Hello World`
- moo
- EOF-f
-EOF-f f
-EOF-f
-EOF-f
-echo Ok
+++ /dev/null
-cat <<EOF
-'$'
-EOF
+++ /dev/null
-Quoted heredoc:
-a\
- b
-a\\
- b
- 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
- 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
-c\
-
-Unquoted heredoc:
-a b
-a\
- b
- 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
- -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
- 123456 v-$a-\t-\-\"-\x-`-\--\z-\*-\?-
- 123456 v-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-
-cEOF2
-
-Quoted -heredoc:
-a\
-b
-a\\
-b
- 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
--$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
- 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
-c\
-
-Unquoted -heredoc:
-a b
-a\
-b
- 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
--qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
- 123456 v-$a-\t-\-\"-\x-`-\--\z-\*-\?-
- 123456 v-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-
-cEOF4
-
-Done: 0
+++ /dev/null
-# Test for correct handling of backslashes.
-# Note that some lines in each heredoc start with a tab.
-
-a=qwerty
-
-echo Quoted heredoc:
-cat <<"EOF1"
-a\
- b
-a\\
- b
- 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
- 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
-c\
-EOF1
-echo
-
-echo Unquoted heredoc:
-cat <<EOF2
-a\
- b
-a\\
- b
- 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- 123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
- 123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
-c\
-EOF2
-EOF2
-echo
-
-echo Quoted -heredoc:
-cat <<-"EOF3"
-a\
- b
-a\\
- b
- 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
- 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
-c\
- EOF3
-# In -heredoc case the marker is detected even if it is indented.
-echo
-
-echo Unquoted -heredoc:
-cat <<-EOF4
-a\
- b
-a\\
- b
- 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
- 123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
- 123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
-c\
-EOF4
- EOF4
-# The marker is not detected if preceding line ends in backslash.
-# TODO: marker should be detected even if it is split by line continuation:
-# EOF\
-# 4
-# but currently hush doesn't do it. (Tab before "4" is not allowed, though.)
-echo
-
-echo "Done: $?"
+++ /dev/null
-546ed3f5c81c780d3ab86ada14824237 -
-546ed3f5c81c780d3ab86ada14824237 -
-End
+++ /dev/null
-# This creates 120k heredoc
-echo 'cat <<HERE | md5sum' >"$0.tmp"
-yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp"
-echo 'HERE' >>"$0.tmp"
-
-yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum
-. "$0.tmp"
-rm "$0.tmp"
-echo End