[FIR] Introduce TYPE_ARGUMENTS_NOT_ALLOWED & some other type errors

This commit introduces several different things, in particular:
- check type arguments in expressions
- new TypeArgumentList node to deal with diagnostic source
- ConeDiagnostic was moved to fir:cones
- ConeIntermediateDiagnostic to use in inference (?) without reporting
- detailed diagnostics on error type
This commit is contained in:
Mikhail Glukhikh
2020-07-22 10:29:59 +03:00
parent c744dfba9c
commit 0804c6a0f3
196 changed files with 774 additions and 484 deletions
@@ -10,6 +10,6 @@ package kotlin.sequences
import p.*
interface I {
val <!EXPOSED_PROPERTY_TYPE!>v1<!>: FilteringSequence
val <!EXPOSED_PROPERTY_TYPE!>v1<!>: <!OTHER_ERROR, OTHER_ERROR!>FilteringSequence<!>
val <!EXPOSED_PROPERTY_TYPE!>v2<!>: IndexingSequence<String>
}
@@ -3,7 +3,7 @@
interface Inv
class Impl : Inv
class Scope<InterfaceT, ImplementationT : InterfaceT>(private val implClass: j.Class<ImplementationT>) {
class Scope<InterfaceT, ImplementationT : InterfaceT>(private val implClass: <!OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR!>j.Class<ImplementationT><!>) {
fun foo(c: Collection<InterfaceT>) {
val hm = c.asSequence()
.<!INAPPLICABLE_CANDIDATE!>filter<!>(<!UNRESOLVED_REFERENCE!>implClass::isInstance<!>)
@@ -1,7 +1,7 @@
// FILE: 1.kt
// COMMON_COROUTINES_TEST
fun test(c: Continuation<Unit>) {}
fun test(c: <!OTHER_ERROR!>Continuation<Unit><!>) {}
// FILE: 2.kt
import COROUTINES_PACKAGE.*
@@ -1,4 +1,4 @@
// JAVAC_SKIP
typealias Test1 = SuspendFunction0<Unit>
typealias Test2 = kotlin.SuspendFunction0<Unit>
typealias Test1 = <!OTHER_ERROR!>SuspendFunction0<Unit><!>
typealias Test2 = <!OTHER_ERROR!>kotlin.SuspendFunction0<Unit><!>
typealias Test3 = kotlin.coroutines.SuspendFunction0<Unit>
@@ -1,5 +1,5 @@
data class A(val x: Set<CLassNotFound> = setOf()) {
fun with(x: Set<CLassNotFound>? = null) {
data class A(val x: <!OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR!>Set<CLassNotFound><!> = setOf()) {
fun with(x: <!OTHER_ERROR, OTHER_ERROR!>Set<CLassNotFound>?<!> = null) {
A(x ?: this.x)
}
}