[FIR] Fix some missing EXPECTED_DECLARATION_WITH_BODY

This commit is contained in:
Ivan Kochurkin
2023-07-18 23:09:57 +02:00
committed by Space Team
parent 8f4a580c17
commit 5f1e2764c3
2 changed files with 16 additions and 11 deletions
@@ -19,8 +19,19 @@ import org.jetbrains.kotlin.fir.declarations.utils.visibility
// See old FE's [DeclarationsChecker]
object FirExpectConsistencyChecker : FirBasicDeclarationChecker() {
override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
val source = declaration.source ?: return
if (source.kind is KtFakeSourceElementKind) return
val isTopLevel = context.containingDeclarations.size == 1
val isInsideClass = context.containingDeclarations.lastOrNull() is FirClass
val lastClass = context.containingDeclarations.lastOrNull() as? FirClass
val isInsideClass = lastClass != null
if (declaration is FirAnonymousInitializer) {
if (lastClass?.isExpect == true) {
reporter.reportOn(source, FirErrors.EXPECTED_DECLARATION_WITH_BODY, context)
}
return
}
if (
declaration !is FirMemberDeclaration ||
@@ -30,9 +41,6 @@ object FirExpectConsistencyChecker : FirBasicDeclarationChecker() {
return
}
val source = declaration.source ?: return
if (source.kind is KtFakeSourceElementKind) return
if (declaration is FirConstructor) {
if (!declaration.isPrimary) {
val delegatedConstructorSource = declaration.delegatedConstructor?.source
@@ -40,14 +48,11 @@ object FirExpectConsistencyChecker : FirBasicDeclarationChecker() {
reporter.reportOn(delegatedConstructorSource, FirErrors.EXPECTED_CLASS_CONSTRUCTOR_DELEGATION_CALL, context)
}
}
return
}
if (Visibilities.isPrivate(declaration.visibility)) {
} else if (Visibilities.isPrivate(declaration.visibility)) {
reporter.reportOn(source, FirErrors.EXPECTED_PRIVATE_DECLARATION, context)
}
if (declaration is FirSimpleFunction && declaration.hasBody) {
if (declaration is FirFunction && declaration.hasBody) {
reporter.reportOn(source, FirErrors.EXPECTED_DECLARATION_WITH_BODY, context)
}
}
@@ -5,11 +5,11 @@
val constructorProperty: String,
constructorParameter: String
) {
init {
<!EXPECTED_DECLARATION_WITH_BODY!>init<!> {
"no"
}
constructor(s: String) {
<!EXPECTED_DECLARATION_WITH_BODY!>constructor(s: String)<!> {
"no"
}