в указанном фрагменте
def fieldTypes(ty : TypeInfo) // без ": TypeInfo" не работает - ошибка!!
def fields = match (ty)
| ty is TypeBuilder =>
ty.GetParsedMembers().OfType.[ClassMember.Field]().Select(f => typer.BindFixedType(f.ty).TypeInfo)
| _ => ty.GetFields(BindingFlags.Public %| BindingFlags.NonPublic %| BindingFlags.Instance)\
.Select(x => x.GetMemType().TypeInfo)
fields.Where(_ != null)
def isPrimitiveValue(ty)
ty.IsValueType && (ty.IsPrimitive || fieldTypes(ty).All(isPrimitiveValue)) //ошибку дает здесь -
//error : in argument #2 (predicate), needed a System.Func[Nemerle.Compiler.TypeInfo-, bool],
// got Nemerle.Compiler.TypeBuilder+ -> ?: Nemerle.Compiler.TypeBuilder+ -> ? is not a subtype
//of System.Func[Nemerle.Compiler.TypeInfo-, bool] [simple require]
def ti = typer.BindFixedType(fld_type)
if (isPrimitiveValue(ti.TypeInfo)) //использую только явно давая TypeInfo
...
не знаю, ошибка ли это, но интуиция подсказывает, что вывод должен быть, запутаться вроде негде.