You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Пока IsPartiallyTyped == true, вызов Emit() вызывает ошибку, завивимую от ноды. Вызов метода SetInferredType гасит этот флаг. Проверка будет стоять, как и сейчас, в четырех местах:
Передача аргумента в метод
Присвоение значения в переменную, поле или индекс массива
Приведение значения к типу
Использование аргумента в операторе композиции функций
Кроме того, потребуется особая обработка в инициализаторах коллекций.
Такой подход позволит также разрешить проблему того, что Expand() не может вернуть анонимную функцию с неуказанными типами. Вместо этого нода помечается данным интерфейсом, требует явного указания типа из контекста и возвращает уже типизированную лямбду.
The text was updated successfully, but these errors were encountered:
В языке есть несколько элементов, которые не имеют собственного типа и требуют его указания во внешнем контексте:
null
None
вOption<T>
).Сейчас контекст для них разрешается по-разному. Есть смысл унифицировать механизм до единого.
Например, эти ноды реализуют некий интерфейс
IPartiallyTypedNode
:Пока
IsPartiallyTyped == true
, вызовEmit()
вызывает ошибку, завивимую от ноды. Вызов методаSetInferredType
гасит этот флаг. Проверка будет стоять, как и сейчас, в четырех местах:Кроме того, потребуется особая обработка в инициализаторах коллекций.
Такой подход позволит также разрешить проблему того, что
Expand()
не может вернуть анонимную функцию с неуказанными типами. Вместо этого нода помечается данным интерфейсом, требует явного указания типа из контекста и возвращает уже типизированную лямбду.The text was updated successfully, but these errors were encountered: