Интересный случай (C)
MoKo 21.10.2013 13:34
Стало падать из-за другого исправления, про которое мы забыли упомянуть (исправим это):
"Исправлена ошибка, из-за которой не вызывались геттеры и сеттеры значений у автоматически создаваемых переменных в ^foreach[], ^match[]".
Логика внутри метода match такая - сохраняем текущее значение переменной match, изменяем значение переменной match и выполняем код, восстанавливаем значение переменной match.
При этом match - по-сути обычная переменная, но раньше, если она оказывалась геттером или сеттером - код геттера или сеттера просто не выполнялся. Теперь это исправлено. Но: дальше вылезает проблема с тем, что при @OPTIONS locals на самом деле работает не совсем так, как описано. :) При присвоении - да, всегда присваивается локальная переменная. Но при обращении, если нет локальной переменной - происходит поиск значения и в полях объекта, который и приводит в вашем случае к вызову GET_DEFAULT. У нас давно есть про это тикет, но поскольку это несовместимое изменение и 100% полезут баги мы "боимся" текущее поведение менять.
Так что для повышения совместимости из описанного исправления уберем работу геттеров при сохранении значения $match. То есть ваш код будет работать как и раньше. При этом сеттеры все-таки будут работать, что более важно.
Так что ваш код затронул сразу несколько тонких моментов в парсере. :)
- Parser 3.4.3 RC, MoKo 19.10.2013 02:02
- Ответ, Саян 21.10.2013 16:07
- Спасибо! (-), Ivan Sergeev 20.10.2013 21:58
- Ответ, G_Z [M] 20.10.2013 16:51
- Ответ, Misha v.3 [M] 20.10.2013 18:16
- Ответ, Maxx [M] 19.10.2013 03:21
- Ответ, Sumo [M] 19.10.2013 07:27 / 19.10.2013 07:33
- Ответ, Maxx [M] 19.10.2013 12:47
- Ответ, Sumo [M] 19.10.2013 19:41
- Ответ, MoKo 19.10.2013 13:39
- Ответ, MoKo 19.10.2013 04:12
- Ответ, Maxx [M] 19.10.2013 04:28 / 19.10.2013 04:28
- Ответ, MoKo 19.10.2013 04:43