[FIR] Throw exception if PSI type in ConeDiagnostic helper is improper

This commit is contained in:
Mikhail Glukhikh
2020-03-19 12:26:04 +03:00
parent 50a9313a5e
commit 1fd3ac046a
@@ -16,21 +16,25 @@ class ConeDiagnostic(
)
inline fun <reified E : PsiElement> DiagnosticFactory0<E>.onSource(source: FirSourceElement): ConeDiagnostic? {
val psi = source.psi as? E ?: return null
val psi = source.psi as? E
?: throw IllegalArgumentException("Incompatible PSI: expected ${E::class}, actual ${source.psi?.let { it::class }}")
return ConeDiagnostic(this.on(psi), source)
}
inline fun <reified E : PsiElement, A> DiagnosticFactory1<E, A>.onSource(source: FirSourceElement, a: A): ConeDiagnostic? {
val psi = source.psi as? E ?: return null
val psi = source.psi as? E
?: throw IllegalArgumentException("Incompatible PSI: expected ${E::class}, actual ${source.psi?.let { it::class }}")
return ConeDiagnostic(this.on(psi, a), source)
}
inline fun <reified E : PsiElement, A, B> DiagnosticFactory2<E, A, B>.onSource(source: FirSourceElement, a: A, b: B): ConeDiagnostic? {
val psi = source.psi as? E ?: return null
val psi = source.psi as? E
?: throw IllegalArgumentException("Incompatible PSI: expected ${E::class}, actual ${source.psi?.let { it::class }}")
return ConeDiagnostic(this.on(psi, a, b), source)
}
inline fun <reified E : PsiElement, A, B, C> DiagnosticFactory3<E, A, B, C>.onSource(source: FirSourceElement, a: A, b: B, c: C): ConeDiagnostic? {
val psi = source.psi as? E ?: return null
val psi = source.psi as? E
?: throw IllegalArgumentException("Incompatible PSI: expected ${E::class}, actual ${source.psi?.let { it::class }}")
return ConeDiagnostic(this.on(psi, a, b, c), source)
}