похоже на ошибку
От: _Claus_  
Дата: 11.12.11 00:38
Оценка:
в макросе, выполняющимся на этапе BeforeTypedMembers функцией

 def xx = typeBuilder.GlobalEnv.LookupType([strtype])


получаю TypeInfo для strtype = "int", IsValueType поле которого == false.
Re: похоже на ошибку
От: hardcase Пират http://nemerle.org
Дата: 11.12.11 07:16
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>получаю TypeInfo для strtype = "int", IsValueType поле которого == false.


Ты получил type alias. Помоему там была какая-то магия с декодированием оного...
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: похоже на ошибку
От: _Claus_  
Дата: 11.12.11 13:00
Оценка:
H>Ты получил type alias. Помоему там была какая-то магия с декодированием оного...

да какая магия. Может для TypeInfo от int ValueType == false? может здесь ValueType значит что-то другое?
Re: похоже на ошибку
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.12.11 13:26
Оценка: 6 (1)
Здравствуйте, _Claus_, Вы писали:

_C_>в макросе, выполняющимся на этапе BeforeTypedMembers функцией

_C_>
_C_> def xx = typeBuilder.GlobalEnv.LookupType([strtype]) 
_C_>

_C_>получаю TypeInfo для strtype = "int", IsValueType поле которого == false.

Это потому что ты получаешь TypeInfo для псевдонима типа. Может то, что свойство IsValueType псевдонима возвращат значение не относящееся к типу для которого создан псевдоним и не правильно. Но твоя проблема связана не с этим.

Ты используешь АПИ слишком низкого уровня. Для получения ссылки на предопределенный тип лучше использовать цитату:
<[ ttype: int ]>

Или typer.BindFixedType() или GlobalEnv.BindFixedType().

При этом псевдонимы преобразуются в ссылку а реальный тип.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: похоже на ошибку
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.12.11 13:27
Оценка:
Здравствуйте, _Claus_, Вы писали:

H>>Ты получил type alias. Помоему там была какая-то магия с декодированием оного...


_C_>да какая магия. Может для TypeInfo от int ValueType == false? может здесь ValueType значит что-то другое?


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