#                                                                    -*-perl-*-

$description = "\
This tests random features of the parser that need to be supported, and
which have either broken at some point in the past or seem likely to
break.";

run_make_test("
# We want to allow both empty commands _and_ commands that resolve to empty.
EMPTY =

.PHONY: all a1 a2 a3 a4
all: a1 a2 a3 a4

a1:;
a2:
\t
a3:;\$(EMPTY)
a4:
\t\$(EMPTY)

\# Non-empty lines that expand to nothing should also be ignored.
STR =     \# Some spaces
TAB =   \t  \# A TAB and some spaces

\$(STR)

\$(STR) \$(TAB)",
              '', "#MAKE#: Nothing to be done for 'all'.");

# TEST 2

# Make sure files without trailing newlines are handled properly.
# Have to use the old style invocation to test this.

$makefile2 = &get_tmpfile;

open(MAKEFILE, "> $makefile2");
print MAKEFILE "all:;\@echo FOO = \$(FOO)\nFOO = foo";
close(MAKEFILE);

&run_make_with_options($makefile2,"",&get_logfile);
$answer = "FOO = foo\n";
&compare_output($answer,&get_logfile(1));

# TEST 3

# Check semicolons in variable references

run_make_test('
$(if true,$(info true; true))
all: ; @:
',
              '', 'true; true');

# TEST 4

# Check that backslashes in command scripts are handled according to POSIX.
# Checks Savannah bug # 1332.

# Test the fastpath / no quotes
run_make_test('
all:
	@echo foo\
bar
	@echo foo\
	bar
	@echo foo\
    bar
	@echo foo\
	    bar
	@echo foo \
bar
	@echo foo \
	bar
	@echo foo \
    bar
	@echo foo \
	    bar
',
              '', 'foobar
foobar
foo bar
foo bar
foo bar
foo bar
foo bar
foo bar');

# Test the fastpath / single quotes
run_make_test("
all:
	\@echo 'foo\\
bar'
	\@echo 'foo\\
	bar'
	\@echo 'foo\\
    bar'
	\@echo 'foo\\
	    bar'
	\@echo 'foo \\
bar'
	\@echo 'foo \\
	bar'
	\@echo 'foo \\
    bar'
	\@echo 'foo \\
	    bar'
",
              '', 'foo\
bar
foo\
bar
foo\
    bar
foo\
    bar
foo \
bar
foo \
bar
foo \
    bar
foo \
    bar');

# Test the fastpath / double quotes
run_make_test('
all:
	@echo "foo\
bar"
	@echo "foo\
	bar"
	@echo "foo\
    bar"
	@echo "foo\
	    bar"
	@echo "foo \
bar"
	@echo "foo \
	bar"
	@echo "foo \
    bar"
	@echo "foo \
	    bar"
',
              '', 'foobar
foobar
foo    bar
foo    bar
foo bar
foo bar
foo     bar
foo     bar');

# Test the slow path / no quotes
run_make_test('
all:
	@echo hi; echo foo\
bar
	@echo hi; echo foo\
	bar
	@echo hi; echo foo\
 bar
	@echo hi; echo foo\
	 bar
	@echo hi; echo foo \
bar
	@echo hi; echo foo \
	bar
	@echo hi; echo foo \
 bar
	@echo hi; echo foo \
	 bar
',
              '', 'hi
foobar
hi
foobar
hi
foo bar
hi
foo bar
hi
foo bar
hi
foo bar
hi
foo bar
hi
foo bar');

# Test the slow path / no quotes.  This time we put the slow path
# determination _after_ the backslash-newline handling.
run_make_test('
all:
	@echo foo\
bar; echo hi
	@echo foo\
	bar; echo hi
	@echo foo\
 bar; echo hi
	@echo foo\
	 bar; echo hi
	@echo foo \
bar; echo hi
	@echo foo \
	bar; echo hi
	@echo foo \
 bar; echo hi
	@echo foo \
	 bar; echo hi
',
              '', 'foobar
hi
foobar
hi
foo bar
hi
foo bar
hi
foo bar
hi
foo bar
hi
foo bar
hi
foo bar
hi');

# Test the slow path / single quotes
run_make_test("
all:
	\@echo hi; echo 'foo\\
bar'
	\@echo hi; echo 'foo\\
	bar'
	\@echo hi; echo 'foo\\
    bar'
	\@echo hi; echo 'foo\\
	    bar'
	\@echo hi; echo 'foo \\
bar'
	\@echo hi; echo 'foo \\
	bar'
	\@echo hi; echo 'foo \\
    bar'
	\@echo hi; echo 'foo \\
	    bar'
",
              '', 'hi
foo\
bar
hi
foo\
bar
hi
foo\
    bar
hi
foo\
    bar
hi
foo \
bar
hi
foo \
bar
hi
foo \
    bar
hi
foo \
    bar');

# Test the slow path / double quotes
run_make_test('
all:
	@echo hi; echo "foo\
bar"
	@echo hi; echo "foo\
	bar"
	@echo hi; echo "foo\
    bar"
	@echo hi; echo "foo\
	    bar"
	@echo hi; echo "foo \
bar"
	@echo hi; echo "foo \
	bar"
	@echo hi; echo "foo \
    bar"
	@echo hi; echo "foo \
	    bar"
',
              '', 'hi
foobar
hi
foobar
hi
foo    bar
hi
foo    bar
hi
foo bar
hi
foo bar
hi
foo     bar
hi
foo     bar');

1;
