FIR: implement diagnostics for qualifier as stand-alone expression case

This commit is contained in:
Mikhail Glukhikh
2021-04-30 12:25:52 +03:00
parent 84ccf7bbb1
commit 80a449862e
38 changed files with 190 additions and 58 deletions
@@ -2,25 +2,25 @@ package foo
class X {}
val s = java
val ss = System
val sss = X
val x = "${System}"
val xs = java.lang
val xss = java.lang.System
val xsss = foo.X
val xssss = foo
val f = { System }
val s = <!EXPRESSION_EXPECTED_PACKAGE_FOUND!>java<!>
val ss = <!NO_COMPANION_OBJECT!>System<!>
val sss = <!NO_COMPANION_OBJECT!>X<!>
val x = "${<!NO_COMPANION_OBJECT!>System<!>}"
val xs = java.<!EXPRESSION_EXPECTED_PACKAGE_FOUND!>lang<!>
val xss = java.lang.<!NO_COMPANION_OBJECT!>System<!>
val xsss = foo.<!NO_COMPANION_OBJECT!>X<!>
val xssss = <!EXPRESSION_EXPECTED_PACKAGE_FOUND!>foo<!>
val f = { <!NO_COMPANION_OBJECT!>System<!> }
fun main() {
java = null
System = null
System!!
java.lang.System = null
java.lang.System!!
System is Int
<!EXPRESSION_EXPECTED_PACKAGE_FOUND!>java<!> = null
<!NO_COMPANION_OBJECT!>System<!> = null
<!NO_COMPANION_OBJECT!>System<!>!!
java.lang.<!NO_COMPANION_OBJECT!>System<!> = null
java.lang.<!NO_COMPANION_OBJECT!>System<!>!!
<!NO_COMPANION_OBJECT!>System<!> is Int
<!INVISIBLE_REFERENCE!>System<!>()
(System)
foo@ System
(<!NO_COMPANION_OBJECT!>System<!>)
foo@ <!NO_COMPANION_OBJECT!>System<!>
null <!UNRESOLVED_REFERENCE!>in<!> System
}
+1 -1
View File
@@ -30,7 +30,7 @@ fun test(l : java.util.List<Int>) {
checkSubtype<Set<Int>?>(Collections.singleton<Int>(1))
Collections.singleton<Int>(<!ARGUMENT_TYPE_MISMATCH!>1.0<!>)
List<Int>
<!NO_COMPANION_OBJECT!>List<!><Int>
val o = "sdf" as Object
@@ -10,7 +10,7 @@ val s: String = "test"
// FILE: test.kt
fun ff() {
val a = Test<!UNEXPECTED_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>FOO<!>
val b = foo<!UNEXPECTED_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>s<!>
System<!UNEXPECTED_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>out<!>.println(a + b)
val a = <!NO_COMPANION_OBJECT!>Test<!><!UNEXPECTED_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>FOO<!>
val b = <!EXPRESSION_EXPECTED_PACKAGE_FOUND!>foo<!><!UNEXPECTED_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>s<!>
<!NO_COMPANION_OBJECT!>System<!><!UNEXPECTED_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>out<!>.println(a + b)
}
@@ -36,7 +36,7 @@ val a = A.x
val c = B.<!UNRESOLVED_REFERENCE!>x<!>
val d = b.<!UNRESOLVED_REFERENCE!>x<!>
val s = System // error
val s = <!NO_COMPANION_OBJECT!>System<!> // error
fun test() {
System.out.println()
java.lang.System.out.println()
@@ -33,7 +33,7 @@ fun f() {
A().Inner()
A.Companion.<!UNRESOLVED_REFERENCE!>Nested<!>
A.Companion.<!UNRESOLVED_REFERENCE!>Inner<!>
A.Inner
A.<!NO_COMPANION_OBJECT!>Inner<!>
A.Companion.c
A.Companion.Obj2
A.Companion.Obj2.c
@@ -1 +1 @@
val a: String = <!INITIALIZER_TYPE_MISMATCH!>Nothing<!>
val a: String = <!INITIALIZER_TYPE_MISMATCH, NO_COMPANION_OBJECT!>Nothing<!>
@@ -16,8 +16,8 @@ class E private constructor() {
}
}
val a = A
val a = <!NO_COMPANION_OBJECT!>A<!>
val <!EXPOSED_PROPERTY_TYPE!>b<!> = B
val c = C
val c = <!NO_COMPANION_OBJECT!>C<!>
val d = D
val e = E(42)
@@ -7,10 +7,10 @@ class C
fun test() {
val interface_as_fun = <!UNRESOLVED_REFERENCE!>A<!>()
val interface_as_val = A
val interface_as_val = <!NO_COMPANION_OBJECT!>A<!>
val object_as_fun = <!INVISIBLE_REFERENCE!>B<!>()
val class_as_val = C
val class_as_val = <!NO_COMPANION_OBJECT!>C<!>
}
fun <T> bar() {
@@ -9,10 +9,10 @@ object X {
fun testX() {
val interface_as_fun = X.<!UNRESOLVED_REFERENCE!>A<!>()
val interface_as_val = X.A
val interface_as_val = X.<!NO_COMPANION_OBJECT!>A<!>
val object_as_fun = X.<!INVISIBLE_REFERENCE!>B<!>()
val class_as_val = X.C
val class_as_val = X.<!NO_COMPANION_OBJECT!>C<!>
}
class Y {
@@ -24,10 +24,10 @@ class Y {
fun testY() {
val interface_as_fun = Y.<!UNRESOLVED_REFERENCE!>A<!>()
val interface_as_val = Y.A
val interface_as_val = Y.<!NO_COMPANION_OBJECT!>A<!>
val object_as_fun = Y.<!INVISIBLE_REFERENCE!>B<!>()
val class_as_val = Y.C
val class_as_val = Y.<!NO_COMPANION_OBJECT!>C<!>
}
fun test(x: X) {
@@ -9,7 +9,7 @@ val Int.foo: Int get() = 4
fun Int.extFun() = 4
fun String.test() {
some
<!EXPRESSION_EXPECTED_PACKAGE_FOUND!>some<!>
some.A()
"".<!INAPPLICABLE_CANDIDATE!>some<!>
@@ -11,7 +11,7 @@ sealed class Tree {
fun maxIsClass(): Int = <!NO_ELSE_IN_WHEN!>when<!>(this) {
Empty -> -1
Leaf -> 0
<!NO_COMPANION_OBJECT!>Leaf<!> -> 0
is Node -> this.left.max()
}
@@ -6,14 +6,14 @@ private class C {
private typealias TA = C
private val test1: C = <!INVISIBLE_REFERENCE!>C<!>()
private val test1co: C.Companion = <!INITIALIZER_TYPE_MISMATCH!>C<!>
private val test1co: C.Companion = <!INITIALIZER_TYPE_MISMATCH, NO_COMPANION_OBJECT!>C<!>
private val test2: TA = <!INITIALIZER_TYPE_MISMATCH!>TA(<!NO_VALUE_FOR_PARAMETER!>)<!><!>
private val test2co = TA
// FILE: file2.kt
private val test1: C = C()
private val test1co: C.Companion = <!INITIALIZER_TYPE_MISMATCH!>C<!>
private val test1co: C.Companion = <!INITIALIZER_TYPE_MISMATCH, NO_COMPANION_OBJECT!>C<!>
private val test2: TA = <!INITIALIZER_TYPE_MISMATCH!>TA(<!NO_VALUE_FOR_PARAMETER!>)<!><!>
private val test2co = TA