[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
@@ -1,6 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class A<T : Nested, F: Inner, G: Interface> {
class A<T : <!OTHER_ERROR!>Nested<!>, F: <!OTHER_ERROR!>Inner<!>, G: <!OTHER_ERROR!>Interface<!>> {
class Nested
@@ -9,7 +9,7 @@ class A<T : Nested, F: Inner, G: Interface> {
interface Interface
}
class B<T, F, G> where T : Nested, F: Inner, G: Interface {
class B<T, F, G> where T : <!OTHER_ERROR!>Nested<!>, F: <!OTHER_ERROR!>Inner<!>, G: <!OTHER_ERROR!>Interface<!> {
class Nested
@@ -2,7 +2,7 @@
interface I<F, G, H>
class A(impl: Interface) : Nested(), Interface by impl, Inner, I<Nested, Interface, Inner> {
class A(impl: Interface) : <!OTHER_ERROR!>Nested<!>(), <!OTHER_ERROR!>Interface<!> by impl, <!OTHER_ERROR!>Inner<!>, <!OTHER_ERROR!>I<Nested, Interface, Inner><!> {
class Nested
@@ -3,7 +3,7 @@ interface I<F, G>
val aImpl: A.Interface
get() = null!!
object A : Nested(), Interface by aImpl, I<Nested, Interface> {
object A : <!OTHER_ERROR!>Nested<!>(), <!OTHER_ERROR!>Interface<!> by aImpl, <!OTHER_ERROR!>I<Nested, Interface><!> {
class Nested