rsdn / nemerle

Nemerle language. Main repository.
http://nemerle.org
Other
622 stars 89 forks source link

No intellisense on `_` placeholders in lambdas #13311

Open vasily-kirichenko opened 8 years ago

vasily-kirichenko commented 8 years ago

1

VladD2 commented 8 years ago

Думаю, что для решения этой проблемы нужно под рихтовать типизацию частичного применения. Откровенно говоря заниматься этим сейчас не хочется. Если интересно, можешь сам попробовать. Копать надо здесь: https://github.com/rsdn/nemerle/blob/master/ncc/typing/Typer.n#L2079

        | <[ _ :> $_ ]>
        | <[ _ : $_ ]>
        | <[ _ . $_ ]> =>
          TypeExpr (PartialApplication (expression), expected)

Надо перехватывать случай:

| <[ _ .  ]>

но при этом еще может быть проблема с силой связывания, так как такой код - это уже унарный оператор, а у них свои правила связывания.

Так вот надо перехватить этот случай. Добиться, чтобы управление в него приходило. И переписать код так чтобы генерировался фэйковый пустой идентификатор с правильным Location. А там уже комплит должен автоматом заработать.

Иными словами, код _. не переписывается в лямбду и о полноценном коплите говорить уже не рпиходится. Нужно добиться, чтобы переписывался и после . должен идти "пустой" идентификатор.