FIR: report VARARG_OUTSIDE_PARENTHESES

This commit is contained in:
Tianyu Geng
2021-03-01 17:54:55 -08:00
committed by TeamCityServer
parent 20aef57677
commit 89ce629352
9 changed files with 49 additions and 19 deletions
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression
import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.KtObjectDeclaration
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtPropertyAccessor
@@ -539,6 +540,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.VARARG_OUTSIDE_PARENTHESES) { firDiagnostic ->
VarargOutsideParenthesesImpl(
firDiagnostic as FirPsiDiagnostic<*>,
token,
)
}
add(FirErrors.AMBIGUITY) { firDiagnostic ->
AmbiguityImpl(
firDiagnostic.a.map { abstractFirBasedSymbol ->
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression
import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.KtObjectDeclaration
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtPropertyAccessor
@@ -389,6 +390,10 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val reason: String
}
abstract class VarargOutsideParentheses : KtFirDiagnostic<KtExpression>() {
override val diagnosticClass get() = VarargOutsideParentheses::class
}
abstract class Ambiguity : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = Ambiguity::class
abstract val candidates: List<KtSymbol>
@@ -535,7 +540,7 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = NonFinalMemberInObject::class
}
abstract class ManyCompanionObjects : KtFirDiagnostic<PsiElement>() {
abstract class ManyCompanionObjects : KtFirDiagnostic<KtObjectDeclaration>() {
override val diagnosticClass get() = ManyCompanionObjects::class
}
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression
import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.KtObjectDeclaration
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtPropertyAccessor
@@ -618,6 +619,13 @@ internal class InapplicableLateinitModifierImpl(
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
}
internal class VarargOutsideParenthesesImpl(
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,
) : KtFirDiagnostic.VarargOutsideParentheses(), KtAbstractFirDiagnostic<KtExpression> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
}
internal class AmbiguityImpl(
override val candidates: List<KtSymbol>,
firDiagnostic: FirPsiDiagnostic<*>,
@@ -857,7 +865,7 @@ internal class NonFinalMemberInObjectImpl(
internal class ManyCompanionObjectsImpl(
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,
) : KtFirDiagnostic.ManyCompanionObjects(), KtAbstractFirDiagnostic<PsiElement> {
) : KtFirDiagnostic.ManyCompanionObjects(), KtAbstractFirDiagnostic<KtObjectDeclaration> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
}