diff options
author | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2022-12-24 13:17:47 +0000 |
---|---|---|
committer | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2023-02-10 12:07:02 +0000 |
commit | 99b497aa90ed7db99d29a301b47c91fba65c9cb3 (patch) | |
tree | 09e231f3a6838cdb2df9db9454981b9205046ba1 /gv.c | |
parent | b40895ae558e0aff0c347785dafeaaff40a01801 (diff) | |
download | perl-99b497aa90ed7db99d29a301b47c91fba65c9cb3.tar.gz |
Initial attack at basic 'class' feature
Adds a new experimental warning, feature, keywords and enough parsing to
implement basic classes with an empty `new` constructor method.
Inject a $self lexical into method bodies; populate it with the object instance, suitably shifted
Creates a new OP_METHSTART opcode to perform method setup
Define an aux flag to remark which stashes are classes
Basic implementation of fields.
Basic anonymous methods.
Diffstat (limited to 'gv.c')
-rw-r--r-- | gv.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -605,23 +605,28 @@ S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv, switch (code < 0 ? -code : code) { /* no support for \&CORE::infix; no support for funcs that do not parse like funcs */ - case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD: - case KEY_BEGIN : case KEY_CHECK : case KEY_catch : case KEY_cmp: - case KEY_default : case KEY_defer : case KEY_DESTROY: + case KEY___DATA__: case KEY___END__ : + case KEY_ADJUST : case KEY_AUTOLOAD: case KEY_BEGIN : case KEY_CHECK : + case KEY_DESTROY : case KEY_END : case KEY_INIT : case KEY_UNITCHECK: + case KEY_and : case KEY_catch : case KEY_class : + case KEY_cmp : case KEY_default: case KEY_defer : case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif : - case KEY_END : case KEY_eq : case KEY_eval : case KEY_finally: + case KEY_eq : case KEY_eval : case KEY_field : + case KEY_finally: case KEY_for : case KEY_foreach: case KEY_format: case KEY_ge : case KEY_given : case KEY_goto : case KEY_grep : case KEY_gt : - case KEY_if : case KEY_isa : case KEY_INIT : case KEY_last : + case KEY_if : case KEY_isa : + case KEY_last : case KEY_le : case KEY_local : case KEY_lt : case KEY_m : - case KEY_map : case KEY_my: + case KEY_map : case KEY_method : case KEY_my : case KEY_ne : case KEY_next : case KEY_no: case KEY_or: case KEY_our: case KEY_package: case KEY_print: case KEY_printf: case KEY_q : case KEY_qq : case KEY_qr : case KEY_qw : case KEY_qx : case KEY_redo : case KEY_require: case KEY_return: case KEY_s : case KEY_say : case KEY_sort : case KEY_state: case KEY_sub : - case KEY_tr : case KEY_try : case KEY_UNITCHECK: case KEY_unless: + case KEY_tr : case KEY_try : + case KEY_unless: case KEY_until: case KEY_use : case KEY_when : case KEY_while : case KEY_x : case KEY_xor : case KEY_y : return NULL; |