toke.c: Combine two identical chunks via goto
Fix our-sub method confusion

‘our $foo’ creates a lexical alias to a global symbol.  That lexi-
cal alias is resolved during parsing.  For instance, if you have
‘our $foo; package bar; $foo’, the last $foo is translated by the
parser into a ‘main::foo’ constant, which is then used for sym-
bol lookup.

A similar thing happens with ‘our subs’.  In
‘our sub foo; package bar; foo()’, the foo() call is first translated
into main::foo, and then there are various checks to determine how to
handle this bareword.

Sometimes it is determined to be a method call, and that’s where
things go awry.  For this name transformation should only happen when
we are going to call this sub.  If the parser concludes that it is not
actually a sub call, then the original bareword as it appeared in the
source should be used.  But that is not what was happening.  As a con-
sequence, this code compiles down to F->main::f, rather than F->f.

use experimental "lexical_subs";
our sub f;
{package F}
f F;
__END__
Undefined subroutine &main::f called at - line 4.

And that it is actually doing a method call, not just f(F) can be dem-
onstrated by the fact that extra arguments can come after F without an
intervening comma:

use experimental "lexical_subs";
our sub f { warn "@_" };
{package F}
f F "g";
__END__
F g at - line 2.

And that inheritance works:

use experimental "lexical_subs";
@ISA = "Bar";
our sub f;
undef *f;
sub Bar'f { print "bark\n" }
{package F}
f F;
__END__
bark

This commit corrects the behaviour by discarding the translated
symbol and restoring the original bareword if it turns out it is a
method name.
Avoid gcc warning.

Cwd.xs:200:50: warning: size argument in 'strlcat' call appears to be size of the source; expected the size of the destination [-Wstrlcpy-strlcat-size]

No effective difference since both the source and destination
are buf[MAXPATHLEN].  They are now.
POSIX math: There's no #elifdef, unfortunately.
POSIX math: Cygwin lacks at least nexttoward.
POSIX math: let's not override the real lrint().
POSIX math: Use rounding macros, instead of the c99_ functions.

This avoids the need for forward declarations.  Also rename
the functions with UPPERCASE so people are more careful.
Correct usage of memEQs in attributes.xs [perl #122701]

Reported and diagnosed by Reini Urban <rurban@cpanel.net>.  The call to
memEQs(name, 6, "shared") could fail if name were shorter than 6 bytes,
or if name were longer than 6, but started with "shared".
%ld expected long int, but got ssize_t.
toke.c: Avoid extra sv_setpv for foo <newline> =>

When parsing something like

    time
       =>

if there is a global override, the parser transforms ‘time’ into
‘CORE::GLOBAL::time’ before it looks at the next line to see if there
is a fat arrow.

If it finds a fat arrow, it has to set the name back to ‘time’.

After finding a fat arrow on the line following a bareword, it was
setting the name to what appears in the program source, even when
there was no global override.  We can skip that most of the time.

All that I said about global overrides applies to ‘our’ subs, too.
‘foo’ gets transformed into ‘ThatPackage::foo’ and needs to be changed
back.  I added a test, to make sure that is not accidentally broken.

I took the liberty of changing ((SVOP*)pl_yylval.opval)->op_sv to sv
at the same time, to make the code more readable.
Version multibump.
POSIX math: Use the Perl_ math APIs (C89) consistently.
big{num,rat,int}: use eval block to load Math::BigInt::Lite
bignum tests: use eval block to load Math::BigInt::Lite
bignum tests: use eval-block instead of eval-string
Increase $bigrat::VERSION to 0.37
Increase $bignum::VERSION to 0.38
Increase $bigint::VERSION to 0.37
ListUtil.xs: Temporary fix removing declaration after statement.

https://rt.cpan.org/Public/Bug/Display.html?id=98624
Remove -foo ambiguity warning

$ ./perl -e 'sub foo{} -foo'
Ambiguous use of -foo resolved as -&foo() at -e line 1.

There is no ambiguity there, since unary minus does not force
its argument to be a bareword; it simply exempts barewords from
strictures.

This warning also makes it harder to use constantly recently added
to POSIX.  To avoid that warning, for negative infinity you have to
write ‘- Inf’ or ‘-+Inf’, because the most natural way of writing it,
‘-Inf’, warns.

See <20140901014232.20757.qmail@lists-nntp.develooper.com> and
related messages.