Add an explicit diagnostic for when expect/actual modifiers are used in
an unsupported compilation ^KT-31281
This commit is contained in:
committed by
Space Team
parent
cab0487f98
commit
e12e78d96b
+2
@@ -1170,6 +1170,8 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
||||
}
|
||||
|
||||
val ACTUAL_MISSING by error<KtNamedDeclaration>(PositioningStrategy.ACTUAL_DECLARATION_NAME)
|
||||
|
||||
val NOT_A_MULTIPLATFORM_COMPILATION by error<PsiElement>()
|
||||
}
|
||||
|
||||
val DESTRUCTING_DECLARATION by object : DiagnosticGroup("Destructuring declaration") {
|
||||
|
||||
@@ -625,6 +625,7 @@ object FirErrors {
|
||||
val AMBIGUOUS_EXPECTS by error2<KtNamedDeclaration, FirBasedSymbol<*>, Collection<FirModuleData>>(SourceElementPositioningStrategies.INCOMPATIBLE_DECLARATION)
|
||||
val NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS by error2<KtNamedDeclaration, FirBasedSymbol<*>, List<Pair<FirBasedSymbol<*>, Map<Incompatible<FirBasedSymbol<*>>, Collection<FirBasedSymbol<*>>>>>>(SourceElementPositioningStrategies.ACTUAL_DECLARATION_NAME)
|
||||
val ACTUAL_MISSING by error0<KtNamedDeclaration>(SourceElementPositioningStrategies.ACTUAL_DECLARATION_NAME)
|
||||
val NOT_A_MULTIPLATFORM_COMPILATION by error0<PsiElement>()
|
||||
|
||||
// Destructuring declaration
|
||||
val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error0<KtDestructuringDeclaration>()
|
||||
|
||||
+1
-2
@@ -41,8 +41,7 @@ object FirExpectActualDeclarationChecker : FirBasicDeclarationChecker() {
|
||||
if ((declaration.isExpect || declaration.isActual) && containsExpectOrActualModifier(declaration)) {
|
||||
reporter.reportOn(
|
||||
declaration.source,
|
||||
FirErrors.UNSUPPORTED_FEATURE,
|
||||
LanguageFeature.MultiPlatformProjects to context.session.languageVersionSettings,
|
||||
FirErrors.NOT_A_MULTIPLATFORM_COMPILATION,
|
||||
context,
|
||||
positioningStrategy = SourceElementPositioningStrategies.EXPECT_ACTUAL_MODIFIER
|
||||
)
|
||||
|
||||
+2
@@ -343,6 +343,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_STDLIB_CL
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_VAL_ON_ANNOTATION_PARAMETER
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.NOT_A_MULTIPLATFORM_COMPILATION
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MULTIPLE_ARGUMENTS_APPLICABLE_FOR_CONTEXT_RECEIVER
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MULTIPLE_VARARG_PARAMETERS
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MULTI_FIELD_VALUE_CLASS_PRIMARY_CONSTRUCTOR_DEFAULT_PARAMETER
|
||||
@@ -1843,6 +1844,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
FirIncompatibleExpectedActualClassScopesRenderer.TEXT
|
||||
)
|
||||
map.put(ACTUAL_MISSING, "Declaration must be marked with 'actual'")
|
||||
map.put(NOT_A_MULTIPLATFORM_COMPILATION, "'expect' and 'actual' declarations can be used only in multiplatform projects. Learn more about Kotlin Multiplatform: https://kotl.in/multiplatform-setup")
|
||||
|
||||
// Destructuring declaration
|
||||
map.put(INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION, "Initializer required for destructuring declaration")
|
||||
|
||||
Reference in New Issue
Block a user