[FIR] Throw exception if PSI type in ConeDiagnostic helper is improper
This commit is contained in:
+8
-4
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user