FIR: add groups to diagnostics DSL
This commit is contained in:
+1
-3
@@ -5,10 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.checkers.generator.diagnostics
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.diagnostics.Severity
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.reflect.KType
|
||||
|
||||
data class Diagnostic(
|
||||
@@ -18,6 +15,7 @@ data class Diagnostic(
|
||||
val psiType: KType,
|
||||
val parameters: List<DiagnosticParameter>,
|
||||
val positioningStrategy: PositioningStrategy,
|
||||
val group: String?,
|
||||
)
|
||||
|
||||
data class DiagnosticParameter(
|
||||
|
||||
+17
-1
@@ -19,6 +19,19 @@ class DiagnosticListBuilder private constructor() {
|
||||
@PrivateForInline
|
||||
val diagnostics = mutableListOf<Diagnostic>()
|
||||
|
||||
@PrivateForInline
|
||||
var currentGroupName: String? = null
|
||||
|
||||
@OptIn(PrivateForInline::class)
|
||||
inline fun group(groupName: String, inner: () -> Unit) {
|
||||
if (currentGroupName != null) {
|
||||
error("Groups can not be nested ")
|
||||
}
|
||||
currentGroupName = groupName
|
||||
inner()
|
||||
currentGroupName = null
|
||||
}
|
||||
|
||||
@OptIn(PrivateForInline::class)
|
||||
inline fun <reified E : FirSourceElement, reified P : PsiElement> error(
|
||||
positioningStrategy: PositioningStrategy = PositioningStrategy.DEFAULT,
|
||||
@@ -45,6 +58,7 @@ class DiagnosticListBuilder private constructor() {
|
||||
sourceElementType = typeOf<E>(),
|
||||
psiType = typeOf<P>(),
|
||||
positioningStrategy,
|
||||
group = currentGroupName,
|
||||
).apply(init).build()
|
||||
AlwaysReturningUnitPropertyDelegate
|
||||
}
|
||||
@@ -68,7 +82,8 @@ class DiagnosticBuilder(
|
||||
private val name: String,
|
||||
private val sourceElementType: KType,
|
||||
private val psiType: KType,
|
||||
private val positioningStrategy: PositioningStrategy
|
||||
private val positioningStrategy: PositioningStrategy,
|
||||
private val group: String?
|
||||
) {
|
||||
@PrivateForInline
|
||||
val parameters = mutableListOf<DiagnosticParameter>()
|
||||
@@ -92,5 +107,6 @@ class DiagnosticBuilder(
|
||||
psiType,
|
||||
parameters,
|
||||
positioningStrategy,
|
||||
group
|
||||
)
|
||||
}
|
||||
+14
-2
@@ -33,12 +33,24 @@ object ErrorListDiagnosticListRenderer : DiagnosticListRenderer() {
|
||||
|
||||
private fun SmartPrinter.printErrorsObject(diagnosticList: DiagnosticList) {
|
||||
inBracketsWithIndent("object FirErrors") {
|
||||
for (it in diagnosticList.diagnostics) {
|
||||
printDiagnostic(it)
|
||||
val groups = diagnosticList.diagnostics.groupBy { it.group }
|
||||
for ((group, diagnostics) in groups) {
|
||||
printDiagnosticGroup(group, diagnostics)
|
||||
println()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun SmartPrinter.printDiagnosticGroup(
|
||||
group: String?,
|
||||
diagnostics: List<Diagnostic>
|
||||
) {
|
||||
println("// ${group ?: "NO GROUP"}")
|
||||
for (it in diagnostics) {
|
||||
printDiagnostic(it)
|
||||
}
|
||||
}
|
||||
|
||||
private fun SmartPrinter.printDiagnostic(diagnostic: Diagnostic) {
|
||||
print("val ${diagnostic.name} by ${diagnostic.getFactoryFunction()}")
|
||||
printTypeArguments(diagnostic.getAllTypeArguments())
|
||||
|
||||
+286
-266
@@ -25,294 +25,314 @@ import org.jetbrains.kotlin.psi.*
|
||||
@Suppress("UNUSED_VARIABLE", "LocalVariableName")
|
||||
@OptIn(PrivateForInline::class)
|
||||
val DIAGNOSTICS_LIST = DiagnosticListBuilder.buildDiagnosticList {
|
||||
// Miscellaneous
|
||||
val SYNTAX by error<FirSourceElement, PsiElement>()
|
||||
val OTHER_ERROR by error<FirSourceElement, PsiElement>()
|
||||
|
||||
// General syntax
|
||||
val ILLEGAL_CONST_EXPRESSION by error<FirSourceElement, PsiElement>()
|
||||
val ILLEGAL_UNDERSCORE by error<FirSourceElement, PsiElement>()
|
||||
val EXPRESSION_REQUIRED by error<FirSourceElement, PsiElement>()
|
||||
val BREAK_OR_CONTINUE_OUTSIDE_A_LOOP by error<FirSourceElement, PsiElement>()
|
||||
val NOT_A_LOOP_LABEL by error<FirSourceElement, PsiElement>()
|
||||
val VARIABLE_EXPECTED by error<FirSourceElement, PsiElement>()
|
||||
val RETURN_NOT_ALLOWED by error<FirSourceElement, PsiElement>()
|
||||
val DELEGATION_IN_INTERFACE by error<FirSourceElement, PsiElement>()
|
||||
|
||||
// Unresolved
|
||||
val HIDDEN by error<FirSourceElement, PsiElement> {
|
||||
parameter<AbstractFirBasedSymbol<*>>("hidden")
|
||||
}
|
||||
val UNRESOLVED_REFERENCE by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("reference")
|
||||
}
|
||||
val UNRESOLVED_LABEL by error<FirSourceElement, PsiElement>()
|
||||
val DESERIALIZATION_ERROR by error<FirSourceElement, PsiElement>()
|
||||
val ERROR_FROM_JAVA_RESOLUTION by error<FirSourceElement, PsiElement>()
|
||||
val UNKNOWN_CALLABLE_KIND by error<FirSourceElement, PsiElement>()
|
||||
val MISSING_STDLIB_CLASS by error<FirSourceElement, PsiElement>()
|
||||
val NO_THIS by error<FirSourceElement, PsiElement>()
|
||||
|
||||
// Super
|
||||
val SUPER_IS_NOT_AN_EXPRESSION by error<FirSourceElement, PsiElement>()
|
||||
val SUPER_NOT_AVAILABLE by error<FirSourceElement, PsiElement>()
|
||||
val ABSTRACT_SUPER_CALL by error<FirSourceElement, PsiElement>()
|
||||
val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error<FirSourceElement, PsiElement>() {
|
||||
parameter<String>("target")
|
||||
group("Miscellaneous") {
|
||||
val SYNTAX by error<FirSourceElement, PsiElement>()
|
||||
val OTHER_ERROR by error<FirSourceElement, PsiElement>()
|
||||
}
|
||||
|
||||
// Supertypes
|
||||
val TYPE_PARAMETER_AS_SUPERTYPE by error<FirSourceElement, PsiElement>()
|
||||
val ENUM_AS_SUPERTYPE by error<FirSourceElement, PsiElement>()
|
||||
val RECURSION_IN_SUPERTYPES by error<FirSourceElement, PsiElement>()
|
||||
val NOT_A_SUPERTYPE by error<FirSourceElement, PsiElement>()
|
||||
val SUPERCLASS_NOT_ACCESSIBLE_FROM_INTERFACE by error<FirSourceElement, PsiElement>()
|
||||
val QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE by error<FirSourceElement, PsiElement>() {
|
||||
parameter<FirClass<*>>("otherSuperType")
|
||||
}
|
||||
val SUPERTYPE_INITIALIZED_IN_INTERFACE by error<FirSourceElement, PsiElement>()
|
||||
val INTERFACE_WITH_SUPERCLASS by error<FirSourceElement, PsiElement>()
|
||||
val CLASS_IN_SUPERTYPE_FOR_ENUM by error<FirSourceElement, PsiElement>()
|
||||
val SEALED_SUPERTYPE by error<FirSourceElement, PsiElement>()
|
||||
val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error<FirSourceElement, PsiElement>()
|
||||
|
||||
// Constructor problems
|
||||
val CONSTRUCTOR_IN_OBJECT by error<FirSourceElement, KtDeclaration>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
val CONSTRUCTOR_IN_INTERFACE by error<FirSourceElement, KtDeclaration>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
val NON_PRIVATE_CONSTRUCTOR_IN_ENUM by error<FirSourceElement, PsiElement>()
|
||||
val NON_PRIVATE_CONSTRUCTOR_IN_SEALED by error<FirSourceElement, PsiElement>()
|
||||
val CYCLIC_CONSTRUCTOR_DELEGATION_CALL by warning<FirSourceElement, PsiElement>()
|
||||
val PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED by warning<FirSourceElement, PsiElement>(PositioningStrategy.SECONDARY_CONSTRUCTOR_DELEGATION_CALL)
|
||||
val SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR by warning<FirSourceElement, PsiElement>()
|
||||
val DELEGATION_SUPER_CALL_IN_ENUM_CONSTRUCTOR by warning<FirSourceElement, PsiElement>()
|
||||
val PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS by warning<FirSourceElement, PsiElement>()
|
||||
val EXPLICIT_DELEGATION_CALL_REQUIRED by warning<FirSourceElement, PsiElement>(PositioningStrategy.SECONDARY_CONSTRUCTOR_DELEGATION_CALL)
|
||||
val SEALED_CLASS_CONSTRUCTOR_CALL by error<FirSourceElement, PsiElement>()
|
||||
|
||||
// Annotations
|
||||
val ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR by error<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_ARGUMENT_MUST_BE_CONST by error<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST by error<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL by error<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_CLASS_MEMBER by error<FirSourceElement, PsiElement>()
|
||||
val ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT by error<FirSourceElement, KtExpression>()
|
||||
val INVALID_TYPE_OF_ANNOTATION_MEMBER by error<FirSourceElement, KtTypeReference>()
|
||||
val LOCAL_ANNOTATION_CLASS_ERROR by error<FirSourceElement, KtClassOrObject>()
|
||||
val MISSING_VAL_ON_ANNOTATION_PARAMETER by error<FirSourceElement, KtParameter>()
|
||||
val NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION by error<FirSourceElement, KtExpression>()
|
||||
val NOT_AN_ANNOTATION_CLASS by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("annotationName")
|
||||
}
|
||||
val NULLABLE_TYPE_OF_ANNOTATION_MEMBER by error<FirSourceElement, KtTypeReference>()
|
||||
val VAR_ANNOTATION_PARAMETER by error<FirSourceElement, KtParameter>(PositioningStrategy.VAL_OR_VAR_NODE)
|
||||
|
||||
// Exposed visibility group
|
||||
val EXPOSED_TYPEALIAS_EXPANDED_TYPE by exposedVisibilityError<KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
val EXPOSED_FUNCTION_RETURN_TYPE by exposedVisibilityError<KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
|
||||
val EXPOSED_RECEIVER_TYPE by exposedVisibilityError<KtTypeReference>()
|
||||
val EXPOSED_PROPERTY_TYPE by exposedVisibilityError<KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
val EXPOSED_PARAMETER_TYPE by exposedVisibilityError<KtParameter>(/* // NB: for parameter FE 1.0 reports not on a name for some reason */)
|
||||
val EXPOSED_SUPER_INTERFACE by exposedVisibilityError<KtTypeReference>()
|
||||
val EXPOSED_SUPER_CLASS by exposedVisibilityError< KtTypeReference>()
|
||||
val EXPOSED_TYPE_PARAMETER_BOUND by exposedVisibilityError<KtTypeReference>()
|
||||
|
||||
// Modifiers
|
||||
val INAPPLICABLE_INFIX_MODIFIER by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("modifier") // TODO or it should be a message?
|
||||
}
|
||||
val REPEATED_MODIFIER by error<FirSourceElement, PsiElement> {
|
||||
parameter<KtModifierKeywordToken>("modifier")
|
||||
}
|
||||
val REDUNDANT_MODIFIER by error<FirSourceElement, PsiElement> {
|
||||
parameter<KtModifierKeywordToken>("redundantModifier")
|
||||
parameter<KtModifierKeywordToken>("conflictingModifier")
|
||||
}
|
||||
val DEPRECATED_MODIFIER_PAIR by error<FirSourceElement, PsiElement> {
|
||||
parameter<KtModifierKeywordToken>("deprecatedModifier")
|
||||
parameter<KtModifierKeywordToken>("conflictingModifier")
|
||||
}
|
||||
val INCOMPATIBLE_MODIFIERS by error<FirSourceElement, PsiElement> {
|
||||
parameter<KtModifierKeywordToken>("modifier1")
|
||||
parameter<KtModifierKeywordToken>("modifier2")
|
||||
}
|
||||
val REDUNDANT_OPEN_IN_INTERFACE by warning<FirSourceElement, KtModifierListOwner>(PositioningStrategy.MODALITY_MODIFIER)
|
||||
|
||||
// Applicability
|
||||
val NONE_APPLICABLE by error<FirSourceElement, PsiElement> {
|
||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
||||
group("General syntax") {
|
||||
val ILLEGAL_CONST_EXPRESSION by error<FirSourceElement, PsiElement>()
|
||||
val ILLEGAL_UNDERSCORE by error<FirSourceElement, PsiElement>()
|
||||
val EXPRESSION_REQUIRED by error<FirSourceElement, PsiElement>()
|
||||
val BREAK_OR_CONTINUE_OUTSIDE_A_LOOP by error<FirSourceElement, PsiElement>()
|
||||
val NOT_A_LOOP_LABEL by error<FirSourceElement, PsiElement>()
|
||||
val VARIABLE_EXPECTED by error<FirSourceElement, PsiElement>()
|
||||
val RETURN_NOT_ALLOWED by error<FirSourceElement, PsiElement>()
|
||||
val DELEGATION_IN_INTERFACE by error<FirSourceElement, PsiElement>()
|
||||
}
|
||||
|
||||
val INAPPLICABLE_CANDIDATE by error<FirSourceElement, PsiElement> {
|
||||
parameter<AbstractFirBasedSymbol<*>>("candidate")
|
||||
}
|
||||
val INAPPLICABLE_LATEINIT_MODIFIER by error<FirSourceElement, PsiElement>() {
|
||||
parameter<String>("reason")
|
||||
group("Unresolved") {
|
||||
val HIDDEN by error<FirSourceElement, PsiElement> {
|
||||
parameter<AbstractFirBasedSymbol<*>>("hidden")
|
||||
}
|
||||
val UNRESOLVED_REFERENCE by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("reference")
|
||||
}
|
||||
val UNRESOLVED_LABEL by error<FirSourceElement, PsiElement>()
|
||||
val DESERIALIZATION_ERROR by error<FirSourceElement, PsiElement>()
|
||||
val ERROR_FROM_JAVA_RESOLUTION by error<FirSourceElement, PsiElement>()
|
||||
val UNKNOWN_CALLABLE_KIND by error<FirSourceElement, PsiElement>()
|
||||
val MISSING_STDLIB_CLASS by error<FirSourceElement, PsiElement>()
|
||||
val NO_THIS by error<FirSourceElement, PsiElement>()
|
||||
}
|
||||
|
||||
// Ambiguity
|
||||
val AMBIGUITY by error<FirSourceElement, PsiElement> {
|
||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
||||
}
|
||||
val ASSIGN_OPERATOR_AMBIGUITY by error<FirSourceElement, PsiElement> {
|
||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
||||
group("Super") {
|
||||
val SUPER_IS_NOT_AN_EXPRESSION by error<FirSourceElement, PsiElement>()
|
||||
val SUPER_NOT_AVAILABLE by error<FirSourceElement, PsiElement>()
|
||||
val ABSTRACT_SUPER_CALL by error<FirSourceElement, PsiElement>()
|
||||
val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error<FirSourceElement, PsiElement>() {
|
||||
parameter<String>("target")
|
||||
}
|
||||
}
|
||||
|
||||
// Types & type parameters
|
||||
val TYPE_MISMATCH by error<FirSourceElement, PsiElement>{
|
||||
parameter<ConeKotlinType>("expectedType")
|
||||
parameter<ConeKotlinType>("actualType")
|
||||
}
|
||||
val RECURSION_IN_IMPLICIT_TYPES by error<FirSourceElement, PsiElement>()
|
||||
val INFERENCE_ERROR by error<FirSourceElement, PsiElement>()
|
||||
val PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT by error<FirSourceElement, PsiElement>()
|
||||
val UPPER_BOUND_VIOLATED by error<FirSourceElement, PsiElement> {
|
||||
parameter<FirTypeParameterSymbol>("typeParameter")
|
||||
parameter<ConeKotlinType>("violatedType")
|
||||
}
|
||||
val TYPE_ARGUMENTS_NOT_ALLOWED by error<FirSourceElement, PsiElement>()
|
||||
val WRONG_NUMBER_OF_TYPE_ARGUMENTS by error<FirSourceElement, PsiElement> {
|
||||
parameter<Int>("expectedCount")
|
||||
parameter<FirClassLikeSymbol<*>>("classifier")
|
||||
}
|
||||
val NO_TYPE_FOR_TYPE_PARAMETER by error<FirSourceElement, PsiElement>()
|
||||
val TYPE_PARAMETERS_IN_OBJECT by error<FirSourceElement, PsiElement>()
|
||||
val ILLEGAL_PROJECTION_USAGE by error<FirSourceElement, PsiElement>()
|
||||
val TYPE_PARAMETERS_IN_ENUM by error<FirSourceElement, PsiElement>()
|
||||
val CONFLICTING_PROJECTION by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("type") // TODO use ConeType instead of String
|
||||
}
|
||||
val VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED by error<FirSourceElement, PsiElement>()
|
||||
val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("returnType") // TODO use ConeType instead of String
|
||||
parameter<FirMemberDeclaration>("superFunction")
|
||||
}
|
||||
val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("propertyType") // TODO use ConeType instead of String
|
||||
parameter<FirMemberDeclaration>("targetProperty")
|
||||
}
|
||||
val VAR_TYPE_MISMATCH_ON_OVERRIDE by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("variableType") // TODO use ConeType instead of String
|
||||
parameter<FirMemberDeclaration>("targetVariable")
|
||||
group("Supertypes") {
|
||||
val TYPE_PARAMETER_AS_SUPERTYPE by error<FirSourceElement, PsiElement>()
|
||||
val ENUM_AS_SUPERTYPE by error<FirSourceElement, PsiElement>()
|
||||
val RECURSION_IN_SUPERTYPES by error<FirSourceElement, PsiElement>()
|
||||
val NOT_A_SUPERTYPE by error<FirSourceElement, PsiElement>()
|
||||
val SUPERCLASS_NOT_ACCESSIBLE_FROM_INTERFACE by error<FirSourceElement, PsiElement>()
|
||||
val QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE by error<FirSourceElement, PsiElement>() {
|
||||
parameter<FirClass<*>>("otherSuperType")
|
||||
}
|
||||
val SUPERTYPE_INITIALIZED_IN_INTERFACE by error<FirSourceElement, PsiElement>()
|
||||
val INTERFACE_WITH_SUPERCLASS by error<FirSourceElement, PsiElement>()
|
||||
val CLASS_IN_SUPERTYPE_FOR_ENUM by error<FirSourceElement, PsiElement>()
|
||||
val SEALED_SUPERTYPE by error<FirSourceElement, PsiElement>()
|
||||
val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error<FirSourceElement, PsiElement>()
|
||||
}
|
||||
|
||||
// Redeclarations
|
||||
val MANY_COMPANION_OBJECTS by error<FirSourceElement, PsiElement>()
|
||||
val CONFLICTING_OVERLOADS by error<FirSourceElement, PsiElement>(PositioningStrategy.DECLARATION_SIGNATURE_OR_DEFAULT) {
|
||||
parameter<String>("conflictingOverloads") // TODO use Collection<Symbol> instead of String
|
||||
}
|
||||
val REDECLARATION by error<FirSourceElement, PsiElement>() {
|
||||
parameter<String>("conflictingDeclaration") // TODO use Collection<Symbol> instead of String
|
||||
}
|
||||
val ANY_METHOD_IMPLEMENTED_IN_INTERFACE by error<FirSourceElement, PsiElement>()
|
||||
|
||||
// Invalid local declarations
|
||||
val LOCAL_OBJECT_NOT_ALLOWED by error<FirSourceElement, KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME) {
|
||||
parameter<Name>("objectName")
|
||||
}
|
||||
val LOCAL_INTERFACE_NOT_ALLOWED by error<FirSourceElement, KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME) {
|
||||
parameter<Name>("interfaceName")
|
||||
group(" Constructor problems") {
|
||||
val CONSTRUCTOR_IN_OBJECT by error<FirSourceElement, KtDeclaration>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
val CONSTRUCTOR_IN_INTERFACE by error<FirSourceElement, KtDeclaration>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
val NON_PRIVATE_CONSTRUCTOR_IN_ENUM by error<FirSourceElement, PsiElement>()
|
||||
val NON_PRIVATE_CONSTRUCTOR_IN_SEALED by error<FirSourceElement, PsiElement>()
|
||||
val CYCLIC_CONSTRUCTOR_DELEGATION_CALL by warning<FirSourceElement, PsiElement>()
|
||||
val PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED by warning<FirSourceElement, PsiElement>(PositioningStrategy.SECONDARY_CONSTRUCTOR_DELEGATION_CALL)
|
||||
val SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR by warning<FirSourceElement, PsiElement>()
|
||||
val DELEGATION_SUPER_CALL_IN_ENUM_CONSTRUCTOR by warning<FirSourceElement, PsiElement>()
|
||||
val PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS by warning<FirSourceElement, PsiElement>()
|
||||
val EXPLICIT_DELEGATION_CALL_REQUIRED by warning<FirSourceElement, PsiElement>(PositioningStrategy.SECONDARY_CONSTRUCTOR_DELEGATION_CALL)
|
||||
val SEALED_CLASS_CONSTRUCTOR_CALL by error<FirSourceElement, PsiElement>()
|
||||
}
|
||||
|
||||
// Functions
|
||||
val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error<FirSourceElement, KtFunction>(PositioningStrategy.MODALITY_MODIFIER) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
parameter<FirMemberDeclaration>("containingClass") // TODO use FirClass instead of FirMemberDeclaration
|
||||
}
|
||||
val ABSTRACT_FUNCTION_WITH_BODY by error<FirSourceElement, KtFunction>(PositioningStrategy.MODALITY_MODIFIER) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
}
|
||||
val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error<FirSourceElement, KtFunction>(PositioningStrategy.DECLARATION_SIGNATURE) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
}
|
||||
val PRIVATE_FUNCTION_WITH_NO_BODY by error<FirSourceElement, KtFunction>(PositioningStrategy.VISIBILITY_MODIFIER) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
group("Annotations") {
|
||||
val ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR by error<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_ARGUMENT_MUST_BE_CONST by error<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST by error<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL by error<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_CLASS_MEMBER by error<FirSourceElement, PsiElement>()
|
||||
val ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT by error<FirSourceElement, KtExpression>()
|
||||
val INVALID_TYPE_OF_ANNOTATION_MEMBER by error<FirSourceElement, KtTypeReference>()
|
||||
val LOCAL_ANNOTATION_CLASS_ERROR by error<FirSourceElement, KtClassOrObject>()
|
||||
val MISSING_VAL_ON_ANNOTATION_PARAMETER by error<FirSourceElement, KtParameter>()
|
||||
val NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION by error<FirSourceElement, KtExpression>()
|
||||
val NOT_AN_ANNOTATION_CLASS by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("annotationName")
|
||||
}
|
||||
val NULLABLE_TYPE_OF_ANNOTATION_MEMBER by error<FirSourceElement, KtTypeReference>()
|
||||
val VAR_ANNOTATION_PARAMETER by error<FirSourceElement, KtParameter>(PositioningStrategy.VAL_OR_VAR_NODE)
|
||||
}
|
||||
|
||||
val NON_MEMBER_FUNCTION_NO_BODY by error<FirSourceElement, KtFunction>(PositioningStrategy.DECLARATION_SIGNATURE) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
group("Exposed visibility group") {
|
||||
val EXPOSED_TYPEALIAS_EXPANDED_TYPE by exposedVisibilityError<KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
val EXPOSED_FUNCTION_RETURN_TYPE by exposedVisibilityError<KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
|
||||
val EXPOSED_RECEIVER_TYPE by exposedVisibilityError<KtTypeReference>()
|
||||
val EXPOSED_PROPERTY_TYPE by exposedVisibilityError<KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
val EXPOSED_PARAMETER_TYPE by exposedVisibilityError<KtParameter>(/* // NB: for parameter FE 1.0 reports not on a name for some reason */)
|
||||
val EXPOSED_SUPER_INTERFACE by exposedVisibilityError<KtTypeReference>()
|
||||
val EXPOSED_SUPER_CLASS by exposedVisibilityError<KtTypeReference>()
|
||||
val EXPOSED_TYPE_PARAMETER_BOUND by exposedVisibilityError<KtTypeReference>()
|
||||
}
|
||||
|
||||
group("Modifiers") {
|
||||
val INAPPLICABLE_INFIX_MODIFIER by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("modifier") // TODO or it should be a message?
|
||||
}
|
||||
val REPEATED_MODIFIER by error<FirSourceElement, PsiElement> {
|
||||
parameter<KtModifierKeywordToken>("modifier")
|
||||
}
|
||||
val REDUNDANT_MODIFIER by error<FirSourceElement, PsiElement> {
|
||||
parameter<KtModifierKeywordToken>("redundantModifier")
|
||||
parameter<KtModifierKeywordToken>("conflictingModifier")
|
||||
}
|
||||
val DEPRECATED_MODIFIER_PAIR by error<FirSourceElement, PsiElement> {
|
||||
parameter<KtModifierKeywordToken>("deprecatedModifier")
|
||||
parameter<KtModifierKeywordToken>("conflictingModifier")
|
||||
}
|
||||
val INCOMPATIBLE_MODIFIERS by error<FirSourceElement, PsiElement> {
|
||||
parameter<KtModifierKeywordToken>("modifier1")
|
||||
parameter<KtModifierKeywordToken>("modifier2")
|
||||
}
|
||||
val REDUNDANT_OPEN_IN_INTERFACE by warning<FirSourceElement, KtModifierListOwner>(PositioningStrategy.MODALITY_MODIFIER)
|
||||
}
|
||||
|
||||
group("Applicability") {
|
||||
val NONE_APPLICABLE by error<FirSourceElement, PsiElement> {
|
||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
||||
}
|
||||
|
||||
val INAPPLICABLE_CANDIDATE by error<FirSourceElement, PsiElement> {
|
||||
parameter<AbstractFirBasedSymbol<*>>("candidate")
|
||||
}
|
||||
val INAPPLICABLE_LATEINIT_MODIFIER by error<FirSourceElement, PsiElement>() {
|
||||
parameter<String>("reason")
|
||||
}
|
||||
}
|
||||
|
||||
group("Ambiguity") {
|
||||
val AMBIGUITY by error<FirSourceElement, PsiElement> {
|
||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
||||
}
|
||||
val ASSIGN_OPERATOR_AMBIGUITY by error<FirSourceElement, PsiElement> {
|
||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
||||
}
|
||||
}
|
||||
|
||||
group("Types & type parameters") {
|
||||
val TYPE_MISMATCH by error<FirSourceElement, PsiElement> {
|
||||
parameter<ConeKotlinType>("expectedType")
|
||||
parameter<ConeKotlinType>("actualType")
|
||||
}
|
||||
val RECURSION_IN_IMPLICIT_TYPES by error<FirSourceElement, PsiElement>()
|
||||
val INFERENCE_ERROR by error<FirSourceElement, PsiElement>()
|
||||
val PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT by error<FirSourceElement, PsiElement>()
|
||||
val UPPER_BOUND_VIOLATED by error<FirSourceElement, PsiElement> {
|
||||
parameter<FirTypeParameterSymbol>("typeParameter")
|
||||
parameter<ConeKotlinType>("violatedType")
|
||||
}
|
||||
val TYPE_ARGUMENTS_NOT_ALLOWED by error<FirSourceElement, PsiElement>()
|
||||
val WRONG_NUMBER_OF_TYPE_ARGUMENTS by error<FirSourceElement, PsiElement> {
|
||||
parameter<Int>("expectedCount")
|
||||
parameter<FirClassLikeSymbol<*>>("classifier")
|
||||
}
|
||||
val NO_TYPE_FOR_TYPE_PARAMETER by error<FirSourceElement, PsiElement>()
|
||||
val TYPE_PARAMETERS_IN_OBJECT by error<FirSourceElement, PsiElement>()
|
||||
val ILLEGAL_PROJECTION_USAGE by error<FirSourceElement, PsiElement>()
|
||||
val TYPE_PARAMETERS_IN_ENUM by error<FirSourceElement, PsiElement>()
|
||||
val CONFLICTING_PROJECTION by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("type") // TODO use ConeType instead of String
|
||||
}
|
||||
val VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED by error<FirSourceElement, PsiElement>()
|
||||
val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("returnType") // TODO use ConeType instead of String
|
||||
parameter<FirMemberDeclaration>("superFunction")
|
||||
}
|
||||
val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("propertyType") // TODO use ConeType instead of String
|
||||
parameter<FirMemberDeclaration>("targetProperty")
|
||||
}
|
||||
val VAR_TYPE_MISMATCH_ON_OVERRIDE by error<FirSourceElement, PsiElement> {
|
||||
parameter<String>("variableType") // TODO use ConeType instead of String
|
||||
parameter<FirMemberDeclaration>("targetVariable")
|
||||
}
|
||||
}
|
||||
|
||||
group("Redeclarations") {
|
||||
val MANY_COMPANION_OBJECTS by error<FirSourceElement, PsiElement>()
|
||||
val CONFLICTING_OVERLOADS by error<FirSourceElement, PsiElement>(PositioningStrategy.DECLARATION_SIGNATURE_OR_DEFAULT) {
|
||||
parameter<String>("conflictingOverloads") // TODO use Collection<Symbol> instead of String
|
||||
}
|
||||
val REDECLARATION by error<FirSourceElement, PsiElement>() {
|
||||
parameter<String>("conflictingDeclaration") // TODO use Collection<Symbol> instead of String
|
||||
}
|
||||
val ANY_METHOD_IMPLEMENTED_IN_INTERFACE by error<FirSourceElement, PsiElement>()
|
||||
}
|
||||
|
||||
group("Invalid local declarations") {
|
||||
val LOCAL_OBJECT_NOT_ALLOWED by error<FirSourceElement, KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME) {
|
||||
parameter<Name>("objectName")
|
||||
}
|
||||
val LOCAL_INTERFACE_NOT_ALLOWED by error<FirSourceElement, KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME) {
|
||||
parameter<Name>("interfaceName")
|
||||
}
|
||||
}
|
||||
|
||||
group("Functions") {
|
||||
val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error<FirSourceElement, KtFunction>(PositioningStrategy.MODALITY_MODIFIER) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
parameter<FirMemberDeclaration>("containingClass") // TODO use FirClass instead of FirMemberDeclaration
|
||||
}
|
||||
val ABSTRACT_FUNCTION_WITH_BODY by error<FirSourceElement, KtFunction>(PositioningStrategy.MODALITY_MODIFIER) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
}
|
||||
val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error<FirSourceElement, KtFunction>(PositioningStrategy.DECLARATION_SIGNATURE) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
}
|
||||
val PRIVATE_FUNCTION_WITH_NO_BODY by error<FirSourceElement, KtFunction>(PositioningStrategy.VISIBILITY_MODIFIER) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
}
|
||||
|
||||
val NON_MEMBER_FUNCTION_NO_BODY by error<FirSourceElement, KtFunction>(PositioningStrategy.DECLARATION_SIGNATURE) {
|
||||
parameter<FirMemberDeclaration>("function")
|
||||
}
|
||||
|
||||
|
||||
val FUNCTION_DECLARATION_WITH_NO_NAME by error<FirSourceElement, KtFunction>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
|
||||
// TODO: val ANONYMOUS_FUNCTION_WITH_NAME by error1<FirSourceElement, PsiElement, Name>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE by error<FirSourceElement, KtParameter>(PositioningStrategy.PARAMETER_DEFAULT_VALUE)
|
||||
val USELESS_VARARG_ON_PARAMETER by warning<FirSourceElement, KtParameter>()
|
||||
|
||||
}
|
||||
|
||||
group("Properties & accessors") {
|
||||
val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error<FirSourceElement, KtModifierListOwner>(PositioningStrategy.MODALITY_MODIFIER) {
|
||||
parameter<FirMemberDeclaration>("property")
|
||||
parameter<FirMemberDeclaration>("containingClass") // TODO use FirClass instead of FirMemberDeclaration
|
||||
}
|
||||
val PRIVATE_PROPERTY_IN_INTERFACE by error<FirSourceElement, KtProperty>(PositioningStrategy.VISIBILITY_MODIFIER)
|
||||
|
||||
val ABSTRACT_PROPERTY_WITH_INITIALIZER by error<FirSourceElement, KtExpression>()
|
||||
val PROPERTY_INITIALIZER_IN_INTERFACE by error<FirSourceElement, KtExpression>()
|
||||
val PROPERTY_WITH_NO_TYPE_NO_INITIALIZER by error<FirSourceElement, KtProperty>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
|
||||
val ABSTRACT_DELEGATED_PROPERTY by error<FirSourceElement, KtPropertyDelegate>()
|
||||
val DELEGATED_PROPERTY_IN_INTERFACE by error<FirSourceElement, KtPropertyDelegate>()
|
||||
// TODO: val ACCESSOR_FOR_DELEGATED_PROPERTY by error1<FirSourceElement, PsiElement, FirPropertyAccessorSymbol>()
|
||||
|
||||
val ABSTRACT_PROPERTY_WITH_GETTER by error<FirSourceElement, KtPropertyAccessor>()
|
||||
val ABSTRACT_PROPERTY_WITH_SETTER by error<FirSourceElement, KtPropertyAccessor>()
|
||||
val PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY by error<FirSourceElement, PsiElement>()
|
||||
val PRIVATE_SETTER_FOR_OPEN_PROPERTY by error<FirSourceElement, PsiElement>()
|
||||
val EXPECTED_PRIVATE_DECLARATION by error<FirSourceElement, KtModifierListOwner>(PositioningStrategy.VISIBILITY_MODIFIER)
|
||||
}
|
||||
|
||||
group("Multi-platform projects") {
|
||||
val EXPECTED_DECLARATION_WITH_BODY by error<FirSourceElement, KtDeclaration>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
val EXPECTED_PROPERTY_INITIALIZER by error<FirSourceElement, KtExpression>()
|
||||
// TODO: need to cover `by` as well as delegate expression
|
||||
val EXPECTED_DELEGATED_PROPERTY by error<FirSourceElement, KtPropertyDelegate>()
|
||||
}
|
||||
|
||||
|
||||
val FUNCTION_DECLARATION_WITH_NO_NAME by error<FirSourceElement, KtFunction>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
|
||||
// TODO: val ANONYMOUS_FUNCTION_WITH_NAME by error1<FirSourceElement, PsiElement, Name>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE by error<FirSourceElement, KtParameter>(PositioningStrategy.PARAMETER_DEFAULT_VALUE)
|
||||
val USELESS_VARARG_ON_PARAMETER by warning<FirSourceElement, KtParameter>()
|
||||
|
||||
|
||||
// Properties & accessors
|
||||
val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error<FirSourceElement, KtModifierListOwner>(PositioningStrategy.MODALITY_MODIFIER) {
|
||||
parameter<FirMemberDeclaration>("property")
|
||||
parameter<FirMemberDeclaration>("containingClass") // TODO use FirClass instead of FirMemberDeclaration
|
||||
group("Destructuring declaration") {
|
||||
val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error<FirSourceElement, KtDestructuringDeclaration>()
|
||||
val COMPONENT_FUNCTION_MISSING by error<FirSourceElement, PsiElement> {
|
||||
parameter<Name>("missingFunctionName")
|
||||
parameter<FirTypeRef>("destructingType")
|
||||
}
|
||||
val COMPONENT_FUNCTION_AMBIGUITY by error<FirSourceElement, PsiElement> {
|
||||
parameter<Name>("functionWithAmbiguityName")
|
||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
||||
}
|
||||
// TODO: val COMPONENT_FUNCTION_ON_NULLABLE by ...
|
||||
// TODO: val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by ...
|
||||
}
|
||||
val PRIVATE_PROPERTY_IN_INTERFACE by error<FirSourceElement, KtProperty>(PositioningStrategy.VISIBILITY_MODIFIER)
|
||||
|
||||
val ABSTRACT_PROPERTY_WITH_INITIALIZER by error<FirSourceElement, KtExpression>()
|
||||
val PROPERTY_INITIALIZER_IN_INTERFACE by error<FirSourceElement, KtExpression>()
|
||||
val PROPERTY_WITH_NO_TYPE_NO_INITIALIZER by error<FirSourceElement, KtProperty>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
|
||||
val ABSTRACT_DELEGATED_PROPERTY by error<FirSourceElement, KtPropertyDelegate>()
|
||||
val DELEGATED_PROPERTY_IN_INTERFACE by error<FirSourceElement, KtPropertyDelegate>()
|
||||
// TODO: val ACCESSOR_FOR_DELEGATED_PROPERTY by error1<FirSourceElement, PsiElement, FirPropertyAccessorSymbol>()
|
||||
|
||||
val ABSTRACT_PROPERTY_WITH_GETTER by error<FirSourceElement, KtPropertyAccessor>()
|
||||
val ABSTRACT_PROPERTY_WITH_SETTER by error<FirSourceElement, KtPropertyAccessor>()
|
||||
val PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY by error<FirSourceElement, PsiElement>()
|
||||
val PRIVATE_SETTER_FOR_OPEN_PROPERTY by error<FirSourceElement, PsiElement>()
|
||||
val EXPECTED_PRIVATE_DECLARATION by error<FirSourceElement, KtModifierListOwner>(PositioningStrategy.VISIBILITY_MODIFIER)
|
||||
|
||||
// Multi-platform projects
|
||||
val EXPECTED_DECLARATION_WITH_BODY by error<FirSourceElement, KtDeclaration>(PositioningStrategy.DECLARATION_SIGNATURE)
|
||||
val EXPECTED_PROPERTY_INITIALIZER by error<FirSourceElement, KtExpression>()
|
||||
// TODO: need to cover `by` as well as delegate expression
|
||||
val EXPECTED_DELEGATED_PROPERTY by error<FirSourceElement, KtPropertyDelegate>()
|
||||
|
||||
|
||||
// Destructuring declaration
|
||||
val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error<FirSourceElement, KtDestructuringDeclaration>()
|
||||
val COMPONENT_FUNCTION_MISSING by error<FirSourceElement, PsiElement> {
|
||||
parameter<Name>("missingFunctionName")
|
||||
parameter<FirTypeRef>("destructingType")
|
||||
group("Control flow diagnostics") {
|
||||
val UNINITIALIZED_VARIABLE by error<FirSourceElement, PsiElement> {
|
||||
parameter<FirPropertySymbol>("variable")
|
||||
}
|
||||
val WRONG_INVOCATION_KIND by warning<FirSourceElement, PsiElement> {
|
||||
parameter<AbstractFirBasedSymbol<*>>("declaration")
|
||||
parameter<EventOccurrencesRange>("requiredRange")
|
||||
parameter<EventOccurrencesRange>("actualRange")
|
||||
}
|
||||
val LEAKED_IN_PLACE_LAMBDA by error<FirSourceElement, PsiElement> {
|
||||
parameter<AbstractFirBasedSymbol<*>>("lambda")
|
||||
}
|
||||
val WRONG_IMPLIES_CONDITION by warning<FirSourceElement, PsiElement>()
|
||||
}
|
||||
val COMPONENT_FUNCTION_AMBIGUITY by error<FirSourceElement, PsiElement> {
|
||||
parameter<Name>("functionWithAmbiguityName")
|
||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
||||
}
|
||||
// TODO: val COMPONENT_FUNCTION_ON_NULLABLE by ...
|
||||
// TODO: val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by ...
|
||||
|
||||
// Control flow diagnostics
|
||||
val UNINITIALIZED_VARIABLE by error<FirSourceElement, PsiElement> {
|
||||
parameter<FirPropertySymbol>("variable")
|
||||
group(" Extended checkers") {
|
||||
val REDUNDANT_VISIBILITY_MODIFIER by warning<FirSourceElement, KtModifierListOwner>(PositioningStrategy.VISIBILITY_MODIFIER)
|
||||
val REDUNDANT_MODALITY_MODIFIER by warning<FirSourceElement, KtModifierListOwner>(PositioningStrategy.MODALITY_MODIFIER)
|
||||
val REDUNDANT_RETURN_UNIT_TYPE by warning<FirSourceElement, PsiTypeElement>()
|
||||
val REDUNDANT_EXPLICIT_TYPE by warning<FirSourceElement, PsiElement>()
|
||||
val REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE by warning<FirSourceElement, PsiElement>()
|
||||
val CAN_BE_VAL by warning<FirSourceElement, KtDeclaration>(PositioningStrategy.VAL_OR_VAR_NODE)
|
||||
val CAN_BE_REPLACED_WITH_OPERATOR_ASSIGNMENT by warning<FirSourceElement, KtExpression>(PositioningStrategy.OPERATOR)
|
||||
val REDUNDANT_CALL_OF_CONVERSION_METHOD by warning<FirSourceElement, PsiElement>()
|
||||
val ARRAY_EQUALITY_OPERATOR_CAN_BE_REPLACED_WITH_EQUALS by warning<FirSourceElement, KtExpression>(PositioningStrategy.OPERATOR)
|
||||
val EMPTY_RANGE by warning<FirSourceElement, PsiElement>()
|
||||
val REDUNDANT_SETTER_PARAMETER_TYPE by warning<FirSourceElement, PsiElement>()
|
||||
val UNUSED_VARIABLE by warning<FirSourceElement, KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
val ASSIGNED_VALUE_IS_NEVER_READ by warning<FirSourceElement, PsiElement>()
|
||||
val VARIABLE_INITIALIZER_IS_REDUNDANT by warning<FirSourceElement, PsiElement>()
|
||||
val VARIABLE_NEVER_READ by warning<FirSourceElement, KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
val USELESS_CALL_ON_NOT_NULL by warning<FirSourceElement, PsiElement>()
|
||||
}
|
||||
val WRONG_INVOCATION_KIND by warning<FirSourceElement, PsiElement> {
|
||||
parameter< AbstractFirBasedSymbol<*>>("declaration")
|
||||
parameter<EventOccurrencesRange>("requiredRange")
|
||||
parameter<EventOccurrencesRange>("actualRange")
|
||||
}
|
||||
val LEAKED_IN_PLACE_LAMBDA by error<FirSourceElement, PsiElement> {
|
||||
parameter<AbstractFirBasedSymbol<*>>("lambda")
|
||||
}
|
||||
val WRONG_IMPLIES_CONDITION by warning<FirSourceElement, PsiElement>()
|
||||
|
||||
// Extended checkers group
|
||||
val REDUNDANT_VISIBILITY_MODIFIER by warning<FirSourceElement, KtModifierListOwner>(PositioningStrategy.VISIBILITY_MODIFIER)
|
||||
val REDUNDANT_MODALITY_MODIFIER by warning<FirSourceElement, KtModifierListOwner>(PositioningStrategy.MODALITY_MODIFIER)
|
||||
val REDUNDANT_RETURN_UNIT_TYPE by warning<FirSourceElement, PsiTypeElement>()
|
||||
val REDUNDANT_EXPLICIT_TYPE by warning<FirSourceElement, PsiElement>()
|
||||
val REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE by warning<FirSourceElement, PsiElement>()
|
||||
val CAN_BE_VAL by warning<FirSourceElement, KtDeclaration>(PositioningStrategy.VAL_OR_VAR_NODE)
|
||||
val CAN_BE_REPLACED_WITH_OPERATOR_ASSIGNMENT by warning<FirSourceElement, KtExpression>(PositioningStrategy.OPERATOR)
|
||||
val REDUNDANT_CALL_OF_CONVERSION_METHOD by warning<FirSourceElement, PsiElement>()
|
||||
val ARRAY_EQUALITY_OPERATOR_CAN_BE_REPLACED_WITH_EQUALS by warning<FirSourceElement, KtExpression>(PositioningStrategy.OPERATOR)
|
||||
val EMPTY_RANGE by warning<FirSourceElement, PsiElement>()
|
||||
val REDUNDANT_SETTER_PARAMETER_TYPE by warning<FirSourceElement, PsiElement>()
|
||||
val UNUSED_VARIABLE by warning<FirSourceElement, KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
val ASSIGNED_VALUE_IS_NEVER_READ by warning<FirSourceElement, PsiElement>()
|
||||
val VARIABLE_INITIALIZER_IS_REDUNDANT by warning<FirSourceElement, PsiElement>()
|
||||
val VARIABLE_NEVER_READ by warning<FirSourceElement, KtNamedDeclaration>(PositioningStrategy.DECLARATION_NAME)
|
||||
val USELESS_CALL_ON_NOT_NULL by warning<FirSourceElement, PsiElement>()
|
||||
}
|
||||
|
||||
private inline fun <reified P : PsiElement> DiagnosticListBuilder.exposedVisibilityError(
|
||||
|
||||
@@ -40,8 +40,11 @@ import org.jetbrains.kotlin.psi.KtTypeReference
|
||||
*/
|
||||
|
||||
object FirErrors {
|
||||
// Miscellaneous
|
||||
val SYNTAX by error0<FirSourceElement, PsiElement>()
|
||||
val OTHER_ERROR by error0<FirSourceElement, PsiElement>()
|
||||
|
||||
// General syntax
|
||||
val ILLEGAL_CONST_EXPRESSION by error0<FirSourceElement, PsiElement>()
|
||||
val ILLEGAL_UNDERSCORE by error0<FirSourceElement, PsiElement>()
|
||||
val EXPRESSION_REQUIRED by error0<FirSourceElement, PsiElement>()
|
||||
@@ -50,6 +53,8 @@ object FirErrors {
|
||||
val VARIABLE_EXPECTED by error0<FirSourceElement, PsiElement>()
|
||||
val RETURN_NOT_ALLOWED by error0<FirSourceElement, PsiElement>()
|
||||
val DELEGATION_IN_INTERFACE by error0<FirSourceElement, PsiElement>()
|
||||
|
||||
// Unresolved
|
||||
val HIDDEN by error1<FirSourceElement, PsiElement, AbstractFirBasedSymbol<*>>()
|
||||
val UNRESOLVED_REFERENCE by error1<FirSourceElement, PsiElement, String>()
|
||||
val UNRESOLVED_LABEL by error0<FirSourceElement, PsiElement>()
|
||||
@@ -58,10 +63,14 @@ object FirErrors {
|
||||
val UNKNOWN_CALLABLE_KIND by error0<FirSourceElement, PsiElement>()
|
||||
val MISSING_STDLIB_CLASS by error0<FirSourceElement, PsiElement>()
|
||||
val NO_THIS by error0<FirSourceElement, PsiElement>()
|
||||
|
||||
// Super
|
||||
val SUPER_IS_NOT_AN_EXPRESSION by error0<FirSourceElement, PsiElement>()
|
||||
val SUPER_NOT_AVAILABLE by error0<FirSourceElement, PsiElement>()
|
||||
val ABSTRACT_SUPER_CALL by error0<FirSourceElement, PsiElement>()
|
||||
val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error1<FirSourceElement, PsiElement, String>()
|
||||
|
||||
// Supertypes
|
||||
val TYPE_PARAMETER_AS_SUPERTYPE by error0<FirSourceElement, PsiElement>()
|
||||
val ENUM_AS_SUPERTYPE by error0<FirSourceElement, PsiElement>()
|
||||
val RECURSION_IN_SUPERTYPES by error0<FirSourceElement, PsiElement>()
|
||||
@@ -73,6 +82,8 @@ object FirErrors {
|
||||
val CLASS_IN_SUPERTYPE_FOR_ENUM by error0<FirSourceElement, PsiElement>()
|
||||
val SEALED_SUPERTYPE by error0<FirSourceElement, PsiElement>()
|
||||
val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error0<FirSourceElement, PsiElement>()
|
||||
|
||||
// Constructor problems
|
||||
val CONSTRUCTOR_IN_OBJECT by error0<FirSourceElement, KtDeclaration>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE)
|
||||
val CONSTRUCTOR_IN_INTERFACE by error0<FirSourceElement, KtDeclaration>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE)
|
||||
val NON_PRIVATE_CONSTRUCTOR_IN_ENUM by error0<FirSourceElement, PsiElement>()
|
||||
@@ -84,6 +95,8 @@ object FirErrors {
|
||||
val PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS by warning0<FirSourceElement, PsiElement>()
|
||||
val EXPLICIT_DELEGATION_CALL_REQUIRED by warning0<FirSourceElement, PsiElement>(SourceElementPositioningStrategies.SECONDARY_CONSTRUCTOR_DELEGATION_CALL)
|
||||
val SEALED_CLASS_CONSTRUCTOR_CALL by error0<FirSourceElement, PsiElement>()
|
||||
|
||||
// Annotations
|
||||
val ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR by error0<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_ARGUMENT_MUST_BE_CONST by error0<FirSourceElement, KtExpression>()
|
||||
val ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST by error0<FirSourceElement, KtExpression>()
|
||||
@@ -97,6 +110,8 @@ object FirErrors {
|
||||
val NOT_AN_ANNOTATION_CLASS by error1<FirSourceElement, PsiElement, String>()
|
||||
val NULLABLE_TYPE_OF_ANNOTATION_MEMBER by error0<FirSourceElement, KtTypeReference>()
|
||||
val VAR_ANNOTATION_PARAMETER by error0<FirSourceElement, KtParameter>(SourceElementPositioningStrategies.VAL_OR_VAR_NODE)
|
||||
|
||||
// Exposed visibility group
|
||||
val EXPOSED_TYPEALIAS_EXPANDED_TYPE by error3<FirSourceElement, KtNamedDeclaration, FirEffectiveVisibility, FirMemberDeclaration, FirEffectiveVisibility>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val EXPOSED_FUNCTION_RETURN_TYPE by error3<FirSourceElement, KtNamedDeclaration, FirEffectiveVisibility, FirMemberDeclaration, FirEffectiveVisibility>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val EXPOSED_RECEIVER_TYPE by error3<FirSourceElement, KtTypeReference, FirEffectiveVisibility, FirMemberDeclaration, FirEffectiveVisibility>()
|
||||
@@ -105,17 +120,25 @@ object FirErrors {
|
||||
val EXPOSED_SUPER_INTERFACE by error3<FirSourceElement, KtTypeReference, FirEffectiveVisibility, FirMemberDeclaration, FirEffectiveVisibility>()
|
||||
val EXPOSED_SUPER_CLASS by error3<FirSourceElement, KtTypeReference, FirEffectiveVisibility, FirMemberDeclaration, FirEffectiveVisibility>()
|
||||
val EXPOSED_TYPE_PARAMETER_BOUND by error3<FirSourceElement, KtTypeReference, FirEffectiveVisibility, FirMemberDeclaration, FirEffectiveVisibility>()
|
||||
|
||||
// Modifiers
|
||||
val INAPPLICABLE_INFIX_MODIFIER by error1<FirSourceElement, PsiElement, String>()
|
||||
val REPEATED_MODIFIER by error1<FirSourceElement, PsiElement, KtModifierKeywordToken>()
|
||||
val REDUNDANT_MODIFIER by error2<FirSourceElement, PsiElement, KtModifierKeywordToken, KtModifierKeywordToken>()
|
||||
val DEPRECATED_MODIFIER_PAIR by error2<FirSourceElement, PsiElement, KtModifierKeywordToken, KtModifierKeywordToken>()
|
||||
val INCOMPATIBLE_MODIFIERS by error2<FirSourceElement, PsiElement, KtModifierKeywordToken, KtModifierKeywordToken>()
|
||||
val REDUNDANT_OPEN_IN_INTERFACE by warning0<FirSourceElement, KtModifierListOwner>(SourceElementPositioningStrategies.MODALITY_MODIFIER)
|
||||
|
||||
// Applicability
|
||||
val NONE_APPLICABLE by error1<FirSourceElement, PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
|
||||
val INAPPLICABLE_CANDIDATE by error1<FirSourceElement, PsiElement, AbstractFirBasedSymbol<*>>()
|
||||
val INAPPLICABLE_LATEINIT_MODIFIER by error1<FirSourceElement, PsiElement, String>()
|
||||
|
||||
// Ambiguity
|
||||
val AMBIGUITY by error1<FirSourceElement, PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
|
||||
val ASSIGN_OPERATOR_AMBIGUITY by error1<FirSourceElement, PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
|
||||
|
||||
// Types & type parameters
|
||||
val TYPE_MISMATCH by error2<FirSourceElement, PsiElement, ConeKotlinType, ConeKotlinType>()
|
||||
val RECURSION_IN_IMPLICIT_TYPES by error0<FirSourceElement, PsiElement>()
|
||||
val INFERENCE_ERROR by error0<FirSourceElement, PsiElement>()
|
||||
@@ -132,12 +155,18 @@ object FirErrors {
|
||||
val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error2<FirSourceElement, PsiElement, String, FirMemberDeclaration>()
|
||||
val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error2<FirSourceElement, PsiElement, String, FirMemberDeclaration>()
|
||||
val VAR_TYPE_MISMATCH_ON_OVERRIDE by error2<FirSourceElement, PsiElement, String, FirMemberDeclaration>()
|
||||
|
||||
// Redeclarations
|
||||
val MANY_COMPANION_OBJECTS by error0<FirSourceElement, PsiElement>()
|
||||
val CONFLICTING_OVERLOADS by error1<FirSourceElement, PsiElement, String>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT)
|
||||
val REDECLARATION by error1<FirSourceElement, PsiElement, String>()
|
||||
val ANY_METHOD_IMPLEMENTED_IN_INTERFACE by error0<FirSourceElement, PsiElement>()
|
||||
|
||||
// Invalid local declarations
|
||||
val LOCAL_OBJECT_NOT_ALLOWED by error1<FirSourceElement, KtNamedDeclaration, Name>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val LOCAL_INTERFACE_NOT_ALLOWED by error1<FirSourceElement, KtNamedDeclaration, Name>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
|
||||
// Functions
|
||||
val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error2<FirSourceElement, KtFunction, FirMemberDeclaration, FirMemberDeclaration>(SourceElementPositioningStrategies.MODALITY_MODIFIER)
|
||||
val ABSTRACT_FUNCTION_WITH_BODY by error1<FirSourceElement, KtFunction, FirMemberDeclaration>(SourceElementPositioningStrategies.MODALITY_MODIFIER)
|
||||
val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error1<FirSourceElement, KtFunction, FirMemberDeclaration>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE)
|
||||
@@ -146,6 +175,8 @@ object FirErrors {
|
||||
val FUNCTION_DECLARATION_WITH_NO_NAME by error0<FirSourceElement, KtFunction>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE)
|
||||
val ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE by error0<FirSourceElement, KtParameter>(SourceElementPositioningStrategies.PARAMETER_DEFAULT_VALUE)
|
||||
val USELESS_VARARG_ON_PARAMETER by warning0<FirSourceElement, KtParameter>()
|
||||
|
||||
// Properties & accessors
|
||||
val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error2<FirSourceElement, KtModifierListOwner, FirMemberDeclaration, FirMemberDeclaration>(SourceElementPositioningStrategies.MODALITY_MODIFIER)
|
||||
val PRIVATE_PROPERTY_IN_INTERFACE by error0<FirSourceElement, KtProperty>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER)
|
||||
val ABSTRACT_PROPERTY_WITH_INITIALIZER by error0<FirSourceElement, KtExpression>()
|
||||
@@ -158,16 +189,24 @@ object FirErrors {
|
||||
val PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY by error0<FirSourceElement, PsiElement>()
|
||||
val PRIVATE_SETTER_FOR_OPEN_PROPERTY by error0<FirSourceElement, PsiElement>()
|
||||
val EXPECTED_PRIVATE_DECLARATION by error0<FirSourceElement, KtModifierListOwner>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER)
|
||||
|
||||
// Multi-platform projects
|
||||
val EXPECTED_DECLARATION_WITH_BODY by error0<FirSourceElement, KtDeclaration>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE)
|
||||
val EXPECTED_PROPERTY_INITIALIZER by error0<FirSourceElement, KtExpression>()
|
||||
val EXPECTED_DELEGATED_PROPERTY by error0<FirSourceElement, KtPropertyDelegate>()
|
||||
|
||||
// Destructuring declaration
|
||||
val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error0<FirSourceElement, KtDestructuringDeclaration>()
|
||||
val COMPONENT_FUNCTION_MISSING by error2<FirSourceElement, PsiElement, Name, FirTypeRef>()
|
||||
val COMPONENT_FUNCTION_AMBIGUITY by error2<FirSourceElement, PsiElement, Name, Collection<AbstractFirBasedSymbol<*>>>()
|
||||
|
||||
// Control flow diagnostics
|
||||
val UNINITIALIZED_VARIABLE by error1<FirSourceElement, PsiElement, FirPropertySymbol>()
|
||||
val WRONG_INVOCATION_KIND by warning3<FirSourceElement, PsiElement, AbstractFirBasedSymbol<*>, EventOccurrencesRange, EventOccurrencesRange>()
|
||||
val LEAKED_IN_PLACE_LAMBDA by error1<FirSourceElement, PsiElement, AbstractFirBasedSymbol<*>>()
|
||||
val WRONG_IMPLIES_CONDITION by warning0<FirSourceElement, PsiElement>()
|
||||
|
||||
// Extended checkers
|
||||
val REDUNDANT_VISIBILITY_MODIFIER by warning0<FirSourceElement, KtModifierListOwner>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER)
|
||||
val REDUNDANT_MODALITY_MODIFIER by warning0<FirSourceElement, KtModifierListOwner>(SourceElementPositioningStrategies.MODALITY_MODIFIER)
|
||||
val REDUNDANT_RETURN_UNIT_TYPE by warning0<FirSourceElement, PsiTypeElement>()
|
||||
@@ -184,4 +223,5 @@ object FirErrors {
|
||||
val VARIABLE_INITIALIZER_IS_REDUNDANT by warning0<FirSourceElement, PsiElement>()
|
||||
val VARIABLE_NEVER_READ by warning0<FirSourceElement, KtNamedDeclaration>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val USELESS_CALL_ON_NOT_NULL by warning0<FirSourceElement, PsiElement>()
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user