blob: db93b84f3db2bf4823149cbba47ff86e04140cac [file] [log] [blame]
#! /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