module managerExtensions
perst_hash = HashSet.[string]()
public isPersist(this ti : FixedType) : bool
(ti :> FixedType.Class :: ti.TypeInfo.GetSuperTypes()).Map(_.ToString()).Exists(perst_hash.Contains(_))
// ^ это приведение представляется лишним, однако без него ошибка
error : in argument #2 (tl), needed a list[Nemerle.Compiler.FixedType-], got list[Nemerle.Compiler.FixedType.Class]: Nemerle.Compiler
GetSuperTypes имеет тип результата list[FixedType.Class].
нетрудно заметить, что в итоге "ti :: ti.TypeInfo.GetSuperTypes()" должен быть получен тип list[FixedType] , однако компилятор отказывается. на упрощенных примерах проблема не наблюдается
def c = [Var.A(2.0)]
mutable g : Var
def d = g :: c //компиляция ок
оформить как исью?
Здравствуйте, _Claus_, Вы писали:
_C_>оформить как исью?
Никак. Тут все нормально.
Если изменишь свой упрощенный пример так:
def c : list[Var.A] = [Var.A(2.0)];
То получишь ту же ошибку.
Просто у тебя тип "c" выводится как list[Var].
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Здравствуйте, _Claus_, Вы писали:
_C_>в ошибочном примере :: оператор разве не должен приводить второй аргумент list[FixedType.Class] к list[FixedType]?
_C_>ковариантность здесь уместна, насколько я понимаю..
Но ее нет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>