From c65553bb8aa2b28b2d44d43412e370f8f3f31974 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 16 Apr 2021 12:08:22 +0300 Subject: [PATCH] [FIR] Get rid of source element type parameter from diagnostic factories --- .../generator/diagnostics/DiagnosticData.kt | 1 - .../generator/diagnostics/DiagnosticGroup.kt | 15 +- .../generator/diagnostics/DiagnosticList.kt | 4 +- .../ErrorListDiagnosticListRenderer.kt | 1 - .../diagnostics/FirDiagnosticsList.kt | 542 ++++++++--------- .../fir/analysis/diagnostics/FirErrors.kt | 553 +++++++++--------- .../FirAnnotationArgumentChecker.kt | 21 +- .../diagnostics/DiagnosticReporter.kt | 48 +- .../fir/analysis/diagnostics/FirDiagnostic.kt | 26 +- .../diagnostics/FirDiagnosticFactory.kt | 70 +-- .../diagnostics/FirDiagnosticFactoryDsl.kt | 49 +- .../FirDiagnosticFactoryToRendererMap.kt | 29 +- .../diagnostics/FirDiagnosticRenderer.kt | 23 +- .../coneDiagnosticToFirDiagnostic.kt | 2 +- .../fir/handlers/FirDiagnosticsHandler.kt | 2 +- .../kotlin/fir/AbstractFirDiagnosticTest.kt | 2 +- .../fir/diagnostics/KtDiagnosticConverter.kt | 14 +- 17 files changed, 687 insertions(+), 715 deletions(-) diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticData.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticData.kt index 0687df22a5f..700154504fe 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticData.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticData.kt @@ -11,7 +11,6 @@ import kotlin.reflect.KType data class DiagnosticData( val severity: Severity, val name: String, - val sourceElementType: KType, val psiType: KType, val parameters: List, val positioningStrategy: PositioningStrategy, diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticGroup.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticGroup.kt index 055b34a878b..9d092337342 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticGroup.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticGroup.kt @@ -7,11 +7,9 @@ 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 org.jetbrains.kotlin.fir.PrivateForInline import kotlin.properties.PropertyDelegateProvider import kotlin.properties.ReadOnlyProperty -import kotlin.reflect.KProperty import kotlin.reflect.typeOf abstract class DiagnosticGroup @PrivateForInline constructor(val name: String) { @@ -24,21 +22,21 @@ abstract class DiagnosticGroup @PrivateForInline constructor(val name: String) { get() = _diagnostics @OptIn(PrivateForInline::class) - inline fun error( + inline fun error( positioningStrategy: PositioningStrategy = PositioningStrategy.DEFAULT, crossinline init: DiagnosticBuilder.() -> Unit = {} - ) = diagnosticDelegateProvider(Severity.ERROR, positioningStrategy, init) + ) = diagnosticDelegateProvider

(Severity.ERROR, positioningStrategy, init) @OptIn(PrivateForInline::class) - inline fun warning( + inline fun warning( positioningStrategy: PositioningStrategy = PositioningStrategy.DEFAULT, crossinline init: DiagnosticBuilder.() -> Unit = {} - ) = diagnosticDelegateProvider(Severity.WARNING, positioningStrategy, init) + ) = diagnosticDelegateProvider

(Severity.WARNING, positioningStrategy, init) @PrivateForInline @OptIn(ExperimentalStdlibApi::class) - inline fun diagnosticDelegateProvider( + inline fun diagnosticDelegateProvider( severity: Severity, positioningStrategy: PositioningStrategy, crossinline init: DiagnosticBuilder.() -> Unit = {} @@ -46,11 +44,10 @@ abstract class DiagnosticGroup @PrivateForInline constructor(val name: String) { val diagnostic = DiagnosticBuilder( severity, name = property.name, - sourceElementType = typeOf(), psiType = typeOf

(), positioningStrategy, ).apply(init).build() _diagnostics += diagnostic ReadOnlyProperty { _, _ -> diagnostic } } -} \ No newline at end of file +} diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticList.kt index de70341f115..8d702b5dac8 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/DiagnosticList.kt @@ -39,7 +39,6 @@ abstract class DiagnosticList { class DiagnosticBuilder( private val severity: Severity, private val name: String, - private val sourceElementType: KType, private val psiType: KType, private val positioningStrategy: PositioningStrategy, ) { @@ -61,9 +60,8 @@ class DiagnosticBuilder( fun build() = DiagnosticData( severity, name, - sourceElementType, psiType, parameters, positioningStrategy, ) -} \ No newline at end of file +} diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/ErrorListDiagnosticListRenderer.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/ErrorListDiagnosticListRenderer.kt index 179184e1985..865cd37f8b7 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/ErrorListDiagnosticListRenderer.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/ErrorListDiagnosticListRenderer.kt @@ -68,7 +68,6 @@ object ErrorListDiagnosticListRenderer : DiagnosticListRenderer() { @OptIn(ExperimentalStdlibApi::class) private fun DiagnosticData.getAllTypeArguments(): List = buildList { - add(sourceElementType) add(psiType) parameters.mapTo(this) { it.type } } diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index 4d2f1b8604e..a6c46210e19 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -33,121 +33,121 @@ import kotlin.properties.ReadOnlyProperty @OptIn(PrivateForInline::class) object DIAGNOSTICS_LIST : DiagnosticList() { val MetaErrors by object : DiagnosticGroup("Meta-errors") { - val UNSUPPORTED by error { + val UNSUPPORTED by error { parameter("unsupported") } - val UNSUPPORTED_FEATURE by error { + val UNSUPPORTED_FEATURE by error { parameter>("unsupportedFeature") } } val Miscellaneous by object : DiagnosticGroup("Miscellaneous") { - val SYNTAX by error() - val OTHER_ERROR by error() + val SYNTAX by error() + val OTHER_ERROR by error() } val GENERAL_SYNTAX by object : DiagnosticGroup("General syntax") { - val ILLEGAL_CONST_EXPRESSION by error() - val ILLEGAL_UNDERSCORE by error() - val EXPRESSION_REQUIRED by error(PositioningStrategy.SELECTOR_BY_QUALIFIED) - val BREAK_OR_CONTINUE_OUTSIDE_A_LOOP by error() - val NOT_A_LOOP_LABEL by error() - val VARIABLE_EXPECTED by error() - val DELEGATION_IN_INTERFACE by error() - val NESTED_CLASS_NOT_ALLOWED by error(PositioningStrategy.DECLARATION_NAME) { + val ILLEGAL_CONST_EXPRESSION by error() + val ILLEGAL_UNDERSCORE by error() + val EXPRESSION_REQUIRED by error(PositioningStrategy.SELECTOR_BY_QUALIFIED) + val BREAK_OR_CONTINUE_OUTSIDE_A_LOOP by error() + val NOT_A_LOOP_LABEL by error() + val VARIABLE_EXPECTED by error() + val DELEGATION_IN_INTERFACE by error() + val NESTED_CLASS_NOT_ALLOWED by error(PositioningStrategy.DECLARATION_NAME) { parameter("declaration") } - val INCORRECT_CHARACTER_LITERAL by error() - val EMPTY_CHARACTER_LITERAL by error() - val TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL by error() - val ILLEGAL_ESCAPE by error() - val INT_LITERAL_OUT_OF_RANGE by error() - val FLOAT_LITERAL_OUT_OF_RANGE by error() - val WRONG_LONG_SUFFIX by error(PositioningStrategy.LONG_LITERAL_SUFFIX) - val DIVISION_BY_ZERO by warning() + val INCORRECT_CHARACTER_LITERAL by error() + val EMPTY_CHARACTER_LITERAL by error() + val TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL by error() + val ILLEGAL_ESCAPE by error() + val INT_LITERAL_OUT_OF_RANGE by error() + val FLOAT_LITERAL_OUT_OF_RANGE by error() + val WRONG_LONG_SUFFIX by error(PositioningStrategy.LONG_LITERAL_SUFFIX) + val DIVISION_BY_ZERO by warning() } val UNRESOLVED by object : DiagnosticGroup("Unresolved") { - val HIDDEN by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val HIDDEN by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter>("hidden") } - val UNRESOLVED_REFERENCE by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) { + val UNRESOLVED_REFERENCE by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) { parameter("reference") } - val UNRESOLVED_LABEL by error() - val DESERIALIZATION_ERROR by error() - val ERROR_FROM_JAVA_RESOLUTION by error() - val UNKNOWN_CALLABLE_KIND by error() - val MISSING_STDLIB_CLASS by error() - val NO_THIS by error() + val UNRESOLVED_LABEL by error() + val DESERIALIZATION_ERROR by error() + val ERROR_FROM_JAVA_RESOLUTION by error() + val UNKNOWN_CALLABLE_KIND by error() + val MISSING_STDLIB_CLASS by error() + val NO_THIS by error() } val SUPER by object : DiagnosticGroup("Super") { - val SUPER_IS_NOT_AN_EXPRESSION by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) - val SUPER_NOT_AVAILABLE by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) - val ABSTRACT_SUPER_CALL by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) - val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error { + val SUPER_IS_NOT_AN_EXPRESSION by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) + val SUPER_NOT_AVAILABLE by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) + val ABSTRACT_SUPER_CALL by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) + val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error { parameter("target") } } val SUPERTYPES by object : DiagnosticGroup("Supertypes") { - val ENUM_AS_SUPERTYPE by error() - val RECURSION_IN_SUPERTYPES by error() - val NOT_A_SUPERTYPE by error() - val SUPERCLASS_NOT_ACCESSIBLE_FROM_INTERFACE by error() - val QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE by error { + val ENUM_AS_SUPERTYPE by error() + val RECURSION_IN_SUPERTYPES by error() + val NOT_A_SUPERTYPE by error() + val SUPERCLASS_NOT_ACCESSIBLE_FROM_INTERFACE by error() + val QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE by error { parameter>("otherSuperType") } - val SUPERTYPE_INITIALIZED_IN_INTERFACE by error() - val INTERFACE_WITH_SUPERCLASS by error() - val CLASS_IN_SUPERTYPE_FOR_ENUM by error() - val SEALED_SUPERTYPE by error() - val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error() - val SUPERTYPE_NOT_A_CLASS_OR_INTERFACE by error { + val SUPERTYPE_INITIALIZED_IN_INTERFACE by error() + val INTERFACE_WITH_SUPERCLASS by error() + val CLASS_IN_SUPERTYPE_FOR_ENUM by error() + val SEALED_SUPERTYPE by error() + val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error() + val SUPERTYPE_NOT_A_CLASS_OR_INTERFACE by error { parameter("reason") } } val CONSTRUCTOR_PROBLEMS by object : DiagnosticGroup("Constructor problems") { - val CONSTRUCTOR_IN_OBJECT by error(PositioningStrategy.DECLARATION_SIGNATURE) - val CONSTRUCTOR_IN_INTERFACE by error(PositioningStrategy.DECLARATION_SIGNATURE) - val NON_PRIVATE_CONSTRUCTOR_IN_ENUM by error() - val NON_PRIVATE_OR_PROTECTED_CONSTRUCTOR_IN_SEALED by error() - val CYCLIC_CONSTRUCTOR_DELEGATION_CALL by warning() - val PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED by warning(PositioningStrategy.SECONDARY_CONSTRUCTOR_DELEGATION_CALL) + val CONSTRUCTOR_IN_OBJECT by error(PositioningStrategy.DECLARATION_SIGNATURE) + val CONSTRUCTOR_IN_INTERFACE by error(PositioningStrategy.DECLARATION_SIGNATURE) + val NON_PRIVATE_CONSTRUCTOR_IN_ENUM by error() + val NON_PRIVATE_OR_PROTECTED_CONSTRUCTOR_IN_SEALED by error() + val CYCLIC_CONSTRUCTOR_DELEGATION_CALL by warning() + val PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED by warning(PositioningStrategy.SECONDARY_CONSTRUCTOR_DELEGATION_CALL) // TODO: change it to KtSuperTypeEntry when possible (after re-targeter implementation) - val SUPERTYPE_NOT_INITIALIZED by error() - val SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR by error() - val DELEGATION_SUPER_CALL_IN_ENUM_CONSTRUCTOR by warning() - val PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS by error(PositioningStrategy.DECLARATION_NAME) - val EXPLICIT_DELEGATION_CALL_REQUIRED by error(PositioningStrategy.SECONDARY_CONSTRUCTOR_DELEGATION_CALL) - val SEALED_CLASS_CONSTRUCTOR_CALL by error() + val SUPERTYPE_NOT_INITIALIZED by error() + val SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR by error() + val DELEGATION_SUPER_CALL_IN_ENUM_CONSTRUCTOR by warning() + val PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS by error(PositioningStrategy.DECLARATION_NAME) + val EXPLICIT_DELEGATION_CALL_REQUIRED by error(PositioningStrategy.SECONDARY_CONSTRUCTOR_DELEGATION_CALL) + val SEALED_CLASS_CONSTRUCTOR_CALL by error() // TODO: Consider creating a parameter list position strategy and report on the parameter list instead - val DATA_CLASS_WITHOUT_PARAMETERS by error() - val DATA_CLASS_VARARG_PARAMETER by error() - val DATA_CLASS_NOT_PROPERTY_PARAMETER by error() + val DATA_CLASS_WITHOUT_PARAMETERS by error() + val DATA_CLASS_VARARG_PARAMETER by error() + val DATA_CLASS_NOT_PROPERTY_PARAMETER by error() } val ANNOTATIONS by object : DiagnosticGroup("Annotations") { - val ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR by error() - val ANNOTATION_ARGUMENT_MUST_BE_CONST by error() - val ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST by error() - val ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL by error() - val ANNOTATION_CLASS_MEMBER by error() - val ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT by error() - val INVALID_TYPE_OF_ANNOTATION_MEMBER by error() - val LOCAL_ANNOTATION_CLASS_ERROR by error() - val MISSING_VAL_ON_ANNOTATION_PARAMETER by error() - val NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION by error() - val NOT_AN_ANNOTATION_CLASS by error { + val ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR by error() + val ANNOTATION_ARGUMENT_MUST_BE_CONST by error() + val ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST by error() + val ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL by error() + val ANNOTATION_CLASS_MEMBER by error() + val ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT by error() + val INVALID_TYPE_OF_ANNOTATION_MEMBER by error() + val LOCAL_ANNOTATION_CLASS_ERROR by error() + val MISSING_VAL_ON_ANNOTATION_PARAMETER by error() + val NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION by error() + val NOT_AN_ANNOTATION_CLASS by error { parameter("annotationName") } - val NULLABLE_TYPE_OF_ANNOTATION_MEMBER by error() - val VAR_ANNOTATION_PARAMETER by error(PositioningStrategy.VAL_OR_VAR_NODE) - val SUPERTYPES_FOR_ANNOTATION_CLASS by error(PositioningStrategy.SUPERTYPES_LIST) + val NULLABLE_TYPE_OF_ANNOTATION_MEMBER by error() + val VAR_ANNOTATION_PARAMETER by error(PositioningStrategy.VAL_OR_VAR_NODE) + val SUPERTYPES_FOR_ANNOTATION_CLASS by error(PositioningStrategy.SUPERTYPES_LIST) } val EXPOSED_VISIBILITY by object : DiagnosticGroup("Exposed visibility") { @@ -163,398 +163,398 @@ object DIAGNOSTICS_LIST : DiagnosticList() { } val MODIFIERS by object : DiagnosticGroup("Modifiers") { - val INAPPLICABLE_INFIX_MODIFIER by error() - val REPEATED_MODIFIER by error { + val INAPPLICABLE_INFIX_MODIFIER by error() + val REPEATED_MODIFIER by error { parameter("modifier") } - val REDUNDANT_MODIFIER by error { + val REDUNDANT_MODIFIER by error { parameter("redundantModifier") parameter("conflictingModifier") } - val DEPRECATED_MODIFIER_PAIR by error { + val DEPRECATED_MODIFIER_PAIR by error { parameter("deprecatedModifier") parameter("conflictingModifier") } - val INCOMPATIBLE_MODIFIERS by error { + val INCOMPATIBLE_MODIFIERS by error { parameter("modifier1") parameter("modifier2") } - val REDUNDANT_OPEN_IN_INTERFACE by warning(PositioningStrategy.OPEN_MODIFIER) - val WRONG_MODIFIER_TARGET by error { + val REDUNDANT_OPEN_IN_INTERFACE by warning(PositioningStrategy.OPEN_MODIFIER) + val WRONG_MODIFIER_TARGET by error { parameter("modifier") parameter("target") } } val INLINE_CLASSES by object : DiagnosticGroup("Inline classes") { - val INLINE_CLASS_NOT_TOP_LEVEL by error(PositioningStrategy.INLINE_OR_VALUE_MODIFIER) - val INLINE_CLASS_NOT_FINAL by error(PositioningStrategy.MODALITY_MODIFIER) - val ABSENCE_OF_PRIMARY_CONSTRUCTOR_FOR_INLINE_CLASS by error(PositioningStrategy.INLINE_OR_VALUE_MODIFIER) - val INLINE_CLASS_CONSTRUCTOR_WRONG_PARAMETERS_SIZE by error() - val INLINE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER by error() - val PROPERTY_WITH_BACKING_FIELD_INSIDE_INLINE_CLASS by error(PositioningStrategy.DECLARATION_SIGNATURE) - val DELEGATED_PROPERTY_INSIDE_INLINE_CLASS by error() - val INLINE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE by error { + val INLINE_CLASS_NOT_TOP_LEVEL by error(PositioningStrategy.INLINE_OR_VALUE_MODIFIER) + val INLINE_CLASS_NOT_FINAL by error(PositioningStrategy.MODALITY_MODIFIER) + val ABSENCE_OF_PRIMARY_CONSTRUCTOR_FOR_INLINE_CLASS by error(PositioningStrategy.INLINE_OR_VALUE_MODIFIER) + val INLINE_CLASS_CONSTRUCTOR_WRONG_PARAMETERS_SIZE by error() + val INLINE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER by error() + val PROPERTY_WITH_BACKING_FIELD_INSIDE_INLINE_CLASS by error(PositioningStrategy.DECLARATION_SIGNATURE) + val DELEGATED_PROPERTY_INSIDE_INLINE_CLASS by error() + val INLINE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE by error { parameter("type") } - val INLINE_CLASS_CANNOT_IMPLEMENT_INTERFACE_BY_DELEGATION by error() - val INLINE_CLASS_CANNOT_EXTEND_CLASSES by error() - val INLINE_CLASS_CANNOT_BE_RECURSIVE by error() - val RESERVED_MEMBER_INSIDE_INLINE_CLASS by error(PositioningStrategy.DECLARATION_NAME) { + val INLINE_CLASS_CANNOT_IMPLEMENT_INTERFACE_BY_DELEGATION by error() + val INLINE_CLASS_CANNOT_EXTEND_CLASSES by error() + val INLINE_CLASS_CANNOT_BE_RECURSIVE by error() + val RESERVED_MEMBER_INSIDE_INLINE_CLASS by error(PositioningStrategy.DECLARATION_NAME) { parameter("name") } - val SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS by error() - val INNER_CLASS_INSIDE_INLINE_CLASS by error(PositioningStrategy.INNER_MODIFIER) - val VALUE_CLASS_CANNOT_BE_CLONEABLE by error(PositioningStrategy.INLINE_OR_VALUE_MODIFIER) + val SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS by error() + val INNER_CLASS_INSIDE_INLINE_CLASS by error(PositioningStrategy.INNER_MODIFIER) + val VALUE_CLASS_CANNOT_BE_CLONEABLE by error(PositioningStrategy.INLINE_OR_VALUE_MODIFIER) } val APPLICABILITY by object : DiagnosticGroup("Applicability") { - val NONE_APPLICABLE by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val NONE_APPLICABLE by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter>>("candidates") } - val INAPPLICABLE_CANDIDATE by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val INAPPLICABLE_CANDIDATE by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter>("candidate") } - val ARGUMENT_TYPE_MISMATCH by error { + val ARGUMENT_TYPE_MISMATCH by error { parameter("expectedType") parameter("actualType") } - val INAPPLICABLE_LATEINIT_MODIFIER by error(PositioningStrategy.LATEINIT_MODIFIER) { + val INAPPLICABLE_LATEINIT_MODIFIER by error(PositioningStrategy.LATEINIT_MODIFIER) { parameter("reason") } - val VARARG_OUTSIDE_PARENTHESES by error() + val VARARG_OUTSIDE_PARENTHESES by error() - val NAMED_ARGUMENTS_NOT_ALLOWED by error(PositioningStrategy.NAME_OF_NAMED_ARGUMENT) { + val NAMED_ARGUMENTS_NOT_ALLOWED by error(PositioningStrategy.NAME_OF_NAMED_ARGUMENT) { parameter("forbiddenNamedArgumentsTarget") } - val NON_VARARG_SPREAD by error() - val ARGUMENT_PASSED_TWICE by error(PositioningStrategy.NAME_OF_NAMED_ARGUMENT) - val TOO_MANY_ARGUMENTS by error { + val NON_VARARG_SPREAD by error() + val ARGUMENT_PASSED_TWICE by error(PositioningStrategy.NAME_OF_NAMED_ARGUMENT) + val TOO_MANY_ARGUMENTS by error { parameter>("function") } - val NO_VALUE_FOR_PARAMETER by error(PositioningStrategy.VALUE_ARGUMENTS) { + val NO_VALUE_FOR_PARAMETER by error(PositioningStrategy.VALUE_ARGUMENTS) { parameter("violatedParameter") } - val NAMED_PARAMETER_NOT_FOUND by error(PositioningStrategy.NAME_OF_NAMED_ARGUMENT) { + val NAMED_PARAMETER_NOT_FOUND by error(PositioningStrategy.NAME_OF_NAMED_ARGUMENT) { parameter("name") } } val AMBIGUITY by object : DiagnosticGroup("Ambiguity") { - val OVERLOAD_RESOLUTION_AMBIGUITY by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val OVERLOAD_RESOLUTION_AMBIGUITY by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter>>("candidates") } - val ASSIGN_OPERATOR_AMBIGUITY by error { + val ASSIGN_OPERATOR_AMBIGUITY by error { parameter>>("candidates") } } val TYPES_AND_TYPE_PARAMETERS by object : DiagnosticGroup("Types & type parameters") { - val TYPE_MISMATCH by error { + val TYPE_MISMATCH by error { parameter("expectedType") parameter("actualType") } - val RECURSION_IN_IMPLICIT_TYPES by error() - val INFERENCE_ERROR by error() - val PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT by error() - val UPPER_BOUND_VIOLATED by error { + val RECURSION_IN_IMPLICIT_TYPES by error() + val INFERENCE_ERROR by error() + val PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT by error() + val UPPER_BOUND_VIOLATED by error { parameter("upperBound") } - val TYPE_ARGUMENTS_NOT_ALLOWED by error() - val WRONG_NUMBER_OF_TYPE_ARGUMENTS by error { + val TYPE_ARGUMENTS_NOT_ALLOWED by error() + val WRONG_NUMBER_OF_TYPE_ARGUMENTS by error { parameter("expectedCount") parameter>("classifier") } - val NO_TYPE_ARGUMENTS_ON_RHS by error { + val NO_TYPE_ARGUMENTS_ON_RHS by error { parameter("expectedCount") parameter>("classifier") } - val TYPE_PARAMETERS_IN_OBJECT by error() - val ILLEGAL_PROJECTION_USAGE by error() - val TYPE_PARAMETERS_IN_ENUM by error() - val CONFLICTING_PROJECTION by error { + val TYPE_PARAMETERS_IN_OBJECT by error() + val ILLEGAL_PROJECTION_USAGE by error() + val TYPE_PARAMETERS_IN_ENUM by error() + val CONFLICTING_PROJECTION by error { parameter("type") // TODO use ConeType instead of String } - val VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED by error(PositioningStrategy.VARIANCE_MODIFIER) + val VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED by error(PositioningStrategy.VARIANCE_MODIFIER) - val CATCH_PARAMETER_WITH_DEFAULT_VALUE by error() - val REIFIED_TYPE_IN_CATCH_CLAUSE by error() - val TYPE_PARAMETER_IN_CATCH_CLAUSE by error() - val GENERIC_THROWABLE_SUBCLASS by error() - val INNER_CLASS_OF_GENERIC_THROWABLE_SUBCLASS by error(PositioningStrategy.DECLARATION_NAME) + val CATCH_PARAMETER_WITH_DEFAULT_VALUE by error() + val REIFIED_TYPE_IN_CATCH_CLAUSE by error() + val TYPE_PARAMETER_IN_CATCH_CLAUSE by error() + val GENERIC_THROWABLE_SUBCLASS by error() + val INNER_CLASS_OF_GENERIC_THROWABLE_SUBCLASS by error(PositioningStrategy.DECLARATION_NAME) - val KCLASS_WITH_NULLABLE_TYPE_PARAMETER_IN_SIGNATURE by error(PositioningStrategy.DECLARATION_NAME) { + val KCLASS_WITH_NULLABLE_TYPE_PARAMETER_IN_SIGNATURE by error(PositioningStrategy.DECLARATION_NAME) { parameter("typeParameter") } - val TYPE_PARAMETER_AS_REIFIED by error { + val TYPE_PARAMETER_AS_REIFIED by error { parameter("typeParameter") } - val FINAL_UPPER_BOUND by warning { + val FINAL_UPPER_BOUND by warning { parameter("type") } - val UPPER_BOUND_IS_EXTENSION_FUNCTION_TYPE by error() + val UPPER_BOUND_IS_EXTENSION_FUNCTION_TYPE by error() - val BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER by error() + val BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER by error() - val ONLY_ONE_CLASS_BOUND_ALLOWED by error() + val ONLY_ONE_CLASS_BOUND_ALLOWED by error() - val REPEATED_BOUND by error() + val REPEATED_BOUND by error() - val CONFLICTING_UPPER_BOUNDS by error { + val CONFLICTING_UPPER_BOUNDS by error { parameter("typeParameter") } - val NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER by error { + val NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER by error { parameter("typeParameterName") parameter("typeParametersOwner") } - val BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED by error() + val BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED by error() - val REIFIED_TYPE_PARAMETER_NO_INLINE by error(PositioningStrategy.REIFIED_MODIFIER) + val REIFIED_TYPE_PARAMETER_NO_INLINE by error(PositioningStrategy.REIFIED_MODIFIER) - val TYPE_PARAMETERS_NOT_ALLOWED by error() + val TYPE_PARAMETERS_NOT_ALLOWED by error() - val TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER by error() + val TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER by error() - val RETURN_TYPE_MISMATCH by error(PositioningStrategy.WHOLE_ELEMENT) { + val RETURN_TYPE_MISMATCH by error(PositioningStrategy.WHOLE_ELEMENT) { parameter("expected") parameter("actual") } - val CYCLIC_GENERIC_UPPER_BOUND by error() + val CYCLIC_GENERIC_UPPER_BOUND by error() - val DEPRECATED_TYPE_PARAMETER_SYNTAX by error() + val DEPRECATED_TYPE_PARAMETER_SYNTAX by error() - val MISPLACED_TYPE_PARAMETER_CONSTRAINTS by warning() + val MISPLACED_TYPE_PARAMETER_CONSTRAINTS by warning() - val DYNAMIC_UPPER_BOUND by error() + val DYNAMIC_UPPER_BOUND by error() } val REFLECTION by object : DiagnosticGroup("Reflection") { - val EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter>("referencedDeclaration") } - val CALLABLE_REFERENCE_LHS_NOT_A_CLASS by error() - val CALLABLE_REFERENCE_TO_ANNOTATION_CONSTRUCTOR by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) + val CALLABLE_REFERENCE_LHS_NOT_A_CLASS by error() + val CALLABLE_REFERENCE_TO_ANNOTATION_CONSTRUCTOR by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) - val CLASS_LITERAL_LHS_NOT_A_CLASS by error() - val NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error() - val EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error { + val CLASS_LITERAL_LHS_NOT_A_CLASS by error() + val NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error() + val EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error { parameter("lhsType") } } val OVERRIDES by object : DiagnosticGroup("overrides") { - val NOTHING_TO_OVERRIDE by error(PositioningStrategy.OVERRIDE_MODIFIER) { + val NOTHING_TO_OVERRIDE by error(PositioningStrategy.OVERRIDE_MODIFIER) { parameter("declaration") } - val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error(PositioningStrategy.VISIBILITY_MODIFIER) { + val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error(PositioningStrategy.VISIBILITY_MODIFIER) { parameter("overridingVisibility") parameter>("overridden") parameter("containingClassName") } - val CANNOT_CHANGE_ACCESS_PRIVILEGE by error(PositioningStrategy.VISIBILITY_MODIFIER) { + val CANNOT_CHANGE_ACCESS_PRIVILEGE by error(PositioningStrategy.VISIBILITY_MODIFIER) { parameter("overridingVisibility") parameter>("overridden") parameter("containingClassName") } - val OVERRIDING_FINAL_MEMBER by error(PositioningStrategy.OVERRIDE_MODIFIER) { + val OVERRIDING_FINAL_MEMBER by error(PositioningStrategy.OVERRIDE_MODIFIER) { parameter>("overriddenDeclaration") parameter("containingClassName") } - val ABSTRACT_MEMBER_NOT_IMPLEMENTED by error(PositioningStrategy.DECLARATION_NAME) { + val ABSTRACT_MEMBER_NOT_IMPLEMENTED by error(PositioningStrategy.DECLARATION_NAME) { parameter>("classOrObject") parameter>("missingDeclaration") } - val ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED by error(PositioningStrategy.DECLARATION_NAME) { + val ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED by error(PositioningStrategy.DECLARATION_NAME) { parameter>("classOrObject") parameter>("missingDeclaration") } - val INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER by error(PositioningStrategy.DECLARATION_NAME) { + val INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER by error(PositioningStrategy.DECLARATION_NAME) { parameter>("classOrObject") parameter>("invisibleDeclaration") } - val INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_WARNING by warning(PositioningStrategy.DECLARATION_NAME) { + val INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_WARNING by warning(PositioningStrategy.DECLARATION_NAME) { parameter>("classOrObject") parameter>("invisibleDeclaration") } - val MANY_IMPL_MEMBER_NOT_IMPLEMENTED by error(PositioningStrategy.DECLARATION_NAME) { + val MANY_IMPL_MEMBER_NOT_IMPLEMENTED by error(PositioningStrategy.DECLARATION_NAME) { parameter>("classOrObject") parameter>("missingDeclaration") } - val MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED by error(PositioningStrategy.DECLARATION_NAME) { + val MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED by error(PositioningStrategy.DECLARATION_NAME) { parameter>("classOrObject") parameter>("missingDeclaration") } - val OVERRIDING_FINAL_MEMBER_BY_DELEGATION by error(PositioningStrategy.DECLARATION_NAME) { + val OVERRIDING_FINAL_MEMBER_BY_DELEGATION by error(PositioningStrategy.DECLARATION_NAME) { parameter>("delegatedDeclaration") parameter>("overriddenDeclaration") } - val DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE by warning(PositioningStrategy.DECLARATION_NAME) { + val DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE by warning(PositioningStrategy.DECLARATION_NAME) { parameter>("delegatedDeclaration") parameter>("overriddenDeclaration") } - val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { + val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { parameter("function") parameter("superFunction") } - val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { + val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { parameter("property") parameter("superProperty") } - val VAR_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { + val VAR_TYPE_MISMATCH_ON_OVERRIDE by error(PositioningStrategy.DECLARATION_RETURN_TYPE) { parameter("variable") parameter("superVariable") } - val VAR_OVERRIDDEN_BY_VAL by error(PositioningStrategy.VAL_OR_VAR_NODE) { + val VAR_OVERRIDDEN_BY_VAL by error(PositioningStrategy.VAL_OR_VAR_NODE) { parameter("overridingDeclaration") parameter("overriddenDeclaration") } - val NON_FINAL_MEMBER_IN_FINAL_CLASS by warning(PositioningStrategy.OPEN_MODIFIER) - val NON_FINAL_MEMBER_IN_OBJECT by warning(PositioningStrategy.OPEN_MODIFIER) + val NON_FINAL_MEMBER_IN_FINAL_CLASS by warning(PositioningStrategy.OPEN_MODIFIER) + val NON_FINAL_MEMBER_IN_OBJECT by warning(PositioningStrategy.OPEN_MODIFIER) } val REDECLARATIONS by object : DiagnosticGroup("Redeclarations") { - val MANY_COMPANION_OBJECTS by error(PositioningStrategy.COMPANION_OBJECT) - val CONFLICTING_OVERLOADS by error(PositioningStrategy.DECLARATION_SIGNATURE_OR_DEFAULT) { + val MANY_COMPANION_OBJECTS by error(PositioningStrategy.COMPANION_OBJECT) + val CONFLICTING_OVERLOADS by error(PositioningStrategy.DECLARATION_SIGNATURE_OR_DEFAULT) { parameter>>("conflictingOverloads") } - val REDECLARATION by error { + val REDECLARATION by error { parameter>>("conflictingDeclarations") } - val METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE by error() + val METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE by error() } val INVALID_LOCAL_DECLARATIONS by object : DiagnosticGroup("Invalid local declarations") { - val LOCAL_OBJECT_NOT_ALLOWED by error(PositioningStrategy.DECLARATION_NAME) { + val LOCAL_OBJECT_NOT_ALLOWED by error(PositioningStrategy.DECLARATION_NAME) { parameter("objectName") } - val LOCAL_INTERFACE_NOT_ALLOWED by error(PositioningStrategy.DECLARATION_NAME) { + val LOCAL_INTERFACE_NOT_ALLOWED by error(PositioningStrategy.DECLARATION_NAME) { parameter("interfaceName") } } val FUNCTIONS by object : DiagnosticGroup("Functions") { - val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error(PositioningStrategy.MODALITY_MODIFIER) { + val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error(PositioningStrategy.MODALITY_MODIFIER) { parameter("function") parameter("containingClass") // TODO use FirClass instead of FirMemberDeclaration } - val ABSTRACT_FUNCTION_WITH_BODY by error(PositioningStrategy.MODALITY_MODIFIER) { + val ABSTRACT_FUNCTION_WITH_BODY by error(PositioningStrategy.MODALITY_MODIFIER) { parameter("function") } - val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error(PositioningStrategy.DECLARATION_SIGNATURE) { + val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error(PositioningStrategy.DECLARATION_SIGNATURE) { parameter("function") } - val PRIVATE_FUNCTION_WITH_NO_BODY by error(PositioningStrategy.VISIBILITY_MODIFIER) { + val PRIVATE_FUNCTION_WITH_NO_BODY by error(PositioningStrategy.VISIBILITY_MODIFIER) { parameter("function") } - val NON_MEMBER_FUNCTION_NO_BODY by error(PositioningStrategy.DECLARATION_SIGNATURE) { + val NON_MEMBER_FUNCTION_NO_BODY by error(PositioningStrategy.DECLARATION_SIGNATURE) { parameter("function") } - val FUNCTION_DECLARATION_WITH_NO_NAME by error(PositioningStrategy.DECLARATION_SIGNATURE) + val FUNCTION_DECLARATION_WITH_NO_NAME by error(PositioningStrategy.DECLARATION_SIGNATURE) - // TODO: val ANONYMOUS_FUNCTION_WITH_NAME by error1(SourceElementPositioningStrategies.DECLARATION_NAME) - val ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE by error(PositioningStrategy.PARAMETER_DEFAULT_VALUE) - val USELESS_VARARG_ON_PARAMETER by warning() - val MULTIPLE_VARARG_PARAMETERS by error(PositioningStrategy.PARAMETER_VARARG_MODIFIER) - val FORBIDDEN_VARARG_PARAMETER_TYPE by error(PositioningStrategy.PARAMETER_VARARG_MODIFIER) { + // TODO: val ANONYMOUS_FUNCTION_WITH_NAME by error1(SourceElementPositioningStrategies.DECLARATION_NAME) + val ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE by error(PositioningStrategy.PARAMETER_DEFAULT_VALUE) + val USELESS_VARARG_ON_PARAMETER by warning() + val MULTIPLE_VARARG_PARAMETERS by error(PositioningStrategy.PARAMETER_VARARG_MODIFIER) + val FORBIDDEN_VARARG_PARAMETER_TYPE by error(PositioningStrategy.PARAMETER_VARARG_MODIFIER) { parameter("varargParameterType") } - val VALUE_PARAMETER_WITH_NO_TYPE_ANNOTATION by error() - val CANNOT_INFER_PARAMETER_TYPE by error() + val VALUE_PARAMETER_WITH_NO_TYPE_ANNOTATION by error() + val CANNOT_INFER_PARAMETER_TYPE by error() } val FUN_INTERFACES by object : DiagnosticGroup("Fun interfaces") { - val FUN_INTERFACE_CONSTRUCTOR_REFERENCE by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) + val FUN_INTERFACE_CONSTRUCTOR_REFERENCE by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) } val PROPERTIES_AND_ACCESSORS by object : DiagnosticGroup("Properties & accessors") { - val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error(PositioningStrategy.MODALITY_MODIFIER) { + val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error(PositioningStrategy.MODALITY_MODIFIER) { parameter("property") parameter("containingClass") // TODO use FirClass instead of FirMemberDeclaration } - val PRIVATE_PROPERTY_IN_INTERFACE by error(PositioningStrategy.VISIBILITY_MODIFIER) + val PRIVATE_PROPERTY_IN_INTERFACE by error(PositioningStrategy.VISIBILITY_MODIFIER) - val ABSTRACT_PROPERTY_WITH_INITIALIZER by error() - val PROPERTY_INITIALIZER_IN_INTERFACE by error() - val PROPERTY_WITH_NO_TYPE_NO_INITIALIZER by error(PositioningStrategy.DECLARATION_SIGNATURE) + val ABSTRACT_PROPERTY_WITH_INITIALIZER by error() + val PROPERTY_INITIALIZER_IN_INTERFACE by error() + val PROPERTY_WITH_NO_TYPE_NO_INITIALIZER by error(PositioningStrategy.DECLARATION_SIGNATURE) - val MUST_BE_INITIALIZED by error(PositioningStrategy.DECLARATION_SIGNATURE) - val MUST_BE_INITIALIZED_OR_BE_ABSTRACT by error(PositioningStrategy.DECLARATION_SIGNATURE) - val EXTENSION_PROPERTY_MUST_HAVE_ACCESSORS_OR_BE_ABSTRACT by error(PositioningStrategy.DECLARATION_SIGNATURE) - val UNNECESSARY_LATEINIT by warning(PositioningStrategy.LATEINIT_MODIFIER) + val MUST_BE_INITIALIZED by error(PositioningStrategy.DECLARATION_SIGNATURE) + val MUST_BE_INITIALIZED_OR_BE_ABSTRACT by error(PositioningStrategy.DECLARATION_SIGNATURE) + val EXTENSION_PROPERTY_MUST_HAVE_ACCESSORS_OR_BE_ABSTRACT by error(PositioningStrategy.DECLARATION_SIGNATURE) + val UNNECESSARY_LATEINIT by warning(PositioningStrategy.LATEINIT_MODIFIER) - val BACKING_FIELD_IN_INTERFACE by error(PositioningStrategy.DECLARATION_SIGNATURE) - val EXTENSION_PROPERTY_WITH_BACKING_FIELD by error() - val PROPERTY_INITIALIZER_NO_BACKING_FIELD by error() + val BACKING_FIELD_IN_INTERFACE by error(PositioningStrategy.DECLARATION_SIGNATURE) + val EXTENSION_PROPERTY_WITH_BACKING_FIELD by error() + val PROPERTY_INITIALIZER_NO_BACKING_FIELD by error() - val ABSTRACT_DELEGATED_PROPERTY by error() - val DELEGATED_PROPERTY_IN_INTERFACE by error() - // TODO: val ACCESSOR_FOR_DELEGATED_PROPERTY by error1() + val ABSTRACT_DELEGATED_PROPERTY by error() + val DELEGATED_PROPERTY_IN_INTERFACE by error() + // TODO: val ACCESSOR_FOR_DELEGATED_PROPERTY by error1() - val ABSTRACT_PROPERTY_WITH_GETTER by error() - val ABSTRACT_PROPERTY_WITH_SETTER by error() - val PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY by error(PositioningStrategy.PRIVATE_MODIFIER) - val PRIVATE_SETTER_FOR_OPEN_PROPERTY by error(PositioningStrategy.PRIVATE_MODIFIER) - val EXPECTED_PRIVATE_DECLARATION by error(PositioningStrategy.VISIBILITY_MODIFIER) - val VAL_WITH_SETTER by error() - val CONST_VAL_NOT_TOP_LEVEL_OR_OBJECT by error(PositioningStrategy.CONST_MODIFIER) - val CONST_VAL_WITH_GETTER by error() - val CONST_VAL_WITH_DELEGATE by error() - val TYPE_CANT_BE_USED_FOR_CONST_VAL by error(PositioningStrategy.CONST_MODIFIER) { + val ABSTRACT_PROPERTY_WITH_GETTER by error() + val ABSTRACT_PROPERTY_WITH_SETTER by error() + val PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY by error(PositioningStrategy.PRIVATE_MODIFIER) + val PRIVATE_SETTER_FOR_OPEN_PROPERTY by error(PositioningStrategy.PRIVATE_MODIFIER) + val EXPECTED_PRIVATE_DECLARATION by error(PositioningStrategy.VISIBILITY_MODIFIER) + val VAL_WITH_SETTER by error() + val CONST_VAL_NOT_TOP_LEVEL_OR_OBJECT by error(PositioningStrategy.CONST_MODIFIER) + val CONST_VAL_WITH_GETTER by error() + val CONST_VAL_WITH_DELEGATE by error() + val TYPE_CANT_BE_USED_FOR_CONST_VAL by error(PositioningStrategy.CONST_MODIFIER) { parameter("constValType") } - val CONST_VAL_WITHOUT_INITIALIZER by error(PositioningStrategy.CONST_MODIFIER) - val CONST_VAL_WITH_NON_CONST_INITIALIZER by error() - val WRONG_SETTER_PARAMETER_TYPE by error { + val CONST_VAL_WITHOUT_INITIALIZER by error(PositioningStrategy.CONST_MODIFIER) + val CONST_VAL_WITH_NON_CONST_INITIALIZER by error() + val WRONG_SETTER_PARAMETER_TYPE by error { parameter("expectedType") parameter("actualType") } - val INITIALIZER_TYPE_MISMATCH by error(PositioningStrategy.ASSIGNMENT_VALUE) { + val INITIALIZER_TYPE_MISMATCH by error(PositioningStrategy.ASSIGNMENT_VALUE) { parameter("expected") parameter("actual") } } val MPP_PROJECTS by object : DiagnosticGroup("Multi-platform projects") { - val EXPECTED_DECLARATION_WITH_BODY by error(PositioningStrategy.DECLARATION_SIGNATURE) - val EXPECTED_PROPERTY_INITIALIZER by error() + val EXPECTED_DECLARATION_WITH_BODY by error(PositioningStrategy.DECLARATION_SIGNATURE) + val EXPECTED_PROPERTY_INITIALIZER by error() // TODO: need to cover `by` as well as delegate expression - val EXPECTED_DELEGATED_PROPERTY by error() - val EXPECTED_LATEINIT_PROPERTY by error(PositioningStrategy.LATEINIT_MODIFIER) + val EXPECTED_DELEGATED_PROPERTY by error() + val EXPECTED_LATEINIT_PROPERTY by error(PositioningStrategy.LATEINIT_MODIFIER) } val DESTRUCTING_DECLARATION by object : DiagnosticGroup("Destructuring declaration") { - val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error() - val COMPONENT_FUNCTION_MISSING by error { + val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error() + val COMPONENT_FUNCTION_MISSING by error { parameter("missingFunctionName") parameter("destructingType") } - val COMPONENT_FUNCTION_AMBIGUITY by error { + val COMPONENT_FUNCTION_AMBIGUITY by error { parameter("functionWithAmbiguityName") parameter>>("candidates") } - val COMPONENT_FUNCTION_ON_NULLABLE by error { + val COMPONENT_FUNCTION_ON_NULLABLE by error { parameter("componentFunctionName") } - val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by error { + val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by error { parameter("componentFunctionName") parameter("destructingType") parameter("expectedType") @@ -562,116 +562,116 @@ object DIAGNOSTICS_LIST : DiagnosticList() { } val CONTROL_FLOW by object : DiagnosticGroup("Control flow diagnostics") { - val UNINITIALIZED_VARIABLE by error { + val UNINITIALIZED_VARIABLE by error { parameter("variable") } - val UNINITIALIZED_ENUM_ENTRY by error { + val UNINITIALIZED_ENUM_ENTRY by error { parameter>("enumEntry") } - val UNINITIALIZED_ENUM_COMPANION by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val UNINITIALIZED_ENUM_COMPANION by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter("enumClass") } - val VAL_REASSIGNMENT by error { + val VAL_REASSIGNMENT by error { parameter>("variable") } - val VAL_REASSIGNMENT_VIA_BACKING_FIELD by warning { + val VAL_REASSIGNMENT_VIA_BACKING_FIELD by warning { parameter("property") } - val VAL_REASSIGNMENT_VIA_BACKING_FIELD_ERROR by error { + val VAL_REASSIGNMENT_VIA_BACKING_FIELD_ERROR by error { parameter("property") } - val WRONG_INVOCATION_KIND by warning { + val WRONG_INVOCATION_KIND by warning { parameter>("declaration") parameter("requiredRange") parameter("actualRange") } - val LEAKED_IN_PLACE_LAMBDA by error { + val LEAKED_IN_PLACE_LAMBDA by error { parameter>("lambda") } - val WRONG_IMPLIES_CONDITION by warning() + val WRONG_IMPLIES_CONDITION by warning() } val NULLABILITY by object : DiagnosticGroup("Nullability") { - val UNSAFE_CALL by error(PositioningStrategy.DOT_BY_QUALIFIED) { + val UNSAFE_CALL by error(PositioningStrategy.DOT_BY_QUALIFIED) { parameter("receiverType") } - val UNSAFE_IMPLICIT_INVOKE_CALL by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val UNSAFE_IMPLICIT_INVOKE_CALL by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter("receiverType") } - val UNSAFE_INFIX_CALL by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val UNSAFE_INFIX_CALL by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter("lhs") parameter("operator") parameter("rhs") } - val UNSAFE_OPERATOR_CALL by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { + val UNSAFE_OPERATOR_CALL by error(PositioningStrategy.REFERENCE_BY_QUALIFIED) { parameter("lhs") parameter("operator") parameter("rhs") } - val UNNECESSARY_SAFE_CALL by warning(PositioningStrategy.SAFE_ACCESS) { + val UNNECESSARY_SAFE_CALL by warning(PositioningStrategy.SAFE_ACCESS) { parameter("receiverType") } - val UNEXPECTED_SAFE_CALL by error(PositioningStrategy.SAFE_ACCESS) - val UNNECESSARY_NOT_NULL_ASSERTION by warning(PositioningStrategy.OPERATOR) { + val UNEXPECTED_SAFE_CALL by error(PositioningStrategy.SAFE_ACCESS) + val UNNECESSARY_NOT_NULL_ASSERTION by warning(PositioningStrategy.OPERATOR) { parameter("receiverType") } - val NOT_NULL_ASSERTION_ON_LAMBDA_EXPRESSION by warning(PositioningStrategy.OPERATOR) - val NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE by warning(PositioningStrategy.OPERATOR) + val NOT_NULL_ASSERTION_ON_LAMBDA_EXPRESSION by warning(PositioningStrategy.OPERATOR) + val NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE by warning(PositioningStrategy.OPERATOR) } val WHEN_EXPRESSIONS by object : DiagnosticGroup("When expressions") { - val NO_ELSE_IN_WHEN by error(PositioningStrategy.WHEN_EXPRESSION) { + val NO_ELSE_IN_WHEN by error(PositioningStrategy.WHEN_EXPRESSION) { parameter>("missingWhenCases") } - val INVALID_IF_AS_EXPRESSION by error(PositioningStrategy.IF_EXPRESSION) + val INVALID_IF_AS_EXPRESSION by error(PositioningStrategy.IF_EXPRESSION) } val CONTEXT_TRACKING by object : DiagnosticGroup("Context tracking") { - val TYPE_PARAMETER_IS_NOT_AN_EXPRESSION by error { + val TYPE_PARAMETER_IS_NOT_AN_EXPRESSION by error { parameter("typeParameter") } - val TYPE_PARAMETER_ON_LHS_OF_DOT by error { + val TYPE_PARAMETER_ON_LHS_OF_DOT by error { parameter("typeParameter") } } val FUNCTION_CONTRACTS by object : DiagnosticGroup("Function contracts") { - val ERROR_IN_CONTRACT_DESCRIPTION by error(PositioningStrategy.SELECTOR_BY_QUALIFIED) { + val ERROR_IN_CONTRACT_DESCRIPTION by error(PositioningStrategy.SELECTOR_BY_QUALIFIED) { parameter("reason") } } val CONVENTIONS by object : DiagnosticGroup("Conventions") { - val NO_GET_METHOD by error(PositioningStrategy.ARRAY_ACCESS) - val NO_SET_METHOD by error(PositioningStrategy.ARRAY_ACCESS) + val NO_GET_METHOD by error(PositioningStrategy.ARRAY_ACCESS) + val NO_SET_METHOD by error(PositioningStrategy.ARRAY_ACCESS) } val TYPE_ALIAS by object : DiagnosticGroup("Type alias") { - val TOPLEVEL_TYPEALIASES_ONLY by error() + val TOPLEVEL_TYPEALIASES_ONLY by error() } val EXTENDED_CHECKERS by object : DiagnosticGroup("Extended checkers") { - val REDUNDANT_VISIBILITY_MODIFIER by warning(PositioningStrategy.VISIBILITY_MODIFIER) - val REDUNDANT_MODALITY_MODIFIER by warning(PositioningStrategy.MODALITY_MODIFIER) - val REDUNDANT_RETURN_UNIT_TYPE by warning() - val REDUNDANT_EXPLICIT_TYPE by warning() - val REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE by warning() - val CAN_BE_VAL by warning(PositioningStrategy.VAL_OR_VAR_NODE) - val CAN_BE_REPLACED_WITH_OPERATOR_ASSIGNMENT by warning(PositioningStrategy.OPERATOR) - val REDUNDANT_CALL_OF_CONVERSION_METHOD by warning(PositioningStrategy.SELECTOR_BY_QUALIFIED) - val ARRAY_EQUALITY_OPERATOR_CAN_BE_REPLACED_WITH_EQUALS by warning(PositioningStrategy.OPERATOR) - val EMPTY_RANGE by warning() - val REDUNDANT_SETTER_PARAMETER_TYPE by warning() - val UNUSED_VARIABLE by warning(PositioningStrategy.DECLARATION_NAME) - val ASSIGNED_VALUE_IS_NEVER_READ by warning() - val VARIABLE_INITIALIZER_IS_REDUNDANT by warning() - val VARIABLE_NEVER_READ by warning(PositioningStrategy.DECLARATION_NAME) - val USELESS_CALL_ON_NOT_NULL by warning(PositioningStrategy.SELECTOR_BY_QUALIFIED) + val REDUNDANT_VISIBILITY_MODIFIER by warning(PositioningStrategy.VISIBILITY_MODIFIER) + val REDUNDANT_MODALITY_MODIFIER by warning(PositioningStrategy.MODALITY_MODIFIER) + val REDUNDANT_RETURN_UNIT_TYPE by warning() + val REDUNDANT_EXPLICIT_TYPE by warning() + val REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE by warning() + val CAN_BE_VAL by warning(PositioningStrategy.VAL_OR_VAR_NODE) + val CAN_BE_REPLACED_WITH_OPERATOR_ASSIGNMENT by warning(PositioningStrategy.OPERATOR) + val REDUNDANT_CALL_OF_CONVERSION_METHOD by warning(PositioningStrategy.SELECTOR_BY_QUALIFIED) + val ARRAY_EQUALITY_OPERATOR_CAN_BE_REPLACED_WITH_EQUALS by warning(PositioningStrategy.OPERATOR) + val EMPTY_RANGE by warning() + val REDUNDANT_SETTER_PARAMETER_TYPE by warning() + val UNUSED_VARIABLE by warning(PositioningStrategy.DECLARATION_NAME) + val ASSIGNED_VALUE_IS_NEVER_READ by warning() + val VARIABLE_INITIALIZER_IS_REDUNDANT by warning() + val VARIABLE_NEVER_READ by warning(PositioningStrategy.DECLARATION_NAME) + val USELESS_CALL_ON_NOT_NULL by warning(PositioningStrategy.SELECTOR_BY_QUALIFIED) } val RETURNS by object : DiagnosticGroup("Returns") { - val RETURN_NOT_ALLOWED by error(PositioningStrategy.RETURN_WITH_LABEL) - val RETURN_IN_FUNCTION_WITH_EXPRESSION_BODY by error(PositioningStrategy.RETURN_WITH_LABEL) + val RETURN_NOT_ALLOWED by error(PositioningStrategy.RETURN_WITH_LABEL) + val RETURN_IN_FUNCTION_WITH_EXPRESSION_BODY by error(PositioningStrategy.RETURN_WITH_LABEL) } } @@ -684,11 +684,11 @@ private val exposedVisibilityDiagnosticInit: DiagnosticBuilder.() -> Unit = { private inline fun DiagnosticGroup.exposedVisibilityError( positioningStrategy: PositioningStrategy = PositioningStrategy.DEFAULT ): PropertyDelegateProvider> { - return error(positioningStrategy, exposedVisibilityDiagnosticInit) + return error

(positioningStrategy, exposedVisibilityDiagnosticInit) } private inline fun DiagnosticGroup.exposedVisibilityWarning( positioningStrategy: PositioningStrategy = PositioningStrategy.DEFAULT ): PropertyDelegateProvider> { - return warning(positioningStrategy, exposedVisibilityDiagnosticInit) + return warning

(positioningStrategy, exposedVisibilityDiagnosticInit) } diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 1682362fa1a..6a900842e11 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange import org.jetbrains.kotlin.descriptors.EffectiveVisibility import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.diagnostics.WhenMissingCase -import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.analysis.diagnostics.SourceElementPositioningStrategies import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.declarations.FirClass @@ -66,343 +65,343 @@ import org.jetbrains.kotlin.resolve.ForbiddenNamedArgumentsTarget object FirErrors { // Meta-errors - val UNSUPPORTED by error1() - val UNSUPPORTED_FEATURE by error1>() + val UNSUPPORTED by error1() + val UNSUPPORTED_FEATURE by error1>() // Miscellaneous - val SYNTAX by error0() - val OTHER_ERROR by error0() + val SYNTAX by error0() + val OTHER_ERROR by error0() // General syntax - val ILLEGAL_CONST_EXPRESSION by error0() - val ILLEGAL_UNDERSCORE by error0() - val EXPRESSION_REQUIRED by error0(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) - val BREAK_OR_CONTINUE_OUTSIDE_A_LOOP by error0() - val NOT_A_LOOP_LABEL by error0() - val VARIABLE_EXPECTED by error0() - val DELEGATION_IN_INTERFACE by error0() - val NESTED_CLASS_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) - val INCORRECT_CHARACTER_LITERAL by error0() - val EMPTY_CHARACTER_LITERAL by error0() - val TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL by error0() - val ILLEGAL_ESCAPE by error0() - val INT_LITERAL_OUT_OF_RANGE by error0() - val FLOAT_LITERAL_OUT_OF_RANGE by error0() - val WRONG_LONG_SUFFIX by error0(SourceElementPositioningStrategies.LONG_LITERAL_SUFFIX) - val DIVISION_BY_ZERO by warning0() + val ILLEGAL_CONST_EXPRESSION by error0() + val ILLEGAL_UNDERSCORE by error0() + val EXPRESSION_REQUIRED by error0(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) + val BREAK_OR_CONTINUE_OUTSIDE_A_LOOP by error0() + val NOT_A_LOOP_LABEL by error0() + val VARIABLE_EXPECTED by error0() + val DELEGATION_IN_INTERFACE by error0() + val NESTED_CLASS_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) + val INCORRECT_CHARACTER_LITERAL by error0() + val EMPTY_CHARACTER_LITERAL by error0() + val TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL by error0() + val ILLEGAL_ESCAPE by error0() + val INT_LITERAL_OUT_OF_RANGE by error0() + val FLOAT_LITERAL_OUT_OF_RANGE by error0() + val WRONG_LONG_SUFFIX by error0(SourceElementPositioningStrategies.LONG_LITERAL_SUFFIX) + val DIVISION_BY_ZERO by warning0() // Unresolved - val HIDDEN by error1>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val UNRESOLVED_REFERENCE by error1(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) - val UNRESOLVED_LABEL by error0() - val DESERIALIZATION_ERROR by error0() - val ERROR_FROM_JAVA_RESOLUTION by error0() - val UNKNOWN_CALLABLE_KIND by error0() - val MISSING_STDLIB_CLASS by error0() - val NO_THIS by error0() + val HIDDEN by error1>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val UNRESOLVED_REFERENCE by error1(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) + val UNRESOLVED_LABEL by error0() + val DESERIALIZATION_ERROR by error0() + val ERROR_FROM_JAVA_RESOLUTION by error0() + val UNKNOWN_CALLABLE_KIND by error0() + val MISSING_STDLIB_CLASS by error0() + val NO_THIS by error0() // Super - val SUPER_IS_NOT_AN_EXPRESSION by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) - val SUPER_NOT_AVAILABLE by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) - val ABSTRACT_SUPER_CALL by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) - val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error1() + val SUPER_IS_NOT_AN_EXPRESSION by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) + val SUPER_NOT_AVAILABLE by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) + val ABSTRACT_SUPER_CALL by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) + val INSTANCE_ACCESS_BEFORE_SUPER_CALL by error1() // Supertypes - val ENUM_AS_SUPERTYPE by error0() - val RECURSION_IN_SUPERTYPES by error0() - val NOT_A_SUPERTYPE by error0() - val SUPERCLASS_NOT_ACCESSIBLE_FROM_INTERFACE by error0() - val QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE by error1>() - val SUPERTYPE_INITIALIZED_IN_INTERFACE by error0() - val INTERFACE_WITH_SUPERCLASS by error0() - val CLASS_IN_SUPERTYPE_FOR_ENUM by error0() - val SEALED_SUPERTYPE by error0() - val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error0() - val SUPERTYPE_NOT_A_CLASS_OR_INTERFACE by error1() + val ENUM_AS_SUPERTYPE by error0() + val RECURSION_IN_SUPERTYPES by error0() + val NOT_A_SUPERTYPE by error0() + val SUPERCLASS_NOT_ACCESSIBLE_FROM_INTERFACE by error0() + val QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE by error1>() + val SUPERTYPE_INITIALIZED_IN_INTERFACE by error0() + val INTERFACE_WITH_SUPERCLASS by error0() + val CLASS_IN_SUPERTYPE_FOR_ENUM by error0() + val SEALED_SUPERTYPE by error0() + val SEALED_SUPERTYPE_IN_LOCAL_CLASS by error0() + val SUPERTYPE_NOT_A_CLASS_OR_INTERFACE by error1() // Constructor problems - val CONSTRUCTOR_IN_OBJECT by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val CONSTRUCTOR_IN_INTERFACE by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val NON_PRIVATE_CONSTRUCTOR_IN_ENUM by error0() - val NON_PRIVATE_OR_PROTECTED_CONSTRUCTOR_IN_SEALED by error0() - val CYCLIC_CONSTRUCTOR_DELEGATION_CALL by warning0() - val PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED by warning0(SourceElementPositioningStrategies.SECONDARY_CONSTRUCTOR_DELEGATION_CALL) - val SUPERTYPE_NOT_INITIALIZED by error0() - val SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR by error0() - val DELEGATION_SUPER_CALL_IN_ENUM_CONSTRUCTOR by warning0() - val PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS by error0(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPLICIT_DELEGATION_CALL_REQUIRED by error0(SourceElementPositioningStrategies.SECONDARY_CONSTRUCTOR_DELEGATION_CALL) - val SEALED_CLASS_CONSTRUCTOR_CALL by error0() - val DATA_CLASS_WITHOUT_PARAMETERS by error0() - val DATA_CLASS_VARARG_PARAMETER by error0() - val DATA_CLASS_NOT_PROPERTY_PARAMETER by error0() + val CONSTRUCTOR_IN_OBJECT by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val CONSTRUCTOR_IN_INTERFACE by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val NON_PRIVATE_CONSTRUCTOR_IN_ENUM by error0() + val NON_PRIVATE_OR_PROTECTED_CONSTRUCTOR_IN_SEALED by error0() + val CYCLIC_CONSTRUCTOR_DELEGATION_CALL by warning0() + val PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED by warning0(SourceElementPositioningStrategies.SECONDARY_CONSTRUCTOR_DELEGATION_CALL) + val SUPERTYPE_NOT_INITIALIZED by error0() + val SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR by error0() + val DELEGATION_SUPER_CALL_IN_ENUM_CONSTRUCTOR by warning0() + val PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS by error0(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPLICIT_DELEGATION_CALL_REQUIRED by error0(SourceElementPositioningStrategies.SECONDARY_CONSTRUCTOR_DELEGATION_CALL) + val SEALED_CLASS_CONSTRUCTOR_CALL by error0() + val DATA_CLASS_WITHOUT_PARAMETERS by error0() + val DATA_CLASS_VARARG_PARAMETER by error0() + val DATA_CLASS_NOT_PROPERTY_PARAMETER by error0() // Annotations - val ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR by error0() - val ANNOTATION_ARGUMENT_MUST_BE_CONST by error0() - val ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST by error0() - val ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL by error0() - val ANNOTATION_CLASS_MEMBER by error0() - val ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT by error0() - val INVALID_TYPE_OF_ANNOTATION_MEMBER by error0() - val LOCAL_ANNOTATION_CLASS_ERROR by error0() - val MISSING_VAL_ON_ANNOTATION_PARAMETER by error0() - val NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION by error0() - val NOT_AN_ANNOTATION_CLASS by error1() - val NULLABLE_TYPE_OF_ANNOTATION_MEMBER by error0() - val VAR_ANNOTATION_PARAMETER by error0(SourceElementPositioningStrategies.VAL_OR_VAR_NODE) - val SUPERTYPES_FOR_ANNOTATION_CLASS by error0(SourceElementPositioningStrategies.SUPERTYPES_LIST) + val ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR by error0() + val ANNOTATION_ARGUMENT_MUST_BE_CONST by error0() + val ANNOTATION_ARGUMENT_MUST_BE_ENUM_CONST by error0() + val ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL by error0() + val ANNOTATION_CLASS_MEMBER by error0() + val ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT by error0() + val INVALID_TYPE_OF_ANNOTATION_MEMBER by error0() + val LOCAL_ANNOTATION_CLASS_ERROR by error0() + val MISSING_VAL_ON_ANNOTATION_PARAMETER by error0() + val NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION by error0() + val NOT_AN_ANNOTATION_CLASS by error1() + val NULLABLE_TYPE_OF_ANNOTATION_MEMBER by error0() + val VAR_ANNOTATION_PARAMETER by error0(SourceElementPositioningStrategies.VAL_OR_VAR_NODE) + val SUPERTYPES_FOR_ANNOTATION_CLASS by error0(SourceElementPositioningStrategies.SUPERTYPES_LIST) // Exposed visibility - val EXPOSED_TYPEALIAS_EXPANDED_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPOSED_FUNCTION_RETURN_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPOSED_RECEIVER_TYPE by error3() - val EXPOSED_PROPERTY_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR by warning3(SourceElementPositioningStrategies.DECLARATION_NAME) - val EXPOSED_PARAMETER_TYPE by error3() - val EXPOSED_SUPER_INTERFACE by error3() - val EXPOSED_SUPER_CLASS by error3() - val EXPOSED_TYPE_PARAMETER_BOUND by error3() + val EXPOSED_TYPEALIAS_EXPANDED_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPOSED_FUNCTION_RETURN_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPOSED_RECEIVER_TYPE by error3() + val EXPOSED_PROPERTY_TYPE by error3(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR by warning3(SourceElementPositioningStrategies.DECLARATION_NAME) + val EXPOSED_PARAMETER_TYPE by error3() + val EXPOSED_SUPER_INTERFACE by error3() + val EXPOSED_SUPER_CLASS by error3() + val EXPOSED_TYPE_PARAMETER_BOUND by error3() // Modifiers - val INAPPLICABLE_INFIX_MODIFIER by error0() - val REPEATED_MODIFIER by error1() - val REDUNDANT_MODIFIER by error2() - val DEPRECATED_MODIFIER_PAIR by error2() - val INCOMPATIBLE_MODIFIERS by error2() - val REDUNDANT_OPEN_IN_INTERFACE by warning0(SourceElementPositioningStrategies.OPEN_MODIFIER) - val WRONG_MODIFIER_TARGET by error2() + val INAPPLICABLE_INFIX_MODIFIER by error0() + val REPEATED_MODIFIER by error1() + val REDUNDANT_MODIFIER by error2() + val DEPRECATED_MODIFIER_PAIR by error2() + val INCOMPATIBLE_MODIFIERS by error2() + val REDUNDANT_OPEN_IN_INTERFACE by warning0(SourceElementPositioningStrategies.OPEN_MODIFIER) + val WRONG_MODIFIER_TARGET by error2() // Inline classes - val INLINE_CLASS_NOT_TOP_LEVEL by error0(SourceElementPositioningStrategies.INLINE_OR_VALUE_MODIFIER) - val INLINE_CLASS_NOT_FINAL by error0(SourceElementPositioningStrategies.MODALITY_MODIFIER) - val ABSENCE_OF_PRIMARY_CONSTRUCTOR_FOR_INLINE_CLASS by error0(SourceElementPositioningStrategies.INLINE_OR_VALUE_MODIFIER) - val INLINE_CLASS_CONSTRUCTOR_WRONG_PARAMETERS_SIZE by error0() - val INLINE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER by error0() - val PROPERTY_WITH_BACKING_FIELD_INSIDE_INLINE_CLASS by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val DELEGATED_PROPERTY_INSIDE_INLINE_CLASS by error0() - val INLINE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE by error1() - val INLINE_CLASS_CANNOT_IMPLEMENT_INTERFACE_BY_DELEGATION by error0() - val INLINE_CLASS_CANNOT_EXTEND_CLASSES by error0() - val INLINE_CLASS_CANNOT_BE_RECURSIVE by error0() - val RESERVED_MEMBER_INSIDE_INLINE_CLASS by error1(SourceElementPositioningStrategies.DECLARATION_NAME) - val SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS by error0() - val INNER_CLASS_INSIDE_INLINE_CLASS by error0(SourceElementPositioningStrategies.INNER_MODIFIER) - val VALUE_CLASS_CANNOT_BE_CLONEABLE by error0(SourceElementPositioningStrategies.INLINE_OR_VALUE_MODIFIER) + val INLINE_CLASS_NOT_TOP_LEVEL by error0(SourceElementPositioningStrategies.INLINE_OR_VALUE_MODIFIER) + val INLINE_CLASS_NOT_FINAL by error0(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val ABSENCE_OF_PRIMARY_CONSTRUCTOR_FOR_INLINE_CLASS by error0(SourceElementPositioningStrategies.INLINE_OR_VALUE_MODIFIER) + val INLINE_CLASS_CONSTRUCTOR_WRONG_PARAMETERS_SIZE by error0() + val INLINE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER by error0() + val PROPERTY_WITH_BACKING_FIELD_INSIDE_INLINE_CLASS by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val DELEGATED_PROPERTY_INSIDE_INLINE_CLASS by error0() + val INLINE_CLASS_HAS_INAPPLICABLE_PARAMETER_TYPE by error1() + val INLINE_CLASS_CANNOT_IMPLEMENT_INTERFACE_BY_DELEGATION by error0() + val INLINE_CLASS_CANNOT_EXTEND_CLASSES by error0() + val INLINE_CLASS_CANNOT_BE_RECURSIVE by error0() + val RESERVED_MEMBER_INSIDE_INLINE_CLASS by error1(SourceElementPositioningStrategies.DECLARATION_NAME) + val SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS by error0() + val INNER_CLASS_INSIDE_INLINE_CLASS by error0(SourceElementPositioningStrategies.INNER_MODIFIER) + val VALUE_CLASS_CANNOT_BE_CLONEABLE by error0(SourceElementPositioningStrategies.INLINE_OR_VALUE_MODIFIER) // Applicability - val NONE_APPLICABLE by error1>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val INAPPLICABLE_CANDIDATE by error1>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val ARGUMENT_TYPE_MISMATCH by error2() - val INAPPLICABLE_LATEINIT_MODIFIER by error1(SourceElementPositioningStrategies.LATEINIT_MODIFIER) - val VARARG_OUTSIDE_PARENTHESES by error0() - val NAMED_ARGUMENTS_NOT_ALLOWED by error1(SourceElementPositioningStrategies.NAME_OF_NAMED_ARGUMENT) - val NON_VARARG_SPREAD by error0() - val ARGUMENT_PASSED_TWICE by error0(SourceElementPositioningStrategies.NAME_OF_NAMED_ARGUMENT) - val TOO_MANY_ARGUMENTS by error1>() - val NO_VALUE_FOR_PARAMETER by error1(SourceElementPositioningStrategies.VALUE_ARGUMENTS) - val NAMED_PARAMETER_NOT_FOUND by error1(SourceElementPositioningStrategies.NAME_OF_NAMED_ARGUMENT) + val NONE_APPLICABLE by error1>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val INAPPLICABLE_CANDIDATE by error1>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val ARGUMENT_TYPE_MISMATCH by error2() + val INAPPLICABLE_LATEINIT_MODIFIER by error1(SourceElementPositioningStrategies.LATEINIT_MODIFIER) + val VARARG_OUTSIDE_PARENTHESES by error0() + val NAMED_ARGUMENTS_NOT_ALLOWED by error1(SourceElementPositioningStrategies.NAME_OF_NAMED_ARGUMENT) + val NON_VARARG_SPREAD by error0() + val ARGUMENT_PASSED_TWICE by error0(SourceElementPositioningStrategies.NAME_OF_NAMED_ARGUMENT) + val TOO_MANY_ARGUMENTS by error1>() + val NO_VALUE_FOR_PARAMETER by error1(SourceElementPositioningStrategies.VALUE_ARGUMENTS) + val NAMED_PARAMETER_NOT_FOUND by error1(SourceElementPositioningStrategies.NAME_OF_NAMED_ARGUMENT) // Ambiguity - val OVERLOAD_RESOLUTION_AMBIGUITY by error1>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val ASSIGN_OPERATOR_AMBIGUITY by error1>>() + val OVERLOAD_RESOLUTION_AMBIGUITY by error1>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val ASSIGN_OPERATOR_AMBIGUITY by error1>>() // Types & type parameters - val TYPE_MISMATCH by error2() - val RECURSION_IN_IMPLICIT_TYPES by error0() - val INFERENCE_ERROR by error0() - val PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT by error0() - val UPPER_BOUND_VIOLATED by error1() - val TYPE_ARGUMENTS_NOT_ALLOWED by error0() - val WRONG_NUMBER_OF_TYPE_ARGUMENTS by error2>() - val NO_TYPE_ARGUMENTS_ON_RHS by error2>() - val TYPE_PARAMETERS_IN_OBJECT by error0() - val ILLEGAL_PROJECTION_USAGE by error0() - val TYPE_PARAMETERS_IN_ENUM by error0() - val CONFLICTING_PROJECTION by error1() - val VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED by error0(SourceElementPositioningStrategies.VARIANCE_MODIFIER) - val CATCH_PARAMETER_WITH_DEFAULT_VALUE by error0() - val REIFIED_TYPE_IN_CATCH_CLAUSE by error0() - val TYPE_PARAMETER_IN_CATCH_CLAUSE by error0() - val GENERIC_THROWABLE_SUBCLASS by error0() - val INNER_CLASS_OF_GENERIC_THROWABLE_SUBCLASS by error0(SourceElementPositioningStrategies.DECLARATION_NAME) - val KCLASS_WITH_NULLABLE_TYPE_PARAMETER_IN_SIGNATURE by error1(SourceElementPositioningStrategies.DECLARATION_NAME) - val TYPE_PARAMETER_AS_REIFIED by error1() - val FINAL_UPPER_BOUND by warning1() - val UPPER_BOUND_IS_EXTENSION_FUNCTION_TYPE by error0() - val BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER by error0() - val ONLY_ONE_CLASS_BOUND_ALLOWED by error0() - val REPEATED_BOUND by error0() - val CONFLICTING_UPPER_BOUNDS by error1() - val NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER by error2() - val BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED by error0() - val REIFIED_TYPE_PARAMETER_NO_INLINE by error0(SourceElementPositioningStrategies.REIFIED_MODIFIER) - val TYPE_PARAMETERS_NOT_ALLOWED by error0() - val TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER by error0() - val RETURN_TYPE_MISMATCH by error2(SourceElementPositioningStrategies.WHOLE_ELEMENT) - val CYCLIC_GENERIC_UPPER_BOUND by error0() - val DEPRECATED_TYPE_PARAMETER_SYNTAX by error0() - val MISPLACED_TYPE_PARAMETER_CONSTRAINTS by warning0() - val DYNAMIC_UPPER_BOUND by error0() + val TYPE_MISMATCH by error2() + val RECURSION_IN_IMPLICIT_TYPES by error0() + val INFERENCE_ERROR by error0() + val PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT by error0() + val UPPER_BOUND_VIOLATED by error1() + val TYPE_ARGUMENTS_NOT_ALLOWED by error0() + val WRONG_NUMBER_OF_TYPE_ARGUMENTS by error2>() + val NO_TYPE_ARGUMENTS_ON_RHS by error2>() + val TYPE_PARAMETERS_IN_OBJECT by error0() + val ILLEGAL_PROJECTION_USAGE by error0() + val TYPE_PARAMETERS_IN_ENUM by error0() + val CONFLICTING_PROJECTION by error1() + val VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED by error0(SourceElementPositioningStrategies.VARIANCE_MODIFIER) + val CATCH_PARAMETER_WITH_DEFAULT_VALUE by error0() + val REIFIED_TYPE_IN_CATCH_CLAUSE by error0() + val TYPE_PARAMETER_IN_CATCH_CLAUSE by error0() + val GENERIC_THROWABLE_SUBCLASS by error0() + val INNER_CLASS_OF_GENERIC_THROWABLE_SUBCLASS by error0(SourceElementPositioningStrategies.DECLARATION_NAME) + val KCLASS_WITH_NULLABLE_TYPE_PARAMETER_IN_SIGNATURE by error1(SourceElementPositioningStrategies.DECLARATION_NAME) + val TYPE_PARAMETER_AS_REIFIED by error1() + val FINAL_UPPER_BOUND by warning1() + val UPPER_BOUND_IS_EXTENSION_FUNCTION_TYPE by error0() + val BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER by error0() + val ONLY_ONE_CLASS_BOUND_ALLOWED by error0() + val REPEATED_BOUND by error0() + val CONFLICTING_UPPER_BOUNDS by error1() + val NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER by error2() + val BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED by error0() + val REIFIED_TYPE_PARAMETER_NO_INLINE by error0(SourceElementPositioningStrategies.REIFIED_MODIFIER) + val TYPE_PARAMETERS_NOT_ALLOWED by error0() + val TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER by error0() + val RETURN_TYPE_MISMATCH by error2(SourceElementPositioningStrategies.WHOLE_ELEMENT) + val CYCLIC_GENERIC_UPPER_BOUND by error0() + val DEPRECATED_TYPE_PARAMETER_SYNTAX by error0() + val MISPLACED_TYPE_PARAMETER_CONSTRAINTS by warning0() + val DYNAMIC_UPPER_BOUND by error0() // Reflection - val EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED by error1>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val CALLABLE_REFERENCE_LHS_NOT_A_CLASS by error0() - val CALLABLE_REFERENCE_TO_ANNOTATION_CONSTRUCTOR by error0(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val CLASS_LITERAL_LHS_NOT_A_CLASS by error0() - val NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error0() - val EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error1() + val EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED by error1>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val CALLABLE_REFERENCE_LHS_NOT_A_CLASS by error0() + val CALLABLE_REFERENCE_TO_ANNOTATION_CONSTRUCTOR by error0(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val CLASS_LITERAL_LHS_NOT_A_CLASS by error0() + val NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error0() + val EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS by error1() // overrides - val NOTHING_TO_OVERRIDE by error1(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) - val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error3, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) - val CANNOT_CHANGE_ACCESS_PRIVILEGE by error3, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) - val OVERRIDING_FINAL_MEMBER by error2, Name>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) - val ABSTRACT_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_WARNING by warning2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val MANY_IMPL_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val OVERRIDING_FINAL_MEMBER_BY_DELEGATION by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE by warning2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) - val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) - val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) - val VAR_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) - val VAR_OVERRIDDEN_BY_VAL by error2(SourceElementPositioningStrategies.VAL_OR_VAR_NODE) - val NON_FINAL_MEMBER_IN_FINAL_CLASS by warning0(SourceElementPositioningStrategies.OPEN_MODIFIER) - val NON_FINAL_MEMBER_IN_OBJECT by warning0(SourceElementPositioningStrategies.OPEN_MODIFIER) + val NOTHING_TO_OVERRIDE by error1(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) + val CANNOT_WEAKEN_ACCESS_PRIVILEGE by error3, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) + val CANNOT_CHANGE_ACCESS_PRIVILEGE by error3, Name>(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) + val OVERRIDING_FINAL_MEMBER by error2, Name>(SourceElementPositioningStrategies.OVERRIDE_MODIFIER) + val ABSTRACT_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) + val ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) + val INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) + val INVISIBLE_ABSTRACT_MEMBER_FROM_SUPER_WARNING by warning2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) + val MANY_IMPL_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) + val MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) + val OVERRIDING_FINAL_MEMBER_BY_DELEGATION by error2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) + val DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE by warning2, FirCallableDeclaration<*>>(SourceElementPositioningStrategies.DECLARATION_NAME) + val RETURN_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) + val PROPERTY_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) + val VAR_TYPE_MISMATCH_ON_OVERRIDE by error2(SourceElementPositioningStrategies.DECLARATION_RETURN_TYPE) + val VAR_OVERRIDDEN_BY_VAL by error2(SourceElementPositioningStrategies.VAL_OR_VAR_NODE) + val NON_FINAL_MEMBER_IN_FINAL_CLASS by warning0(SourceElementPositioningStrategies.OPEN_MODIFIER) + val NON_FINAL_MEMBER_IN_OBJECT by warning0(SourceElementPositioningStrategies.OPEN_MODIFIER) // Redeclarations - val MANY_COMPANION_OBJECTS by error0(SourceElementPositioningStrategies.COMPANION_OBJECT) - val CONFLICTING_OVERLOADS by error1>>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT) - val REDECLARATION by error1>>() - val METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE by error0() + val MANY_COMPANION_OBJECTS by error0(SourceElementPositioningStrategies.COMPANION_OBJECT) + val CONFLICTING_OVERLOADS by error1>>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT) + val REDECLARATION by error1>>() + val METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE by error0() // Invalid local declarations - val LOCAL_OBJECT_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) - val LOCAL_INTERFACE_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) + val LOCAL_OBJECT_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) + val LOCAL_INTERFACE_NOT_ALLOWED by error1(SourceElementPositioningStrategies.DECLARATION_NAME) // Functions - val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error2(SourceElementPositioningStrategies.MODALITY_MODIFIER) - val ABSTRACT_FUNCTION_WITH_BODY by error1(SourceElementPositioningStrategies.MODALITY_MODIFIER) - val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error1(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val PRIVATE_FUNCTION_WITH_NO_BODY by error1(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) - val NON_MEMBER_FUNCTION_NO_BODY by error1(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val FUNCTION_DECLARATION_WITH_NO_NAME by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE by error0(SourceElementPositioningStrategies.PARAMETER_DEFAULT_VALUE) - val USELESS_VARARG_ON_PARAMETER by warning0() - val MULTIPLE_VARARG_PARAMETERS by error0(SourceElementPositioningStrategies.PARAMETER_VARARG_MODIFIER) - val FORBIDDEN_VARARG_PARAMETER_TYPE by error1(SourceElementPositioningStrategies.PARAMETER_VARARG_MODIFIER) - val VALUE_PARAMETER_WITH_NO_TYPE_ANNOTATION by error0() - val CANNOT_INFER_PARAMETER_TYPE by error0() + val ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS by error2(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val ABSTRACT_FUNCTION_WITH_BODY by error1(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val NON_ABSTRACT_FUNCTION_WITH_NO_BODY by error1(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val PRIVATE_FUNCTION_WITH_NO_BODY by error1(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) + val NON_MEMBER_FUNCTION_NO_BODY by error1(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val FUNCTION_DECLARATION_WITH_NO_NAME by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE by error0(SourceElementPositioningStrategies.PARAMETER_DEFAULT_VALUE) + val USELESS_VARARG_ON_PARAMETER by warning0() + val MULTIPLE_VARARG_PARAMETERS by error0(SourceElementPositioningStrategies.PARAMETER_VARARG_MODIFIER) + val FORBIDDEN_VARARG_PARAMETER_TYPE by error1(SourceElementPositioningStrategies.PARAMETER_VARARG_MODIFIER) + val VALUE_PARAMETER_WITH_NO_TYPE_ANNOTATION by error0() + val CANNOT_INFER_PARAMETER_TYPE by error0() // Fun interfaces - val FUN_INTERFACE_CONSTRUCTOR_REFERENCE by error0(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val FUN_INTERFACE_CONSTRUCTOR_REFERENCE by error0(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) // Properties & accessors - val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error2(SourceElementPositioningStrategies.MODALITY_MODIFIER) - val PRIVATE_PROPERTY_IN_INTERFACE by error0(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) - val ABSTRACT_PROPERTY_WITH_INITIALIZER by error0() - val PROPERTY_INITIALIZER_IN_INTERFACE by error0() - val PROPERTY_WITH_NO_TYPE_NO_INITIALIZER by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val MUST_BE_INITIALIZED by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val MUST_BE_INITIALIZED_OR_BE_ABSTRACT by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val EXTENSION_PROPERTY_MUST_HAVE_ACCESSORS_OR_BE_ABSTRACT by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val UNNECESSARY_LATEINIT by warning0(SourceElementPositioningStrategies.LATEINIT_MODIFIER) - val BACKING_FIELD_IN_INTERFACE by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val EXTENSION_PROPERTY_WITH_BACKING_FIELD by error0() - val PROPERTY_INITIALIZER_NO_BACKING_FIELD by error0() - val ABSTRACT_DELEGATED_PROPERTY by error0() - val DELEGATED_PROPERTY_IN_INTERFACE by error0() - val ABSTRACT_PROPERTY_WITH_GETTER by error0() - val ABSTRACT_PROPERTY_WITH_SETTER by error0() - val PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY by error0(SourceElementPositioningStrategies.PRIVATE_MODIFIER) - val PRIVATE_SETTER_FOR_OPEN_PROPERTY by error0(SourceElementPositioningStrategies.PRIVATE_MODIFIER) - val EXPECTED_PRIVATE_DECLARATION by error0(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) - val VAL_WITH_SETTER by error0() - val CONST_VAL_NOT_TOP_LEVEL_OR_OBJECT by error0(SourceElementPositioningStrategies.CONST_MODIFIER) - val CONST_VAL_WITH_GETTER by error0() - val CONST_VAL_WITH_DELEGATE by error0() - val TYPE_CANT_BE_USED_FOR_CONST_VAL by error1(SourceElementPositioningStrategies.CONST_MODIFIER) - val CONST_VAL_WITHOUT_INITIALIZER by error0(SourceElementPositioningStrategies.CONST_MODIFIER) - val CONST_VAL_WITH_NON_CONST_INITIALIZER by error0() - val WRONG_SETTER_PARAMETER_TYPE by error2() - val INITIALIZER_TYPE_MISMATCH by error2(SourceElementPositioningStrategies.ASSIGNMENT_VALUE) + val ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS by error2(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val PRIVATE_PROPERTY_IN_INTERFACE by error0(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) + val ABSTRACT_PROPERTY_WITH_INITIALIZER by error0() + val PROPERTY_INITIALIZER_IN_INTERFACE by error0() + val PROPERTY_WITH_NO_TYPE_NO_INITIALIZER by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val MUST_BE_INITIALIZED by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val MUST_BE_INITIALIZED_OR_BE_ABSTRACT by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val EXTENSION_PROPERTY_MUST_HAVE_ACCESSORS_OR_BE_ABSTRACT by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val UNNECESSARY_LATEINIT by warning0(SourceElementPositioningStrategies.LATEINIT_MODIFIER) + val BACKING_FIELD_IN_INTERFACE by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val EXTENSION_PROPERTY_WITH_BACKING_FIELD by error0() + val PROPERTY_INITIALIZER_NO_BACKING_FIELD by error0() + val ABSTRACT_DELEGATED_PROPERTY by error0() + val DELEGATED_PROPERTY_IN_INTERFACE by error0() + val ABSTRACT_PROPERTY_WITH_GETTER by error0() + val ABSTRACT_PROPERTY_WITH_SETTER by error0() + val PRIVATE_SETTER_FOR_ABSTRACT_PROPERTY by error0(SourceElementPositioningStrategies.PRIVATE_MODIFIER) + val PRIVATE_SETTER_FOR_OPEN_PROPERTY by error0(SourceElementPositioningStrategies.PRIVATE_MODIFIER) + val EXPECTED_PRIVATE_DECLARATION by error0(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) + val VAL_WITH_SETTER by error0() + val CONST_VAL_NOT_TOP_LEVEL_OR_OBJECT by error0(SourceElementPositioningStrategies.CONST_MODIFIER) + val CONST_VAL_WITH_GETTER by error0() + val CONST_VAL_WITH_DELEGATE by error0() + val TYPE_CANT_BE_USED_FOR_CONST_VAL by error1(SourceElementPositioningStrategies.CONST_MODIFIER) + val CONST_VAL_WITHOUT_INITIALIZER by error0(SourceElementPositioningStrategies.CONST_MODIFIER) + val CONST_VAL_WITH_NON_CONST_INITIALIZER by error0() + val WRONG_SETTER_PARAMETER_TYPE by error2() + val INITIALIZER_TYPE_MISMATCH by error2(SourceElementPositioningStrategies.ASSIGNMENT_VALUE) // Multi-platform projects - val EXPECTED_DECLARATION_WITH_BODY by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) - val EXPECTED_PROPERTY_INITIALIZER by error0() - val EXPECTED_DELEGATED_PROPERTY by error0() - val EXPECTED_LATEINIT_PROPERTY by error0(SourceElementPositioningStrategies.LATEINIT_MODIFIER) + val EXPECTED_DECLARATION_WITH_BODY by error0(SourceElementPositioningStrategies.DECLARATION_SIGNATURE) + val EXPECTED_PROPERTY_INITIALIZER by error0() + val EXPECTED_DELEGATED_PROPERTY by error0() + val EXPECTED_LATEINIT_PROPERTY by error0(SourceElementPositioningStrategies.LATEINIT_MODIFIER) // Destructuring declaration - val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error0() - val COMPONENT_FUNCTION_MISSING by error2() - val COMPONENT_FUNCTION_AMBIGUITY by error2>>() - val COMPONENT_FUNCTION_ON_NULLABLE by error1() - val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by error3() + val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error0() + val COMPONENT_FUNCTION_MISSING by error2() + val COMPONENT_FUNCTION_AMBIGUITY by error2>>() + val COMPONENT_FUNCTION_ON_NULLABLE by error1() + val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by error3() // Control flow diagnostics - val UNINITIALIZED_VARIABLE by error1() - val UNINITIALIZED_ENUM_ENTRY by error1>() - val UNINITIALIZED_ENUM_COMPANION by error1(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val VAL_REASSIGNMENT by error1>() - val VAL_REASSIGNMENT_VIA_BACKING_FIELD by warning1() - val VAL_REASSIGNMENT_VIA_BACKING_FIELD_ERROR by error1() - val WRONG_INVOCATION_KIND by warning3, EventOccurrencesRange, EventOccurrencesRange>() - val LEAKED_IN_PLACE_LAMBDA by error1>() - val WRONG_IMPLIES_CONDITION by warning0() + val UNINITIALIZED_VARIABLE by error1() + val UNINITIALIZED_ENUM_ENTRY by error1>() + val UNINITIALIZED_ENUM_COMPANION by error1(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val VAL_REASSIGNMENT by error1>() + val VAL_REASSIGNMENT_VIA_BACKING_FIELD by warning1() + val VAL_REASSIGNMENT_VIA_BACKING_FIELD_ERROR by error1() + val WRONG_INVOCATION_KIND by warning3, EventOccurrencesRange, EventOccurrencesRange>() + val LEAKED_IN_PLACE_LAMBDA by error1>() + val WRONG_IMPLIES_CONDITION by warning0() // Nullability - val UNSAFE_CALL by error1(SourceElementPositioningStrategies.DOT_BY_QUALIFIED) - val UNSAFE_IMPLICIT_INVOKE_CALL by error1(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val UNSAFE_INFIX_CALL by error3(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val UNSAFE_OPERATOR_CALL by error3(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) - val UNNECESSARY_SAFE_CALL by warning1(SourceElementPositioningStrategies.SAFE_ACCESS) - val UNEXPECTED_SAFE_CALL by error0(SourceElementPositioningStrategies.SAFE_ACCESS) - val UNNECESSARY_NOT_NULL_ASSERTION by warning1(SourceElementPositioningStrategies.OPERATOR) - val NOT_NULL_ASSERTION_ON_LAMBDA_EXPRESSION by warning0(SourceElementPositioningStrategies.OPERATOR) - val NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE by warning0(SourceElementPositioningStrategies.OPERATOR) + val UNSAFE_CALL by error1(SourceElementPositioningStrategies.DOT_BY_QUALIFIED) + val UNSAFE_IMPLICIT_INVOKE_CALL by error1(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val UNSAFE_INFIX_CALL by error3(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val UNSAFE_OPERATOR_CALL by error3(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) + val UNNECESSARY_SAFE_CALL by warning1(SourceElementPositioningStrategies.SAFE_ACCESS) + val UNEXPECTED_SAFE_CALL by error0(SourceElementPositioningStrategies.SAFE_ACCESS) + val UNNECESSARY_NOT_NULL_ASSERTION by warning1(SourceElementPositioningStrategies.OPERATOR) + val NOT_NULL_ASSERTION_ON_LAMBDA_EXPRESSION by warning0(SourceElementPositioningStrategies.OPERATOR) + val NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE by warning0(SourceElementPositioningStrategies.OPERATOR) // When expressions - val NO_ELSE_IN_WHEN by error1>(SourceElementPositioningStrategies.WHEN_EXPRESSION) - val INVALID_IF_AS_EXPRESSION by error0(SourceElementPositioningStrategies.IF_EXPRESSION) + val NO_ELSE_IN_WHEN by error1>(SourceElementPositioningStrategies.WHEN_EXPRESSION) + val INVALID_IF_AS_EXPRESSION by error0(SourceElementPositioningStrategies.IF_EXPRESSION) // Context tracking - val TYPE_PARAMETER_IS_NOT_AN_EXPRESSION by error1() - val TYPE_PARAMETER_ON_LHS_OF_DOT by error1() + val TYPE_PARAMETER_IS_NOT_AN_EXPRESSION by error1() + val TYPE_PARAMETER_ON_LHS_OF_DOT by error1() // Function contracts - val ERROR_IN_CONTRACT_DESCRIPTION by error1(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) + val ERROR_IN_CONTRACT_DESCRIPTION by error1(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) // Conventions - val NO_GET_METHOD by error0(SourceElementPositioningStrategies.ARRAY_ACCESS) - val NO_SET_METHOD by error0(SourceElementPositioningStrategies.ARRAY_ACCESS) + val NO_GET_METHOD by error0(SourceElementPositioningStrategies.ARRAY_ACCESS) + val NO_SET_METHOD by error0(SourceElementPositioningStrategies.ARRAY_ACCESS) // Type alias - val TOPLEVEL_TYPEALIASES_ONLY by error0() + val TOPLEVEL_TYPEALIASES_ONLY by error0() // Extended checkers - val REDUNDANT_VISIBILITY_MODIFIER by warning0(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) - val REDUNDANT_MODALITY_MODIFIER by warning0(SourceElementPositioningStrategies.MODALITY_MODIFIER) - val REDUNDANT_RETURN_UNIT_TYPE by warning0() - val REDUNDANT_EXPLICIT_TYPE by warning0() - val REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE by warning0() - val CAN_BE_VAL by warning0(SourceElementPositioningStrategies.VAL_OR_VAR_NODE) - val CAN_BE_REPLACED_WITH_OPERATOR_ASSIGNMENT by warning0(SourceElementPositioningStrategies.OPERATOR) - val REDUNDANT_CALL_OF_CONVERSION_METHOD by warning0(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) - val ARRAY_EQUALITY_OPERATOR_CAN_BE_REPLACED_WITH_EQUALS by warning0(SourceElementPositioningStrategies.OPERATOR) - val EMPTY_RANGE by warning0() - val REDUNDANT_SETTER_PARAMETER_TYPE by warning0() - val UNUSED_VARIABLE by warning0(SourceElementPositioningStrategies.DECLARATION_NAME) - val ASSIGNED_VALUE_IS_NEVER_READ by warning0() - val VARIABLE_INITIALIZER_IS_REDUNDANT by warning0() - val VARIABLE_NEVER_READ by warning0(SourceElementPositioningStrategies.DECLARATION_NAME) - val USELESS_CALL_ON_NOT_NULL by warning0(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) + val REDUNDANT_VISIBILITY_MODIFIER by warning0(SourceElementPositioningStrategies.VISIBILITY_MODIFIER) + val REDUNDANT_MODALITY_MODIFIER by warning0(SourceElementPositioningStrategies.MODALITY_MODIFIER) + val REDUNDANT_RETURN_UNIT_TYPE by warning0() + val REDUNDANT_EXPLICIT_TYPE by warning0() + val REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE by warning0() + val CAN_BE_VAL by warning0(SourceElementPositioningStrategies.VAL_OR_VAR_NODE) + val CAN_BE_REPLACED_WITH_OPERATOR_ASSIGNMENT by warning0(SourceElementPositioningStrategies.OPERATOR) + val REDUNDANT_CALL_OF_CONVERSION_METHOD by warning0(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) + val ARRAY_EQUALITY_OPERATOR_CAN_BE_REPLACED_WITH_EQUALS by warning0(SourceElementPositioningStrategies.OPERATOR) + val EMPTY_RANGE by warning0() + val REDUNDANT_SETTER_PARAMETER_TYPE by warning0() + val UNUSED_VARIABLE by warning0(SourceElementPositioningStrategies.DECLARATION_NAME) + val ASSIGNED_VALUE_IS_NEVER_READ by warning0() + val VARIABLE_INITIALIZER_IS_REDUNDANT by warning0() + val VARIABLE_NEVER_READ by warning0(SourceElementPositioningStrategies.DECLARATION_NAME) + val USELESS_CALL_ON_NOT_NULL by warning0(SourceElementPositioningStrategies.SELECTOR_BY_QUALIFIED) // Returns - val RETURN_NOT_ALLOWED by error0(SourceElementPositioningStrategies.RETURN_WITH_LABEL) - val RETURN_IN_FUNCTION_WITH_EXPRESSION_BODY by error0(SourceElementPositioningStrategies.RETURN_WITH_LABEL) + val RETURN_NOT_ALLOWED by error0(SourceElementPositioningStrategies.RETURN_WITH_LABEL) + val RETURN_IN_FUNCTION_WITH_EXPRESSION_BODY by error0(SourceElementPositioningStrategies.RETURN_WITH_LABEL) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationArgumentChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationArgumentChecker.kt index 19ef7294905..079c9f7413f 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationArgumentChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnnotationArgumentChecker.kt @@ -5,12 +5,8 @@ package org.jetbrains.kotlin.fir.analysis.checkers.declaration -import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.FirAnnotationContainer import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.FirSourceElement -import org.jetbrains.kotlin.fir.FirSymbolOwner import org.jetbrains.kotlin.fir.analysis.checkers.ConstantArgumentKind import org.jetbrains.kotlin.fir.analysis.checkers.checkConstantArguments import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext @@ -18,22 +14,9 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticFactory0 import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn -import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.expressions.* -import org.jetbrains.kotlin.fir.references.FirErrorNamedReference -import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference -import org.jetbrains.kotlin.fir.resolve.toSymbol -import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperatorCall -import org.jetbrains.kotlin.name.StandardClassIds -import org.jetbrains.kotlin.name.StandardClassIds.primitiveTypesAndString -import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol -import org.jetbrains.kotlin.fir.types.* -import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtExpression -import org.jetbrains.kotlin.util.OperatorNameConventions.BINARY_OPERATION_NAMES -import org.jetbrains.kotlin.util.OperatorNameConventions.PLUS -import org.jetbrains.kotlin.util.OperatorNameConventions.TO_STRING -import org.jetbrains.kotlin.util.OperatorNameConventions.UNARY_OPERATION_NAMES object FirAnnotationArgumentChecker : FirBasicDeclarationChecker() { override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { @@ -53,7 +36,7 @@ object FirAnnotationArgumentChecker : FirBasicDeclarationChecker() { session: FirSession, reporter: DiagnosticReporter, context: CheckerContext - ): FirDiagnosticFactory0? { + ): FirDiagnosticFactory0? { when (expression) { is FirArrayOfCall -> { var usedNonConst = false diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/DiagnosticReporter.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/DiagnosticReporter.kt index 190e6c2a143..c64a5f5767d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/DiagnosticReporter.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/DiagnosticReporter.kt @@ -16,26 +16,26 @@ abstract class DiagnosticReporter { abstract fun report(diagnostic: FirDiagnostic<*>?, context: CheckerContext) } -inline fun DiagnosticReporter.reportOn( - source: T?, - factory: FirDiagnosticFactory0, +fun

DiagnosticReporter.reportOn( + source: FirSourceElement?, + factory: FirDiagnosticFactory0

, context: CheckerContext ) { source?.let { report(factory.on(it), context) } } -inline fun DiagnosticReporter.reportOn( - source: T?, - factory: FirDiagnosticFactory1, +fun

DiagnosticReporter.reportOn( + source: FirSourceElement?, + factory: FirDiagnosticFactory1, a: A, context: CheckerContext ) { source?.let { report(factory.on(it, a), context) } } -inline fun DiagnosticReporter.reportOn( - source: T?, - factory: FirDiagnosticFactory2, +fun

DiagnosticReporter.reportOn( + source: FirSourceElement?, + factory: FirDiagnosticFactory2, a: A, b: B, context: CheckerContext @@ -43,9 +43,9 @@ inline fun Diag source?.let { report(factory.on(it, a, b), context) } } -inline fun DiagnosticReporter.reportOn( - source: T?, - factory: FirDiagnosticFactory3, +fun

DiagnosticReporter.reportOn( + source: FirSourceElement?, + factory: FirDiagnosticFactory3, a: A, b: B, c: C, @@ -74,49 +74,49 @@ inline fun withSuppressedDiagnostics( f(context) } -inline fun DiagnosticReporter.reportOnWithSuppression( +fun

DiagnosticReporter.reportOnWithSuppression( element: FirElement, - factory: FirDiagnosticFactory0, + factory: FirDiagnosticFactory0

, context: CheckerContext ) { withSuppressedDiagnostics(element, context) { - reportOn(element.source as? T, factory, it) + reportOn(element.source, factory, it) } } -inline fun DiagnosticReporter.reportOnWithSuppression( +fun

DiagnosticReporter.reportOnWithSuppression( element: FirElement, - factory: FirDiagnosticFactory1, + factory: FirDiagnosticFactory1, a: A, context: CheckerContext ) { withSuppressedDiagnostics(element, context) { - reportOn(element.source as? T, factory, a, it) + reportOn(element.source, factory, a, it) } } -inline fun DiagnosticReporter.reportOnWithSuppression( +fun

DiagnosticReporter.reportOnWithSuppression( element: FirElement, - factory: FirDiagnosticFactory2, + factory: FirDiagnosticFactory2, a: A, b: B, context: CheckerContext ) { withSuppressedDiagnostics(element, context) { - reportOn(element.source as? T, factory, a, b, it) + reportOn(element.source, factory, a, b, it) } } -inline fun DiagnosticReporter.reportOnWithSuppression( +fun

DiagnosticReporter.reportOnWithSuppression( element: FirElement, - factory: FirDiagnosticFactory3, + factory: FirDiagnosticFactory3, a: A, b: B, c: C, context: CheckerContext ) { withSuppressedDiagnostics(element, context) { - reportOn(element.source as? T, factory, a, b, c, it) + reportOn(element.source, factory, a, b, c, it) } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnostic.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnostic.kt index ac9747f0b07..1f8961bfb88 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnostic.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnostic.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement sealed class FirDiagnostic : UnboundDiagnostic { abstract val element: E abstract override val severity: Severity - abstract override val factory: AbstractFirDiagnosticFactory<*, *, *> + abstract override val factory: AbstractFirDiagnosticFactory<*, *> override val textRanges: List get() = factory.getTextRanges(this) @@ -30,25 +30,25 @@ sealed class FirDiagnostic : UnboundDiagnostic { } sealed class FirSimpleDiagnostic : FirDiagnostic() { - abstract override val factory: FirDiagnosticFactory0<*, *> + abstract override val factory: FirDiagnosticFactory0<*> } sealed class FirDiagnosticWithParameters1 : FirDiagnostic() { abstract val a: A - abstract override val factory: FirDiagnosticFactory1<*, *, A> + abstract override val factory: FirDiagnosticFactory1<*, A> } sealed class FirDiagnosticWithParameters2 : FirDiagnostic() { abstract val a: A abstract val b: B - abstract override val factory: FirDiagnosticFactory2<*, *, A, B> + abstract override val factory: FirDiagnosticFactory2<*, A, B> } sealed class FirDiagnosticWithParameters3 : FirDiagnostic() { abstract val a: A abstract val b: B abstract val c: C - abstract override val factory: FirDiagnosticFactory3<*, *, A, B, C> + abstract override val factory: FirDiagnosticFactory3<*, A, B, C> } // ------------------------------ psi diagnostics ------------------------------ @@ -66,14 +66,14 @@ interface FirPsiDiagnostic

: Diagnostic { data class FirPsiSimpleDiagnostic

( override val element: FirPsiSourceElement

, override val severity: Severity, - override val factory: FirDiagnosticFactory0, P> + override val factory: FirDiagnosticFactory0

) : FirSimpleDiagnostic>(), FirPsiDiagnostic

data class FirPsiDiagnosticWithParameters1

( override val element: FirPsiSourceElement

, override val a: A, override val severity: Severity, - override val factory: FirDiagnosticFactory1, P, A> + override val factory: FirDiagnosticFactory1 ) : FirDiagnosticWithParameters1, A>(), FirPsiDiagnostic

data class FirPsiDiagnosticWithParameters2

( @@ -81,7 +81,7 @@ data class FirPsiDiagnosticWithParameters2

( override val a: A, override val b: B, override val severity: Severity, - override val factory: FirDiagnosticFactory2, P, A, B> + override val factory: FirDiagnosticFactory2 ) : FirDiagnosticWithParameters2, A, B>(), FirPsiDiagnostic

data class FirPsiDiagnosticWithParameters3

( @@ -90,7 +90,7 @@ data class FirPsiDiagnosticWithParameters3

, P, A, B, C> + override val factory: FirDiagnosticFactory3 ) : FirDiagnosticWithParameters3, A, B, C>(), FirPsiDiagnostic

// ------------------------------ light tree diagnostics ------------------------------ @@ -102,14 +102,14 @@ interface FirLightDiagnostic : UnboundDiagnostic { data class FirLightSimpleDiagnostic( override val element: FirLightSourceElement, override val severity: Severity, - override val factory: FirDiagnosticFactory0<*, *> + override val factory: FirDiagnosticFactory0<*> ) : FirSimpleDiagnostic(), FirLightDiagnostic data class FirLightDiagnosticWithParameters1( override val element: FirLightSourceElement, override val a: A, override val severity: Severity, - override val factory: FirDiagnosticFactory1<*, *, A> + override val factory: FirDiagnosticFactory1<*, A> ) : FirDiagnosticWithParameters1(), FirLightDiagnostic data class FirLightDiagnosticWithParameters2( @@ -117,7 +117,7 @@ data class FirLightDiagnosticWithParameters2( override val a: A, override val b: B, override val severity: Severity, - override val factory: FirDiagnosticFactory2<*, *, A, B> + override val factory: FirDiagnosticFactory2<*, A, B> ) : FirDiagnosticWithParameters2(), FirLightDiagnostic data class FirLightDiagnosticWithParameters3( @@ -126,5 +126,5 @@ data class FirLightDiagnosticWithParameters3( override val b: B, override val c: C, override val severity: Severity, - override val factory: FirDiagnosticFactory3<*, *, A, B, C> + override val factory: FirDiagnosticFactory3<*, A, B, C> ) : FirDiagnosticWithParameters3(), FirLightDiagnostic diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactory.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactory.kt index ed3b1332193..cc461857224 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactory.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactory.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.FirLightSourceElement import org.jetbrains.kotlin.fir.FirPsiSourceElement import org.jetbrains.kotlin.fir.FirSourceElement -sealed class AbstractFirDiagnosticFactory, P : PsiElement>( +sealed class AbstractFirDiagnosticFactory, P : PsiElement>( override val name: String, override val severity: Severity, val positioningStrategy: SourceElementPositioningStrategy

, @@ -36,87 +36,87 @@ sealed class AbstractFirDiagnosticFactory( +class FirDiagnosticFactory0

( name: String, severity: Severity, positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT, -) : AbstractFirDiagnosticFactory, P>(name, severity, positioningStrategy) { - override val firRenderer: FirDiagnosticRenderer> = SimpleFirDiagnosticRenderer("") +) : AbstractFirDiagnosticFactory, P>(name, severity, positioningStrategy) { + override val firRenderer: FirDiagnosticRenderer> = SimpleFirDiagnosticRenderer("") - fun on(element: E): FirSimpleDiagnostic { + fun on(element: FirSourceElement): FirSimpleDiagnostic<*> { return when (element) { is FirPsiSourceElement<*> -> FirPsiSimpleDiagnostic( - element as FirPsiSourceElement

, severity, this as FirDiagnosticFactory0, P> + element as FirPsiSourceElement

, severity, this ) is FirLightSourceElement -> FirLightSimpleDiagnostic(element, severity, this) else -> incorrectElement(element) - } as FirSimpleDiagnostic + } } } -class FirDiagnosticFactory1( +class FirDiagnosticFactory1

( name: String, severity: Severity, positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT, -) : AbstractFirDiagnosticFactory, P>(name, severity, positioningStrategy) { - override val firRenderer: FirDiagnosticRenderer> = FirDiagnosticWithParameters1Renderer( +) : AbstractFirDiagnosticFactory, P>(name, severity, positioningStrategy) { + override val firRenderer: FirDiagnosticRenderer> = FirDiagnosticWithParameters1Renderer( "{0}", FirDiagnosticRenderers.TO_STRING ) - fun on(element: E, a: A): FirDiagnosticWithParameters1 { + fun on(element: FirSourceElement, a: A): FirDiagnosticWithParameters1<*, A> { return when (element) { is FirPsiSourceElement<*> -> FirPsiDiagnosticWithParameters1( - element as FirPsiSourceElement

, a, severity, this as FirDiagnosticFactory1, P, A> + element as FirPsiSourceElement

, a, severity, this ) is FirLightSourceElement -> FirLightDiagnosticWithParameters1(element, a, severity, this) else -> incorrectElement(element) - } as FirDiagnosticWithParameters1 + } } } -class FirDiagnosticFactory2( +class FirDiagnosticFactory2

( name: String, severity: Severity, positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT, -) : AbstractFirDiagnosticFactory, P>(name, severity, positioningStrategy) { - override val firRenderer: FirDiagnosticRenderer> = FirDiagnosticWithParameters2Renderer( +) : AbstractFirDiagnosticFactory, P>(name, severity, positioningStrategy) { + override val firRenderer: FirDiagnosticRenderer> = FirDiagnosticWithParameters2Renderer( "{0}, {1}", FirDiagnosticRenderers.TO_STRING, FirDiagnosticRenderers.TO_STRING ) - fun on(element: E, a: A, b: B): FirDiagnosticWithParameters2 { + fun on(element: FirSourceElement, a: A, b: B): FirDiagnosticWithParameters2<*, A, B> { return when (element) { is FirPsiSourceElement<*> -> FirPsiDiagnosticWithParameters2( - element as FirPsiSourceElement

, a, b, severity, this as FirDiagnosticFactory2, P, A, B> + element as FirPsiSourceElement

, a, b, severity, this ) is FirLightSourceElement -> FirLightDiagnosticWithParameters2(element, a, b, severity, this) else -> incorrectElement(element) - } as FirDiagnosticWithParameters2 + } } } -class FirDiagnosticFactory3( +class FirDiagnosticFactory3

( name: String, severity: Severity, positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT, -) : AbstractFirDiagnosticFactory, P>(name, severity, positioningStrategy) { - override val firRenderer: FirDiagnosticRenderer> = FirDiagnosticWithParameters3Renderer( +) : AbstractFirDiagnosticFactory, P>(name, severity, positioningStrategy) { + override val firRenderer: FirDiagnosticRenderer> = FirDiagnosticWithParameters3Renderer( "{0}, {1}, {2}", FirDiagnosticRenderers.TO_STRING, FirDiagnosticRenderers.TO_STRING, FirDiagnosticRenderers.TO_STRING ) - fun on(element: E, a: A, b: B, c: C): FirDiagnosticWithParameters3 { + fun on(element: FirSourceElement, a: A, b: B, c: C): FirDiagnosticWithParameters3<*, A, B, C> { return when (element) { is FirPsiSourceElement<*> -> FirPsiDiagnosticWithParameters3( - element as FirPsiSourceElement

, a, b, c, severity, this as FirDiagnosticFactory3, P, A, B, C> + element as FirPsiSourceElement

, a, b, c, severity, this ) is FirLightSourceElement -> FirLightDiagnosticWithParameters3(element, a, b, c, severity, this) else -> incorrectElement(element) - } as FirDiagnosticWithParameters3 + } } } @@ -124,29 +124,29 @@ private fun incorrectElement(element: FirSourceElement): Nothing { throw IllegalArgumentException("Unknown element type: ${element::class}") } -fun FirDiagnosticFactory0.on(element: E?): FirSimpleDiagnostic? { +fun

FirDiagnosticFactory0

.on(element: FirSourceElement?): FirSimpleDiagnostic<*>? { return element?.let { on(it) } } -fun FirDiagnosticFactory1.on( - element: E?, a: A -): FirDiagnosticWithParameters1? { +fun

FirDiagnosticFactory1.on( + element: FirSourceElement?, a: A +): FirDiagnosticWithParameters1<*, A>? { return element?.let { on(it, a) } } -fun FirDiagnosticFactory2.on( - element: E?, +fun

FirDiagnosticFactory2.on( + element: FirSourceElement?, a: A, b: B -): FirDiagnosticWithParameters2? { +): FirDiagnosticWithParameters2<*, A, B>? { return element?.let { on(it, a, b) } } -fun FirDiagnosticFactory3.on( - element: E?, +fun

FirDiagnosticFactory3.on( + element: FirSourceElement?, a: A, b: B, c: C -): FirDiagnosticWithParameters3? { +): FirDiagnosticWithParameters3<*, A, B, C>? { return element?.let { on(it, a, b, c) } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryDsl.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryDsl.kt index 0d71bc61be4..25319851641 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryDsl.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryDsl.kt @@ -7,93 +7,92 @@ package org.jetbrains.kotlin.fir.analysis.diagnostics import com.intellij.psi.PsiElement import org.jetbrains.kotlin.diagnostics.* -import org.jetbrains.kotlin.fir.FirSourceElement import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KProperty -fun warning0( +fun

warning0( positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT -): DiagnosticFactory0DelegateProvider { +): DiagnosticFactory0DelegateProvider

{ return DiagnosticFactory0DelegateProvider(Severity.WARNING, positioningStrategy) } -fun warning1( +fun

warning1( positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT -): DiagnosticFactory1DelegateProvider { +): DiagnosticFactory1DelegateProvider { return DiagnosticFactory1DelegateProvider(Severity.WARNING, positioningStrategy) } -fun warning2( +fun

warning2( positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT -): DiagnosticFactory2DelegateProvider { +): DiagnosticFactory2DelegateProvider { return DiagnosticFactory2DelegateProvider(Severity.WARNING, positioningStrategy) } -fun warning3( +fun

warning3( positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT -): DiagnosticFactory3DelegateProvider { +): DiagnosticFactory3DelegateProvider { return DiagnosticFactory3DelegateProvider(Severity.WARNING, positioningStrategy) } -fun error0( +fun

error0( positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT -): DiagnosticFactory0DelegateProvider { +): DiagnosticFactory0DelegateProvider

{ return DiagnosticFactory0DelegateProvider(Severity.ERROR, positioningStrategy) } -fun error1( +fun

error1( positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT -): DiagnosticFactory1DelegateProvider { +): DiagnosticFactory1DelegateProvider { return DiagnosticFactory1DelegateProvider(Severity.ERROR, positioningStrategy) } -fun error2( +fun

error2( positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT -): DiagnosticFactory2DelegateProvider { +): DiagnosticFactory2DelegateProvider { return DiagnosticFactory2DelegateProvider(Severity.ERROR, positioningStrategy) } -fun error3( +fun

error3( positioningStrategy: SourceElementPositioningStrategy

= SourceElementPositioningStrategy.DEFAULT -): DiagnosticFactory3DelegateProvider { +): DiagnosticFactory3DelegateProvider { return DiagnosticFactory3DelegateProvider(Severity.ERROR, positioningStrategy) } // ------------------------------ Providers ------------------------------ -class DiagnosticFactory0DelegateProvider( +class DiagnosticFactory0DelegateProvider

( private val severity: Severity, private val positioningStrategy: SourceElementPositioningStrategy

) { - operator fun provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty> { + operator fun provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty> { return DummyDelegate(FirDiagnosticFactory0(prop.name, severity, positioningStrategy)) } } -class DiagnosticFactory1DelegateProvider( +class DiagnosticFactory1DelegateProvider

( private val severity: Severity, private val positioningStrategy: SourceElementPositioningStrategy

) { - operator fun provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty> { + operator fun provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty> { return DummyDelegate(FirDiagnosticFactory1(prop.name, severity, positioningStrategy)) } } -class DiagnosticFactory2DelegateProvider( +class DiagnosticFactory2DelegateProvider

( private val severity: Severity, private val positioningStrategy: SourceElementPositioningStrategy

) { - operator fun provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty> { + operator fun provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty> { return DummyDelegate(FirDiagnosticFactory2(prop.name, severity, positioningStrategy)) } } -class DiagnosticFactory3DelegateProvider( +class DiagnosticFactory3DelegateProvider

( private val severity: Severity, private val positioningStrategy: SourceElementPositioningStrategy

) { - operator fun provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty> { + operator fun provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty> { return DummyDelegate(FirDiagnosticFactory3(prop.name, severity, positioningStrategy)) } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryToRendererMap.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryToRendererMap.kt index 910e196d50c..d7a88bd5da5 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryToRendererMap.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryToRendererMap.kt @@ -7,46 +7,45 @@ package org.jetbrains.kotlin.fir.analysis.diagnostics import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticParameterRenderer -import org.jetbrains.kotlin.fir.FirSourceElement class FirDiagnosticFactoryToRendererMap(val name: String) { - private val renderersMap: MutableMap, FirDiagnosticRenderer<*>> = mutableMapOf() + private val renderersMap: MutableMap, FirDiagnosticRenderer<*>> = mutableMapOf() val psiDiagnosticMap: DiagnosticFactoryToRendererMap = DiagnosticFactoryToRendererMap() - operator fun get(factory: AbstractFirDiagnosticFactory<*, *, *>): FirDiagnosticRenderer<*>? = renderersMap[factory] + operator fun get(factory: AbstractFirDiagnosticFactory<*, *>): FirDiagnosticRenderer<*>? = renderersMap[factory] - fun put(factory: FirDiagnosticFactory0, message: String) { - put(factory, SimpleFirDiagnosticRenderer(message)) + fun put(factory: FirDiagnosticFactory0<*>, message: String) { + put(factory, SimpleFirDiagnosticRenderer(message)) } - fun put( - factory: FirDiagnosticFactory1, + fun put( + factory: FirDiagnosticFactory1<*, A>, message: String, rendererA: DiagnosticParameterRenderer? ) { - put(factory, FirDiagnosticWithParameters1Renderer(message, rendererA)) + put(factory, FirDiagnosticWithParameters1Renderer(message, rendererA)) } - fun put( - factory: FirDiagnosticFactory2, + fun put( + factory: FirDiagnosticFactory2<*, A, B>, message: String, rendererA: DiagnosticParameterRenderer?, rendererB: DiagnosticParameterRenderer? ) { - put(factory, FirDiagnosticWithParameters2Renderer(message, rendererA, rendererB)) + put(factory, FirDiagnosticWithParameters2Renderer(message, rendererA, rendererB)) } - fun put( - factory: FirDiagnosticFactory3, + fun put( + factory: FirDiagnosticFactory3<*, A, B, C>, message: String, rendererA: DiagnosticParameterRenderer?, rendererB: DiagnosticParameterRenderer?, rendererC: DiagnosticParameterRenderer? ) { - put(factory, FirDiagnosticWithParameters3Renderer(message, rendererA, rendererB, rendererC)) + put(factory, FirDiagnosticWithParameters3Renderer(message, rendererA, rendererB, rendererC)) } - private fun put(factory: AbstractFirDiagnosticFactory<*, *, *>, renderer: FirDiagnosticRenderer<*>) { + private fun put(factory: AbstractFirDiagnosticFactory<*, *>, renderer: FirDiagnosticRenderer<*>) { renderersMap[factory] = renderer psiDiagnosticMap.put(factory, renderer) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderer.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderer.kt index 0a1869d27d6..8cb60dd1cf8 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderer.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderer.kt @@ -6,14 +6,13 @@ package org.jetbrains.kotlin.fir.analysis.diagnostics import org.jetbrains.kotlin.diagnostics.rendering.* -import org.jetbrains.kotlin.fir.FirSourceElement interface FirDiagnosticRenderer> : DiagnosticRenderer { override fun render(diagnostic: D): String } -class SimpleFirDiagnosticRenderer(private val message: String) : FirDiagnosticRenderer> { - override fun render(diagnostic: FirSimpleDiagnostic): String { +class SimpleFirDiagnosticRenderer(private val message: String) : FirDiagnosticRenderer> { + override fun render(diagnostic: FirSimpleDiagnostic<*>): String { return message } } @@ -22,22 +21,22 @@ sealed class AbstractFirDiagnosticWithParametersRenderer>( protected val message: String ) : FirDiagnosticRenderer, AbstractDiagnosticWithParametersRenderer(message) -class FirDiagnosticWithParameters1Renderer( +class FirDiagnosticWithParameters1Renderer( message: String, private val rendererForA: DiagnosticParameterRenderer?, -) : AbstractFirDiagnosticWithParametersRenderer>(message) { - override fun renderParameters(diagnostic: FirDiagnosticWithParameters1): Array { +) : AbstractFirDiagnosticWithParametersRenderer>(message) { + override fun renderParameters(diagnostic: FirDiagnosticWithParameters1<*, A>): Array { val context = RenderingContext.of(diagnostic.a) return arrayOf(renderParameter(diagnostic.a, rendererForA, context)) } } -class FirDiagnosticWithParameters2Renderer( +class FirDiagnosticWithParameters2Renderer( message: String, private val rendererForA: DiagnosticParameterRenderer?, private val rendererForB: DiagnosticParameterRenderer?, -) : AbstractFirDiagnosticWithParametersRenderer>(message) { - override fun renderParameters(diagnostic: FirDiagnosticWithParameters2): Array { +) : AbstractFirDiagnosticWithParametersRenderer>(message) { + override fun renderParameters(diagnostic: FirDiagnosticWithParameters2<*, A, B>): Array { val context = RenderingContext.of(diagnostic.a, diagnostic.b) return arrayOf( renderParameter(diagnostic.a, rendererForA, context), @@ -46,13 +45,13 @@ class FirDiagnosticWithParameters2Renderer( +class FirDiagnosticWithParameters3Renderer( message: String, private val rendererForA: DiagnosticParameterRenderer?, private val rendererForB: DiagnosticParameterRenderer?, private val rendererForC: DiagnosticParameterRenderer?, -) : AbstractFirDiagnosticWithParametersRenderer>(message) { - override fun renderParameters(diagnostic: FirDiagnosticWithParameters3): Array { +) : AbstractFirDiagnosticWithParametersRenderer>(message) { + override fun renderParameters(diagnostic: FirDiagnosticWithParameters3<*, A, B, C>): Array { val context = RenderingContext.of(diagnostic.a, diagnostic.b, diagnostic.c) return arrayOf( renderParameter(diagnostic.a, rendererForA, context), diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt index 9f02fffc467..f3bff40b098 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt @@ -155,7 +155,7 @@ private fun mapInapplicableCandidateError( }.ifEmpty { listOf(FirErrors.INAPPLICABLE_CANDIDATE.on(source, diagnostic.candidate.symbol)) } } -private fun ConeSimpleDiagnostic.getFactory(): FirDiagnosticFactory0 { +private fun ConeSimpleDiagnostic.getFactory(): FirDiagnosticFactory0<*> { @Suppress("UNCHECKED_CAST") return when (kind) { DiagnosticKind.Syntax -> FirErrors.SYNTAX diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticsHandler.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticsHandler.kt index 5071bea1172..9de71452ca4 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticsHandler.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticsHandler.kt @@ -225,7 +225,7 @@ class FirDiagnosticsHandler(testServices: TestServices) : FirAnalysisHandler(tes } val argumentText = argument() - val factory = FirDiagnosticFactory1, PsiElement, String>(name, severity) + val factory = FirDiagnosticFactory1(name, severity) return when (positionedElement) { is FirPsiSourceElement<*> -> FirPsiDiagnosticWithParameters1(positionedElement, argumentText, severity, factory) is FirLightSourceElement -> FirLightDiagnosticWithParameters1(positionedElement, argumentText, severity, factory) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt index 383d7b13d72..6788b32fb4d 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticTest.kt @@ -221,7 +221,7 @@ abstract class AbstractFirDiagnosticsTest : AbstractFirBaseDiagnosticsTest() { sourceElement, argumentText, severity, - FirDiagnosticFactory1(name, severity) + FirDiagnosticFactory1(name, severity) ) } } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtDiagnosticConverter.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtDiagnosticConverter.kt index 19c46559b79..5c1e52a7872 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtDiagnosticConverter.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtDiagnosticConverter.kt @@ -27,7 +27,7 @@ internal fun interface KtFirDiagnostic3Creator : KtFi fun KtFirAnalysisSession.create(diagnostic: FirDiagnosticWithParameters3<*, A, B, C>): KtFirDiagnostic<*> } -internal class KtDiagnosticConverter(private val conversions: Map, KtFirDiagnosticCreator>) { +internal class KtDiagnosticConverter(private val conversions: Map, KtFirDiagnosticCreator>) { fun convert(analysisSession: KtFirAnalysisSession, diagnostic: FirDiagnostic<*>): KtFirDiagnostic<*> { val creator = conversions[diagnostic.factory] ?: error("No conversion was found for ${diagnostic.factory}") @@ -54,21 +54,21 @@ internal class KtDiagnosticConverter(private val conversions: Map, KtFirDiagnosticCreator>() + private val conversions = mutableMapOf, KtFirDiagnosticCreator>() - fun add(diagnostic: FirDiagnosticFactory0<*, *>, creator: KtFirDiagnostic0Creator) { + fun add(diagnostic: FirDiagnosticFactory0<*>, creator: KtFirDiagnostic0Creator) { conversions[diagnostic] = creator } - fun add(diagnostic: FirDiagnosticFactory1<*, *, A>, creator: KtFirDiagnostic1Creator) { + fun add(diagnostic: FirDiagnosticFactory1<*, A>, creator: KtFirDiagnostic1Creator) { conversions[diagnostic] = creator } - fun add(diagnostic: FirDiagnosticFactory2<*, *, A, B>, creator: KtFirDiagnostic2Creator) { + fun add(diagnostic: FirDiagnosticFactory2<*, A, B>, creator: KtFirDiagnostic2Creator) { conversions[diagnostic] = creator } - fun add(diagnostic: FirDiagnosticFactory3<*, *, A, B, C>, creator: KtFirDiagnostic3Creator) { + fun add(diagnostic: FirDiagnosticFactory3<*, A, B, C>, creator: KtFirDiagnostic3Creator) { conversions[diagnostic] = creator } @@ -78,4 +78,4 @@ internal class KtDiagnosticConverterBuilder private constructor() { inline fun buildConverter(init: KtDiagnosticConverterBuilder.() -> Unit) = KtDiagnosticConverterBuilder().apply(init).build() } -} \ No newline at end of file +}