Recognize possible generic property call chain ('a.b<T>.c') on '::' LHS.

This commit is contained in:
Dmitry Petrov
2016-12-01 17:34:05 +03:00
parent 4af9b274a1
commit e63abff7e8
4 changed files with 183 additions and 16 deletions
@@ -0,0 +1,28 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
package test
object Wrong
object Right
class a {
class b<T> {
class c {
fun foo() = Wrong
}
}
}
fun Int.foo() = Right
class Test {
val a: List<Int> = null!!
val <T> List<T>.b: Int get() = 42
val Int.c: Int get() = 42
val test1: () -> Right = <!RESERVED_SYNTAX_IN_CALLABLE_REFERENCE_LHS!><!DEBUG_INFO_MISSING_UNRESOLVED!>a<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>b<!><<!DEBUG_INFO_MISSING_UNRESOLVED!>Int<!>>.<!DEBUG_INFO_MISSING_UNRESOLVED!>c<!><!>::<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>
val test1a: () -> Right = a.b.c::foo
val test2: () -> Right = <!RESERVED_SYNTAX_IN_CALLABLE_REFERENCE_LHS!><!DEBUG_INFO_MISSING_UNRESOLVED!>a<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>b<!><<!DEBUG_INFO_MISSING_UNRESOLVED!>Int<!>>.<!DEBUG_INFO_MISSING_UNRESOLVED!>c<!><!>?::<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>
}