[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
@@ -3,7 +3,7 @@
interface B<T>
interface G<T>: B<T>
fun f(p: B<Foo>): Any {
fun f(p: <!OTHER_ERROR, OTHER_ERROR!>B<Foo><!>): Any {
val v = p as G
return checkSubtype<G<*>>(v)
}
@@ -2,7 +2,7 @@
class G<T>
fun foo(p: P) {
fun foo(p: <!OTHER_ERROR, OTHER_ERROR!>P<!>) {
val v = p as G?
checkSubtype<G<*>>(v!!)
}
@@ -1,6 +1,6 @@
class P
fun foo(p: P): Any {
val v = p as G
val v = p as <!OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR, OTHER_ERROR!>G<!>
return v
}