#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# The slash (/) and the question mark (?) serve a double-purpose in Perl.
# Depending on the context they can either be an operator (division
# or ternary respectively) or they are regex delimiters for pattern
# matches.  This test case checks the proper recognition.

cat <<\EOF > xg-pl-8.pl
info(__("using %s."), ($a->b() eq "auto" ? "" : ""));

print __"Question mark after string is an operator!\n";
# ?; Re-sync.

@times = sort {$a - $b} split /,\s*/, $options
    if (defined $options && $options);

print __"First slash in a an argument to a function starts a pattern match.";
# /; Re-sync.

$0 =~ /xyz/ ? 'foo' : 'bar';

print __"Question mark after a regular pattern match is an operator!";
# ?; Re-sync.

$0 =~ m{xyz} ? 'foo' : 'bar';

print __"Question mark after a nesting pattern match is an operator!";
# ?; Re-sync.

$0 =~ m|xyz| ? 'foo' : 'bar';

print __"Question mark after a non-nesting pattern match is an operator!";
# ?; Re-sync.

print __(<<EOS);
Line number for here documents is not correct.
EOS

$foo = wantarray ? 1 : 0;

print __"The function wantarray does not take arguments!";
# ?; Re-sync.

$foo = Something->method ? 1 : 0;

print __"Class method calls without parentheses do not accept arguments!";
# ?; Re-sync.

$foo = $Something->method ? 1 : 0;

print __"Instance method calls without parentheses do not accept arguments!";
# ?; Re-sync.

$foo = $Some->thing->method ? 1 : 0;

print __"Chained method calls without parentheses do not accept arguments!";
# ?; Re-sync.

condition() ? 1 : 0;

print __"Question mark after an explicit function call is always an operator!";
# ?;

print __"Synching works.";
EOF

: ${XGETTEXT=xgettext}
${XGETTEXT} --omit-header -n \
  -k__ \
  -d xg-pl-8.tmp xg-pl-8.pl || Exit 1
LC_ALL=C tr -d '\r' < xg-pl-8.tmp.po > xg-pl-8.po || Exit 1

cat <<\EOF > xg-pl-8.ok
#: xg-pl-8.pl:1
#, perl-format
msgid "using %s."
msgstr ""

#: xg-pl-8.pl:3
msgid "Question mark after string is an operator!\n"
msgstr ""

#: xg-pl-8.pl:9
msgid "First slash in a an argument to a function starts a pattern match."
msgstr ""

#: xg-pl-8.pl:14
msgid "Question mark after a regular pattern match is an operator!"
msgstr ""

#: xg-pl-8.pl:19
msgid "Question mark after a nesting pattern match is an operator!"
msgstr ""

#: xg-pl-8.pl:24
msgid "Question mark after a non-nesting pattern match is an operator!"
msgstr ""

#: xg-pl-8.pl:28
msgid "Line number for here documents is not correct.\n"
msgstr ""

#: xg-pl-8.pl:33
msgid "The function wantarray does not take arguments!"
msgstr ""

#: xg-pl-8.pl:38
msgid "Class method calls without parentheses do not accept arguments!"
msgstr ""

#: xg-pl-8.pl:43
msgid "Instance method calls without parentheses do not accept arguments!"
msgstr ""

#: xg-pl-8.pl:48
msgid "Chained method calls without parentheses do not accept arguments!"
msgstr ""

#: xg-pl-8.pl:53
msgid "Question mark after an explicit function call is always an operator!"
msgstr ""

#: xg-pl-8.pl:56
msgid "Synching works."
msgstr ""
EOF

: ${DIFF=diff}
${DIFF} xg-pl-8.ok xg-pl-8.po
result=$?

exit $result
