parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

боюсь, что это не представляется возможным

Misha v.3 09.06.2009 10:48

т.к. это runtime-оптимизация. для того, чтобы на этапе выполнения понять, есть ли в методе result или нет, надо выполнить все возможные ветки (а для этого, в общем случае, могут подребоваться иные данные).

определение наличия явного присвоения result-у во время компиляции также полностью не решает проблему, т.к. кодер запросто может написать так:
$name[result]
$$name[значение]
название переменной может придти извне, или кто-то может записать в result метода ($caller.result[...]).

и без выполнения всех веток однозначно определить наличие в методе записи в result невозможно (соотв. и ругнуться невозможно).


однако выигрыш от подобной оптимизации оказался существенным, поэтому мы решили пойти на некоторую ломку обратной совместимости, особенно учитывая тот факт, что с нашей точки зрения писать код, который иногда возвращает содержимое result, а иногда содержимое тела -- плохой стиль :)