[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
@@ -50,13 +50,13 @@ class CG : G<Int> {
fun test() {
super<G>.foo() // OK
super<G<Int>>.foo() // Warning
super<G<E>>.foo() // Error
super<G<E>>.<!UNRESOLVED_REFERENCE!>foo<!>() // Error
super<G<String>>.foo() // Error
}
}
// The case when no supertype is resolved
class ERROR<E>() : UR {
class ERROR<E>() : <!OTHER_ERROR!>UR<!> {
fun test() {
super.<!UNRESOLVED_REFERENCE!>foo<!>()
@@ -21,7 +21,7 @@ interface Interface {
get() = 222
}
class ClassDerivedFromUnresolved : Base(), Interface, Unresolved {
class ClassDerivedFromUnresolved : Base(), Interface, <!OTHER_ERROR!>Unresolved<!> {
override fun foo() {}
override fun bar() {}