Syntax forms 'a<T>::foo', 'a?::foo' have special cases resolved for future releases.

'a<T>::foo' is reserved if 'a' is a simple name and can be resolved as an expression
(this can be extended to 'a.b.c<T>::foo' case, although that is rather hard to implement using PSI).

 'a?::foo' is reserved if 'a' can be resolved as an expression.
This commit is contained in:
Dmitry Petrov
2016-11-28 09:59:52 +03:00
parent 5d1b848658
commit 2cd6c85cc7
8 changed files with 165 additions and 7 deletions
@@ -0,0 +1,7 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
package test
fun nullableFun(): Int? = null
fun Int.foo() {}
val test1 = <!RESERVED_SYNTAX_IN_CALLABLE_REFERENCE_LHS!>nullableFun()<!>?::<!UNSAFE_CALL!>foo<!>