Re: Помогите с вложенными макросами
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.10.12 12:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>      modifiers.AddCustomAttribute(<[ Nemerle.Extensions.StructuralHashCode ]>);
А>

StructuralHashCode теперь указывать не надо. StructuralEquality реализует GetHashCode автоматом.

А>При компиляции выдает ошибку error : Can't find EqualsImpl(...). После ковыряния кода старой и новой версии Nemerle нашел интересную особенность. В старой версии StructuralEquality вызывался один метод класса StructuralEquality_type_postaddMacro на фазе WithTypeMembers, все хорошо компилировалось, генерировался код и все хорошо работало. В новой же версии вызывается, на фазе BeforeInheritance, StructuralEquality_type_postscanMacro который подставляет в генерируемый код пустой метод EqualsImpl(...), а на фазе WithTypeMembers, StructuralEquality_type_postaddMacro который переопределяет EqualsImpl(...), а если нет выдает ошибку написанную выше. Так вот не понятно почему на фазе BeforeInheritance макроса Persistent не вызывается StructuralEquality_type_postscanMacro? И как это можно исправить?


Поглядел беглым взглядом. Проблема в том, что класс для которого добавляется макрос как раз в это время обрабатывается и компилятор просто не понимает, что добавляется новый макрос для той же стадии.

Как решать проблему пока думаю. Видимо нужно что-то в компиляторе менять. Простых путей обхода пока не вижу. Разве что попробовать добавлять данный макрос из макро-атрибутов уровня сборки.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.