On Sun, Jul 22, 2018 at 2:36 AM Nikita Popov <[email protected]> wrote: > > On Sun, Jul 22, 2018 at 2:05 AM, Levi Morrison <[email protected]> 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? -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php
