In perl.git, the branch sprout/overridesγ has been created
<http://perl5.git.perl.org/perl.git/commitdiff/68a442f057ed3e9c021acd7096876d192e78143c?hp=0000000000000000000000000000000000000000>
at 68a442f057ed3e9c021acd7096876d192e78143c (commit)
- Log -----------------------------------------------------------------
commit 68a442f057ed3e9c021acd7096876d192e78143c
Author: Father Chrysostomos <[email protected]>
Date: Fri May 11 22:34:25 2012 -0700
Add a prototype for CORE::undef
Instead of calling ck_lfun on an undef op and marking it with S, we
can just mark it with R, which has the same effect.
ck_fun calls scalar(kid) on the child op if regen/opcodes indicates S
for the argument. ck_lfun calls ck_fun and then modkids on its return
value, which in turn does op_lvalue(kid, ...).
If we use R, ck_fun does both scalar() and op_lvalue(), saving two
function calls, and a special case in core_prototype.
(There is still a special case in core_prototype, but a smaller one
than we would need otherwise.)
M op.c
M opcode.h
M regen/opcodes
M t/op/cproto.t
commit 7f65aff99efd021b6ac8dcc7bc19eb371259195a
Author: Father Chrysostomos <[email protected]>
Date: Fri May 11 22:06:29 2012 -0700
Add &CORE::study
M gv.c
M t/op/coreamp.t
M t/op/coresubs.t
commit 377f101f5baf4934a350bca006b03ae6910eeab2
Author: Father Chrysostomos <[email protected]>
Date: Fri May 11 22:03:55 2012 -0700
Add &CORE::split
M gv.c
M t/op/coreamp.t
M t/op/coresubs.t
commit ac0cd9bebf3b901318f6d7f2daf7a6424cc6744f
Author: Father Chrysostomos <[email protected]>
Date: Fri May 11 21:54:03 2012 -0700
Add &CORE::scalar
M gv.c
M t/op/coreamp.t
M t/op/coresubs.t
commit 5c69832567a2ff7a4382495f6b88f6be2c2d0578
Author: Father Chrysostomos <[email protected]>
Date: Fri May 11 21:48:58 2012 -0700
pp.c:pp_coreargs: use PL_op_desc instead of OP_DESC
Instead of using OP_DESC on op_next, since we already know the op
number, we can just go straight to PL_op_desc, which is what OP_DESC
itself uses after looking inside op_next to find out what the op
number is.
BTW, &CORE::scalar will need this, since a scalar op is never actu-
ally executed, making coreargsâ op_next pointer point to another op
than expected:
2 <1> leavesublv[1 ref] K/REFC,1 ->(end)
- <1> scalar sKP/1 ->2
1 <$> coreargs(IV 2) s ->2
-e syntax OK
Otherwise we get âNot enough arguments for lvalue subroutine returnâ.
M pp.c
commit 25c00f40b69ea06ba5ee48dddcfbdf1d798617c2
Author: Father Chrysostomos <[email protected]>
Date: Fri May 11 20:48:02 2012 -0700
[perl #105926] Make ârequire 6â a syntactic special case
This commit moves the special-casing for ârequire 6â from pp_require
(run time) to op.c (optree-building time). If the argument to require
is a constant (not counting folded constants) that is a number or a
vstring, the require op is flagged as being a version check, with the
newly-added OPpREQUIRE_VER flag.
This means that ârequire $verâ no longer works, which could be consid-
ered an incompatible change (some tests had to change), but the bug
fix below makes it worth it.
Since CORE::require($_[0]) will no longer work from an override (actu-
ally a callback; see perl #108286), overrides are no longer called for
version checks like ârequire 5â. The tests for this are marked to-do
for now, as they will be re-enabled (with âuse feature "overrides"â)
when the âoverridesâ feature comes into effect.
I left the lexing part of require as it was, since, although it is
clearly buggy, it is not clear exactly how things are supposed to
work. See perl #107004.
This is the bug fix we get as a result:
These two lines:
$x = "6"; require $x;
$x = "6"; 0+$x; require $x;
should behave exactly the same way, but the latter was a version
check. Now they are both file names. And this no longer happens:
$ perl5.12.4 -le '$x = "34 cabbages"; 0+$x; require $x'
Invalid version format (non-numeric data) at -e line 1.
In this case, "34 cabbages" should obviously be a file name, but its
numeric representation was causing it to be treated as a version num-
ber; yet the version-parsing code used the string representation.
M ext/B/B/Concise.pm
M op.c
M op.h
M pp_ctl.c
M t/comp/require.t
M t/op/override.t
commit a1990fa9f46895741106eda29a930c4393a896d4
Author: Father Chrysostomos <[email protected]>
Date: Fri May 11 20:27:46 2012 -0700
Test that ârequire v5â ignores sub named v5
This is something I broke in my first (unapplied) attempt to clean up
requireâs parsing madness.
M t/comp/require.t
commit 5466afba82c505f018cb8b859ac114cd725fd4d6
Author: Father Chrysostomos <[email protected]>
Date: Fri May 11 20:13:01 2012 -0700
Make while(each ...) imply defined($_ = ...)
This came up in ticket #108286.
Quoting Nicholas Clark:
>
> while (<STDIN>)
> while (<*>)
>
> These both always implicitly assigned to $_, always implicitly
> added defined.
>
> while ($_ = <STDIN>)
> while ($a = <STDIN>)
> while ($_ = <*>)
> while ($a = <*>)
> while ($_ = readdir D)
> while ($a = readdir D)
> while ($_ = each %h)
> while ($a = each %h)
>
> The implicit defined added was by commit 4b161ae29769b4a3,
> //depot/maint-5.004/perl@949
>
>
> BUT:
>
> while (readdir D)
>
> The implicit assignment to $_ and defined test were both added in
> *2009* (by commit 114c60ecb1f7)
>
>
> leaving:
>
> while (each %h)
>
>
> So it is the odd one out. And in 2009 we felt comfortable to add
> both the implicit assignment and the defined test in blead for
> readdir, as a bug fix, and have had no reports of it caus-
> ing problems.
[He asked:]
> > > So that's a bug?
[And I responded:]
> > That's what I was trying to ask. :-)
>
> OK, after a quite a bit of deliberation and digging, I'm of the opinion
that
>
> 1: yes, it's a bug
...
> So, there's only one use of while(each %...) on CPAN outside of
> debugging or test code, and that's only go the potential to break
> due to assignment now happening to to $_. Compared with 29 matches
> for while\s*\(\s*readdir of which 4 are .pm files. So
>
> 2: I think it's safe to fix it, just like readdir was fixed.
Just *as* readdir was fixed! :-)
M op.c
M t/op/defins.t
commit 509b1e1b6720e691135433272fc8006fbe5b0bbb
Author: Father Chrysostomos <[email protected]>
Date: Thu May 3 09:12:03 2012 -0700
override.t: Remove obsolete comment
M t/op/override.t
commit 546c4deba76ca333f68ebbe37082d4050d13533a
Author: Father Chrysostomos <[email protected]>
Date: Wed May 2 20:37:12 2012 -0700
require_errors.t: Test <> error
M t/op/require_errors.t
commit c56ce25d034e5aae23af8fbb23dcd1d81cbbfef4
Author: Father Chrysostomos <[email protected]>
Date: Wed May 2 20:36:20 2012 -0700
Allow require_errors.t to be run from the top level
M t/op/require_errors.t
commit 04c2ede3fe3bf68ff966db09f364403ef757c471
Author: Father Chrysostomos <[email protected]>
Date: Mon Apr 30 18:18:03 2012 -0700
Record folded constants in the op tree
M dump.c
M ext/B/B/Concise.pm
M ext/B/t/optree_constants.t
M ext/B/t/optree_samples.t
M op.c
M op.h
M toke.c
commit a44fdf65ae67c39ab8463d21b0b42e4137e9eb01
Author: Father Chrysostomos <[email protected]>
Date: Mon Apr 30 18:04:23 2012 -0700
Remove OPpCONST_WARNING from B::Concise
M ext/B/B/Concise.pm
commit 969e9364b636bbb4589c51e918294a775fc0dd88
Author: Father Chrysostomos <[email protected]>
Date: Mon Apr 30 18:03:27 2012 -0700
Increase $B::Concise::VERSION to 0.90
M ext/B/B/Concise.pm
commit 042aa9a81dce319fbdb6f739e4bf3d5b09455016
Author: Father Chrysostomos <[email protected]>
Date: Mon Apr 30 17:46:48 2012 -0700
Remove OPpCONST_WARNING
This was added to op.h in commit 599cee73:
commit 599cee73f2261c5e09cde7ceba3f9a896989e117
Author: Paul Marquess <[email protected]>
Date: Wed Jul 29 10:28:45 1998 +0100
lexical warnings; tweaks to places that didn't apply correctly
Message-Id: <[email protected]>
Subject: lexical warnings patch for 5.005_50
p4raw-id: //depot/perl@1773
dump.c was modified to dump in, in this commit:
commit bf91b999b25fa75a3ef7a327742929592a2e7e9c
Author: Simon Cozens <[email protected]>
Date: Sun May 13 21:20:36 2001 +0100
Op private flags
Message-ID: <[email protected]>
p4raw-id: //depot/perl@10117
But is apparently completely unused anywhere. And I want that bit.
M dump.c
M op.h
commit 9f44ec10de41466f2cd224c1e41f2a6f68e746af
Author: Father Chrysostomos <[email protected]>
Date: Mon Apr 30 08:49:32 2012 -0700
Add &CORE::prototype
M gv.c
M t/op/coreamp.t
M t/op/coresubs.t
commit e7e76912116829ec5c1bb4d095780b127cdcf5e8
Author: Father Chrysostomos <[email protected]>
Date: Sun Apr 29 21:16:51 2012 -0700
coreamp.t: rename badly-named tests
M t/op/coreamp.t
commit ecde8a0ccb5119c407f5d93107d374452fc684ea
Author: Father Chrysostomos <[email protected]>
Date: Sun Apr 29 21:15:25 2012 -0700
Add &CORE::pos
M gv.c
M op.c
M t/op/coreamp.t
M t/op/coresubs.t
commit e0dd37729c231b25a3f1c8395019e61528ea3352
Author: Father Chrysostomos <[email protected]>
Date: Sun Apr 29 17:58:44 2012 -0700
Add &CORE::glob
I added a special case for OP_GLOB to pp_coreargs, since glob does not
have the u flag in regen/opcodes; hence PL_opargs[opnum] & OA_DEFGV is
false, even though glob does imply $_.
Adding the flag to regen/opcodes is not so simple, as the code in
ck_fun that adds the DEFSV op does not account for list ops, but
leaves op_last unchanged.
Changing ck_fun to account requires adding more code than this special
case in pp_coreargs.
OPf_SPECIAL indicates that glob was called with the CORE:: prefix.
M gv.c
M op.c
M pp.c
M t/op/coreamp.t
M t/op/coresubs.t
commit 1020d2ed2a13ff9751ade40f801730522fa8a9b2
Author: Father Chrysostomos <[email protected]>
Date: Sun Apr 29 11:11:15 2012 -0700
op.c:ck_glob: Donât do gv_fetchpv("CORE::GLOBAL::glob")
We have PL_globalstash precisely to avoid the nested stash lookup in
cases like these.
M op.c
commit 845acd4ea01bba9fd318431297953b6f0d5dab21
Author: Father Chrysostomos <[email protected]>
Date: Sun Apr 29 00:11:10 2012 -0700
op.c:ck_require: Ignore sub prototype
The require operator doesnât allow its syntax to be overridden. But
it was still calling an overrideâs call checker anyway, resulting in
strange effects like this:
$ perl -e 'use subs "require"; sub require($$){}; require(1,2)'
Not enough arguments for main::require at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
$ perl -e 'use subs "require"; sub require(){}; require()'
Too many arguments for main::require at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
The subâs own prototype should either apply or not apply; we should
not have some hybrid behaviour half way in between.
In this case, since require has its own parsing, that should take
precedence.
M op.c
M t/comp/bproto.t
commit 229085a9d19d447de455779eca6661d40cfb511d
Author: Father Chrysostomos <[email protected]>
Date: Sun Apr 29 00:06:51 2012 -0700
op.c:ck_glob: Ignore sub prototype
The glob operator doesnât allow its syntax to be overridden. But it
was still calling an overrideâs call checker anyway, resulting in
strange effects like this:
$ perl5.15.9 -e 'use subs "glob"; sub glob($$){} glob 1,2'
Too many arguments for glob at -e line 1, at EOF
Not enough arguments for main::glob at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
The subâs own prototype should either apply or not apply; we should
not have some hybrid behaviour half way in between (two many and not
enough at the same timeâ½).
In this case, since glob has its own parsing, that should take
precedence.
M op.c
M t/comp/bproto.t
commit ea6c9a53415caf589de43c2dbcf10f900bd441ad
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 23:59:46 2012 -0700
op.c:dofile: Ignore sub prototype
The do-FILE operator doesnât allow its syntax to be overridden. But
it was still calling an overrideâs call checker anyway, resulting in
strange effects like this:
$ perl -e 'use subs "do"; sub do($$){}; do(1,2)'
Not enough arguments for main::do at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
$ perl -e 'use subs "do"; sub do(){}; do()'
Too many arguments for main::do at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
The subâs own prototype should either apply or not apply; we should
not have some hybrid behaviour half way in between.
In this case, since âdoâ has its own parsing, that should take
precedence.
M op.c
M t/comp/bproto.t
commit 3c5dabbe22bcbfb4e405617e77f089a6ee5c3a7f
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 23:46:03 2012 -0700
op.c: Remove a redundant ck_subr call from ck_require
newUNOP(OP_ENTERSUB, ...) already calls ck_subr, so wrapping it in
ck_subr(...) is unnecessary and wasteful of precious CPU time.
M op.c
commit c85c3174787ba806b3b4cd9342dc5fac93a42da1
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 23:45:37 2012 -0700
op.c: Remove a redundant ck_subr call from ck_glob
newUNOP(OP_ENTERSUB, ...) already calls ck_subr, so calling ck_subr on
its return value is unnecessary and wasteful of precious CPU time.
M op.c
commit 4abb127318bf75ba173220ed31709224dd3e8fb8
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 23:43:42 2012 -0700
op.c: Remove a redundant ck_subr call from dofile
newUNOP(OP_ENTERSUB, ...) already calls ck_subr, so wrapping it in
ck_subr(...) is unnecessary and wasteful of precious CPU time.
M op.c
commit b084057a3e2c915d59664959d9d074b2662bc2de
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 21:27:40 2012 -0700
op.c:ck_glob: Check PL_globhook before loading File::Glob
By loading File::Glob when there is no CORE::GLOBAL::glob, we just end
up calling Perl_load_module for every glob op, since File::Glob no
longer uses CORE::GLOBAL::glob by default.
We could just as well check whether PL_globhook is set, which would
be faster.
(File::Glob sets PL_globhook when it loads. In 5.14, it didnât
set anything, but ck_glob itself would set CORE::GLOBAL::glob to
File::Glob::csh_glob.)
M op.c
commit 3d46f05f8f86e85e87d444842e90fd25682eba89
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 00:26:39 2012 -0700
Remove the second param to tryAMAGICunTARGET
This macro is unused on CPAN and completely undocumented, so this
change should be safe.
M pp.h
M pp_hot.c
M pp_sys.c
commit 44d9cc64b36ff36467c7cfc63757af877f5c9870
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 00:24:01 2012 -0700
Zap PL_glob_index
As of the previous commit, nothing is using it.
M embedvar.h
M intrpvar.h
M sv.c
commit aa1acbdfc053f74452c1e65e452f76595291bd58
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 00:18:30 2012 -0700
Stop using PL_glob_index for PL_globhook
If Glob.xs just uses the address of PL_op as its iterator key all the
time (when called via PL_globhook too, not just via a glob override),
the code is simpler.
M ext/File-Glob/Glob.xs
M op.c
M pp_sys.c
commit fe27a6ca55d9924f0bd1dd50f6b5c666664316f7
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 28 00:16:25 2012 -0700
Test <> ovrld with glob override
In the previous commit, I almost screwed up the stack for those cases
where glob is overridden and there is iterator overloading.
M lib/overload.t
commit 4a0e1cca3713b5603f7b7039dd7e430b74df9067
Author: Father Chrysostomos <[email protected]>
Date: Fri Apr 27 19:50:44 2012 -0700
Donât pass PL_glob_index to glob overrides
This magic second argument is undocumented, unused on CPAN and in the
core (as of the last few commits), and getting in the way of allowing
glob() to be overridden properly.
It gets in the way because, under the âoverridesâ feature (still a
no-op), the glob keyword will be truly overridable, with no magic
involved, but it will still be called by the built-in <...> operator,
which consequently must not pass any magic second argument.
See <https://rt.perl.org/rt3/Ticket/Display.html?id=108286>.
M op.c
M pp_sys.c
commit c274118caeb2647ed2d3d1dbaf109f8a4e12e587
Author: Father Chrysostomos <[email protected]>
Date: Fri Apr 27 17:08:15 2012 -0700
File::Glob: Donât use the magic 2nd arg to glob
This argument is going away, because it is undocumented, unused on
CPAN outside of the core, and getting in the way of allowing glob() to
be overridden properly.
It gets in the way because, under the âoverridesâ feature (still a
no-op), the glob keyword will be truly overridable, with no magic
involved, but it will still be called by the built-in <...> operator,
which consequently must not pass any magic second argument.
See <https://rt.perl.org/rt3/Ticket/Display.html?id=108286>.
M ext/File-Glob/Glob.pm
M ext/File-Glob/Glob.xs
commit 9a50aeba1a7f4e48520fbdfa5d21c1338db60f02
Author: Father Chrysostomos <[email protected]>
Date: Fri Apr 27 17:06:19 2012 -0700
Increase $File::Glob::VERSION to 1.18
M ext/File-Glob/Glob.pm
commit 45a8972a4fb5e532a3c07ecea48e5309c8333c5c
Author: Father Chrysostomos <[email protected]>
Date: Fri Apr 27 16:48:36 2012 -0700
DosGlob: Donât use the magic 2nd arg to glob
This argument is going away, because it is undocumented, unused on
CPAN outside of the core, and getting in the way of allowing glob() to
be overridden properly.
It gets in the way because, under the âoverridesâ feature (still a
no-op), the glob keyword will be truly overridable, with no magic
involved, but it will still be called by the built-in <...> operator,
which consequently must not pass any magic second argument.
See <https://rt.perl.org/rt3/Ticket/Display.html?id=108286>.
M MANIFEST
A ext/File-DosGlob/DosGlob.xs
M ext/File-DosGlob/lib/File/DosGlob.pm
M ext/File-DosGlob/t/DosGlob.t
commit 5b2b21adbe0c65abd4d3b3bba59979abb16b9e2c
Author: Father Chrysostomos <[email protected]>
Date: Fri Apr 27 16:39:02 2012 -0700
Increase $File::DosGlob::VERSION to 1.07
M ext/File-DosGlob/lib/File/DosGlob.pm
commit 59a24370de35915f521abcfc13178c437cd4089e
Author: Father Chrysostomos <[email protected]>
Date: Fri Apr 27 14:05:39 2012 -0700
Move File::DosGlob from lib to ext
M MANIFEST
M Porting/Maintainers.pl
A ext/File-DosGlob/lib/File/DosGlob.pm
A ext/File-DosGlob/t/DosGlob.t
D lib/File/DosGlob.pm
D lib/File/DosGlob.t
commit 6d61a90586cbc9a9c780271caa1697f804e2a9c3
Author: Father Chrysostomos <[email protected]>
Date: Fri Apr 27 09:53:16 2012 -0700
Add &CORE::exists
M gv.c
M t/op/coreamp.t
M t/op/coresubs.t
commit 933876c38eacb0a427e0a2265e3756b6a6085aec
Author: Father Chrysostomos <[email protected]>
Date: Thu Apr 26 20:40:48 2012 -0700
Add &CORE::delete
M gv.c
M t/op/coreamp.t
M t/op/coresubs.t
commit 06cc47713fe824b4fdd9389c6141ff57943a2b99
Author: Father Chrysostomos <[email protected]>
Date: Thu Apr 26 20:38:37 2012 -0700
Add &CORE::defined
M gv.c
M t/op/coreamp.t
M t/op/coresubs.t
commit 70f34df96d0b2f9e69a7d006af173971c4b74ce2
Author: Father Chrysostomos <[email protected]>
Date: Thu Apr 26 20:36:03 2012 -0700
coresubs.t: Explicitly skip all unsupported keywords
Instead of skipping positive keywords (those that cannot be over-
ridden) because of their positivity, list them explicitly in the
skip list.
This will allow them to be removed one by one.
M t/op/coresubs.t
commit dd5bd267b225cb5ea73aeca3253f637d6ee4d9d3
Author: Father Chrysostomos <[email protected]>
Date: Thu Apr 26 20:31:22 2012 -0700
coreamp.t: Explicitly skip all unsupported keywords
Instead of skipping positive keywords (those that cannot be over-
ridden) because of their positivity, list them explicitly in the
skip list.
This will allow them to be removed one by one.
M t/op/coreamp.t
commit e991451396d0953be1f0b894821b8cf0b632b293
Author: Father Chrysostomos <[email protected]>
Date: Thu Apr 26 17:56:46 2012 -0700
gv.c: List all keywords with no coresubs
S_maybe_add_coresub returns NULL for any keywords that are not
overridable.
Instead of identifying them by the positivity of their codes, list
them all explicitly.
This will allow coresubs to be added for them one by one.
M gv.c
commit e823d85205c343c96383476e0b4dfa23ecaac2f0
Author: Father Chrysostomos <[email protected]>
Date: Thu Apr 26 15:49:22 2012 -0700
dump.c: Dump CVf_IN_OVERRIDES
M dump.c
commit 85379bc322333de6b3f07aa345ec12169c45a57e
Author: Father Chrysostomos <[email protected]>
Date: Thu Apr 26 15:47:49 2012 -0700
op.c: Record whether subs are compiled under overrides feature
M op.c
commit b0a45beb9b440074a2b1cdfa6d912ca2b31e41d5
Author: Father Chrysostomos <[email protected]>
Date: Wed Apr 25 22:30:34 2012 -0700
cv.h: Add CVf_IN_OVERRIDES flag
This will be used to indicate that a sub was compiled under the
âoverridesâ feature.
M cv.h
commit 22dd8ccd127ffd4b2088965e77c6d0321fb03e40
Author: Father Chrysostomos <[email protected]>
Date: Tue Apr 24 06:24:50 2012 -0700
Increase $feature::VERSION to 1.28
M lib/feature.pm
M regen/feature.pl
commit 2617cdd194b0cdbc67313e00c507253002e8b69c
Author: Father Chrysostomos <[email protected]>
Date: Mon Apr 23 23:19:32 2012 -0700
Add overrides feature
It doesnât do anything yet.
M feature.h
M lib/feature.pm
M regen/feature.pl
commit 48fb4abc4f593d74292c7b41dbab1b166d6f0a86
Author: Father Chrysostomos <[email protected]>
Date: Mon Apr 23 23:17:42 2012 -0700
Add 5.17-18 feature bundles
M lib/feature.pm
M regen/feature.pl
commit ccdff70b4974c0a8b2edb638ebd6c7c34dc168ba
Author: Father Chrysostomos <[email protected]>
Date: Mon Apr 23 22:55:48 2012 -0700
Update perlfunc/prototype
to account for the new inconsequentiality of non-overridability.
M pod/perlfunc.pod
commit 4269934025bf35c18222bb7a53e1a9eebeb0d1b2
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 21 19:12:21 2012 -0700
[perl #97478] Make âCanât find opnumberâ UTF-8- and null-clean
M pp.c
M t/comp/proto.t
commit 6a7c4d47cb4508238ec8953f07ba852b92858343
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 21 18:55:38 2012 -0700
cproto.t: Add tests for BEGIN, etc.
M t/op/cproto.t
commit 81c11795b61e07dfe8fe25465364ba4fc3dd4f01
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 21 18:30:35 2012 -0700
Make cproto.t more stringent
It was allowing prototype() to return undef where an empty string
was expected.
M t/op/cproto.t
commit 6b7e745a4c3d6cc1e954c470f8b614ee82dc81df
Author: Father Chrysostomos <[email protected]>
Date: Sat Apr 21 12:50:25 2012 -0700
Add protos for positive keywords
âPositiveâ means having a + before it in regen/keywords.pl; i.e., key-
words that cannot be overridden.
Since all keywords are going to be overridable, it makes sense to
return prototypes for all that can have them, which turns out to be
only a handful.
Some of these canât (easily) be generated from the information in
regen/opcodes, without changing the flags. Changing the flags (e.g.,
using R instead of S for undef) causes other code paths to differ,
resulting in test failures that I havenât looked into yet. But that
is low priority. In those cases I simply hard-coded the prototypes
into op.c:core_prototype.
M op.c
M pp.c
M t/op/cproto.t
-----------------------------------------------------------------------
--
Perl5 Master Repository