Re[5]: [Nemerle DSL] Описание конечного автомата
От: hardcase Пират http://nemerle.org
Дата: 16.02.10 16:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А можно прислать мне проект воспроизводящий ошибку? Желательно, чтобы в нем не было ничего лишнего, только описанная проблема. Тогда я постараюсь посмотреть, что происходит, и если получится, поправить баг в компиляторе или объяснить как нужно действовать.


Макрос:
    [MacroUsage(MacroPhase.BeforeTypedMembers, MacroTargets.Class)]
    public macro CreateEvents(tb : TypeBuilder) {
        Helper.CreateEvents(tb, [ "Foo", "Bar" ]);
    }

    module Helper {
        public CreateEvents(tb : TypeBuilder, events : list[string]) : void {
            foreach(name in events) {
                BuildEvent2(tb, name, <[ System.EventHandler ]>);
            }
        }
        
        private BuildEvent2(tb : TypeBuilder, name : string, evt_type : PT.PExpr) : void {
            tb.Define(<[ decl:
                public event $(name : usesite) : $evt_type;
            ]>);
        }
    }

Использование:
[CreateEvents] class C1 { }


Ошибки вида:
mutable _N__N_event_field_of__name___usesite__3262 : System.EventHandler; redefined in 'C1'
redefinition of method C1.add_(name : usesite)(value : System.EventHandler) : void

Текст (name : usesite) наводит на определенные мысли...
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.