def f([AnythingGoes] _x)
{
1
};
Код успешно компилируется, хотя макроатрибут не указан.
Проверяется только при попытке использовать его в методах:
F([AnythingGoes] _x : object) : int // Ошибка компиляции, не найден AnythingGoesAttribute
{
1
};
Также макроатрибут полностью игнорируется даже если он находится:
using Nemerle.Assertions;
def f([NotNull] _x)
{
1
};
f(null); // Нет ошибки !
Тут нужно либо запретить макроатрибуты в локальных функциях, либо их починить.
Какие мнения ?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _nn_, Вы писали:
__>>Тут нужно либо запретить макроатрибуты в локальных функциях, либо их починить.
__>>Какие мнения ?
VD>Конечно чинить.
Кстит, аналогичная проблема с простыми атрибутами:
using System;
class MyAttribute : Attribute {}
module M
{
Main() : void
{
def f([My] x) { x }
Console.WriteLine(f(1));
}
}
`MyAttribute' is not externally visible and has never been referenced
Не говоря о том, что нельзя применить атрибут непосредственно к функции:
(Если чинить, то чинить до конца
)
[My]
[return: My]
def f(x) { x }