Re: Implementation ideas for adding early warning for mis-use of "parent"?

From: Date: Sun, 22 Jul 2018 18:50:46 +0000
Subject: Re: Implementation ideas for adding early warning for mis-use of "parent"?
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-102950@lists.php.net to get a copy of this message
On Sun, Jul 22, 2018 at 2:36 AM Nikita Popov <nikita.ppv@gmail.com> wrote: > > On Sun, Jul 22, 2018 at 2:05 AM, Levi Morrison <levim@php.net> wrote: >> >> This code the illustrates the issue; it has no errors or warnings: >> >> ```php >> class A { >> function m(): parent { >> return $this; >> } >> } >> ``` >> >> However, if you run the method you will get an error. I want to add a >> light warning such as E_STRICT or E_DEPRECATED at compile time. >> >> Using CG(active_class_entry)->parent will not work at compile time, so >> that strategy is out. >> >> Given that zend_compile_func_decl is not called directly >> from >> zend_compile_class_decl it would be difficult to pass the >> parent's >> name in any way other than a compiler global. Is there anything in >> particular I need to do if I add another compiler global? I intend to >> set and unset it in zend_compile_class_decl. >> >> Anyone have a better way to pass around the parent's name at compile time? > > > Please note that for traits and closures it's not possible to determine this at compile > time. > > Nikita Thanks for the note. Fortunately I'm already aware of zend_is_scope_known. Is another compiler global the best way to add this info? Any gotchas with adding another one?

« previous php.internals (#102950) next »