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

Reply via email to