diff options
author | Father Chrysostomos <sprout@cpan.org> | 2011-08-08 23:57:01 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-08-14 12:54:05 -0700 |
commit | b66130dd0dcaf72b6e443ebde808ff3b8ff9c885 (patch) | |
tree | b63612384ab492310823ce54c709401795d03e07 /pp.c | |
parent | be1b855bbb2f62dad5aa5efb8dc5bce980ad4086 (diff) | |
download | perl-b66130dd0dcaf72b6e443ebde808ff3b8ff9c885.tar.gz |
Move pp_-specific code out of core_prototype
Commit b8c38f0a2a65 refactored pp_prototype by moving much of its
code to a new function in op.c, called core_prototype. This served
two purposes: (1) to allow the code to be simplified, which required
the use of static functions in op.c, and (2) to allow the &CORE::subs
feature to share the same code.
But some code was moved to core_prototype which, in hindsight, did not
need to be moved, such as the ‘Can’t find an opnumber’ message.
This commit moves that code back to pp_prototype, resulting in a sim-
pler (and possibly faster, at least for &CORE::subs) core_prototype.
Diffstat (limited to 'pp.c')
-rw-r--r-- | pp.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -439,9 +439,12 @@ PP(pp_prototype) const char * s = SvPVX_const(TOPs); if (strnEQ(s, "CORE::", 6)) { const int code = keyword(s + 6, SvCUR(TOPs) - 6, 1); - SV *const sv = - core_prototype(NULL, s + 6, code, NULL, 1); - if (sv) ret = sv; + if (!code || code == -KEY_CORE) + DIE(aTHX_ "Can't find an opnumber for \"%s\"", s+6); + if (code < 0) { /* Overridable. */ + SV * const sv = core_prototype(NULL, s + 6, code, NULL); + if (sv) ret = sv; + } goto set; } } |