Add diagnostic on calling inner classes constructors without receiver

Otherwise there will be just an unresolved reference that doesn't give
any useful information

 #KT-8959 Fixed
This commit is contained in:
Denis Zharkov
2017-02-28 15:28:20 +03:00
parent 1e0ae04aba
commit a7fc32c8da
17 changed files with 133 additions and 37 deletions
@@ -4,7 +4,7 @@ class A(
n: Nested = foo(),
n2: Nested = Nested(),
inn: Inner = null!!,
inn2: Inner = <!UNRESOLVED_REFERENCE!>Inner<!>(),
inn2: Inner = <!RESOLUTION_TO_CLASSIFIER!>Inner<!>(),
i: Interface = null!!,
c: Int = CONST,
cc: Int = Companion.CONST,
@@ -17,7 +17,7 @@ open class S(
class A : I by S(
foo(),
Nested(),
<!UNRESOLVED_REFERENCE!>Inner<!>(),
<!RESOLUTION_TO_CLASSIFIER!>Inner<!>(),
CONST,
Companion.CONST,
Nested.CONST,
@@ -15,7 +15,7 @@ open class S(
class A : S (
foo(),
Nested(),
<!UNRESOLVED_REFERENCE!>Inner<!>(),
<!RESOLUTION_TO_CLASSIFIER!>Inner<!>(),
CONST,
Companion.CONST,
Nested.CONST,
@@ -33,10 +33,10 @@ class E: A() {
object Z {
init {
<!UNRESOLVED_REFERENCE!>B<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>foo<!>()
<!UNRESOLVED_REFERENCE!>B<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>bar<!>()
<!RESOLUTION_TO_CLASSIFIER!>B<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>foo<!>()
<!RESOLUTION_TO_CLASSIFIER!>B<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>bar<!>()
<!UNRESOLVED_REFERENCE!>D<!>()
<!RESOLUTION_TO_CLASSIFIER!>D<!>()
C()
}
}
@@ -58,7 +58,7 @@ class F: A() {
companion object {
init {
B().fas()
<!UNRESOLVED_REFERENCE!>D<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>f<!>()
<!RESOLUTION_TO_CLASSIFIER!>D<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>f<!>()
}
}
}
}
@@ -46,7 +46,7 @@ class Y: B() {
init {
B_()
B.<!UNRESOLVED_REFERENCE!>B_<!>()
B.<!RESOLUTION_TO_CLASSIFIER!>B_<!>()
Y.<!UNRESOLVED_REFERENCE!>B_<!>()
B_S()
@@ -59,7 +59,7 @@ class Y: B() {
val b_s: B_S = null!!
init {
<!UNRESOLVED_REFERENCE!>B_<!>()
<!RESOLUTION_TO_CLASSIFIER!>B_<!>()
B_S()
}
}
@@ -83,8 +83,8 @@ class Z: C() {
init {
<!UNRESOLVED_REFERENCE!>A_S<!>()
<!UNRESOLVED_REFERENCE!>B_<!>()
<!RESOLUTION_TO_CLASSIFIER!>B_<!>()
B_S()
}
}
}
}
@@ -36,7 +36,7 @@ public class F extends D {
class X: D() {
init {
B_()
B.<!UNRESOLVED_REFERENCE!>B_<!>()
B.<!RESOLUTION_TO_CLASSIFIER!>B_<!>()
C.<!UNRESOLVED_REFERENCE!>B_<!>()
D.<!UNRESOLVED_REFERENCE!>B_<!>()
X.<!UNRESOLVED_REFERENCE!>B_<!>()
@@ -79,4 +79,4 @@ class Y: F() {
F.<!UNRESOLVED_REFERENCE!>E_S<!>()
Y.<!UNRESOLVED_REFERENCE!>E_S<!>()
}
}
}