Не видим extension метод в global scope?
От: fddima  
Дата: 27.07.12 10:54
Оценка:
0. Должен быть установлен .NET 4.0, и никаких там 4.5.

1. Бежим в nemerle/snippets/Nemerle.Async/Nemerle.Async

2. Выполняем:
"%NemerleBinPathRoot%\net-4.0\ncc" -no-color -target:library AsyncTask.n -ref:../AsyncTargetingPack.NET4/Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll


3. Радуемся ошибкам:
AsyncTask.n:55:7:55:22: error: there is no member named `GetAwaiter' in System.Threading.Tasks.Task[A] with type ?
AsyncTask.n:55:7:55:11: error: unbound name `GetAwaiter' in `task'
AsyncTask.n:66:7:66:22: error: there is no member named `GetAwaiter' in System.Threading.Tasks.Task with type ?
AsyncTask.n:66:7:66:11: error: unbound name `GetAwaiter' in `task'


4. Почему так происходит? По тому что видимо не находит Extension метод.
Интересная особенность Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll, в том, что экстеншн метод GetAwaiter там объявлен в классе AsyncCompatLibExtensions, который находится в global. Может потому и не находит?
Re: Не видим extension метод в global scope?
От: fddima  
Дата: 27.07.12 13:07
Оценка:
Здравствуйте, fddima, Вы писали:

Добавил issue #389. Там и минимальный тест.
Re: Не видим extension метод в global scope?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.07.12 13:58
Оценка:
Здравствуйте, fddima, Вы писали:

F>4. Почему так происходит? По тому что видимо не находит Extension метод.

F>Интересная особенность Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll, в том, что экстеншн метод GetAwaiter там объявлен в классе AsyncCompatLibExtensions, который находится в global. Может потому и не находит?

Что значит "находится в global"?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Не видим extension метод в global scope?
От: fddima  
Дата: 27.07.12 13:59
Оценка:
Здравствуйте, VladD2, Вы писали:

F>>4. Почему так происходит? По тому что видимо не находит Extension метод.

F>>Интересная особенность Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll, в том, что экстеншн метод GetAwaiter там объявлен в классе AsyncCompatLibExtensions, который находится в global. Может потому и не находит?
VD>Что значит "находится в global"?
Без нейспейса.
Re[3]: Не видим extension метод в global scope?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.07.12 15:15
Оценка:
Здравствуйте, fddima, Вы писали:

VD>>Что значит "находится в global"?

F> Без нейспейса.

Хм. А на отдельных тестах проверяли?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Не видим extension метод в global scope?
От: fddima  
Дата: 27.07.12 15:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Что значит "находится в global"?

F>> Без нейспейса.
VD>Хм. А на отдельных тестах проверяли?
я ж завел issue, там отдельный тест.
Я в принципе уже и пофиксил вроде бы.
Re: Не видим extension метод в global scope?
От: fddima  
Дата: 27.07.12 20:37
Оценка: 197 (3)
Здравствуйте, fddima, Вы писали:

Фикс готов.
После мержа в основную ветку, теперь Nemerle.Async должен компилироваться.
По крайней мере под чистым .NET 4.0 я попробовал — AsyncTask.n из Nemerle.Async компилируется.
Так что можно будет возвращать Nemerle.Async в поставку.
Спасибо Владу за оперативные и дельные советы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.