Enum как необязательный параметр
От: catbert  
Дата: 29.05.10 09:11
Оценка:
enum Options
{
   | Default
   | Magic
}

SomeMethod(parameter : object, opts : Options = Options.Default) : void // ошибка
{
     // blah blah blah
}


Для параметра opts нельзя указать значение Options.Default, потому что Nemerle не считает Options.Default литералом. Нуль указать тоже нельзя, потому что int и Options неявно неприводимы.

Как бороться?
Re: Enum как необязательный параметр
От: hardcase Пират http://nemerle.org
Дата: 29.05.10 09:21
Оценка: +1
Здравствуйте, catbert, Вы писали:

C>
C>enum Options
C>{
C>   | Default
C>   | Magic
C>}

C>SomeMethod(parameter : object, opts : Options = Options.Default) : void // ошибка
C>{
C>     // blah blah blah
C>}
C>


C>Для параметра opts нельзя указать значение Options.Default, потому что Nemerle не считает Options.Default литералом. Нуль указать тоже нельзя, потому что int и Options неявно неприводимы.


Компилятор так себя ведет если перечисление находится в компилируемой сборке. Для перечислений из внешних сборок все замечательно. Предлагаю отписать это в багтрек.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Enum как необязательный параметр
От: catbert  
Дата: 29.05.10 10:32
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Компилятор так себя ведет если перечисление находится в компилируемой сборке. Для перечислений из внешних сборок все замечательно. Предлагаю отписать это в багтрек.


Отписал.
Re[2]: Enum как необязательный параметр
От: Блудов Павел Россия  
Дата: 30.05.10 06:36
Оценка: 6 (1)
Здравствуйте, hardcase, Вы писали:


H>Компилятор так себя ведет если перечисление находится в компилируемой сборке. Для перечислений из внешних сборок все замечательно. Предлагаю отписать это в багтрек.

Вот и выросло поколение...
Nemerle compiler использует стандартный System.Reflection.Emit для создания сборок. А в нём полно косяков.
В данном случае проблема в том, что EnumBuilder ущербнен от рождения. Вот пара ссылок:
https://connect.microsoft.com/VisualStudio/feedback/details/98253/system-reflection-emit-eventbuilder-should-inherit-from-system-reflcetion-eventinfo
http://blogs.msdn.com/b/yirutang/archive/2005/05/19/420134.aspx
Забороть это можно только переходом с SRE на что-то другое.
enumbuilder sre
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.