Какая интересная ситуация. После того, как вы явно присваиваете k значение null, k смарткастится к типу Nothing? (обратите внимание на зелёный бекграунд по втором выражении. А дальше в качестве T у вашей инфиксной функции залетает Nothing, и ИДЕ, к примеру, не может вывести Nothing + String, а вот компилятор почему-то свёл это к Unit.
должно быть это бага?
Похоже на то.
Я вообще не могу сориентироваться, ок ли это, что смарткаст не только позволяет писать код, который без него не работал бы, но и делает валидный без него код невалидным.
а в каком случае это может быть ок?)
Кстати если убрать квалификатор типа у c, то IDE начинает ругаться не на попытку юнит? положить в стринг?, а на плюс, как и ожидалось бы.
Обсуждают сегодня