diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index e4677067ece..ed045526f17 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -85,6 +85,9 @@ class RawFirBuilder(val session: FirSession) { private fun KtTypeReference?.toFirOrImplicitType(): FirType = convertSafe() ?: FirImplicitTypeImpl(session, this) + private fun KtTypeReference?.toFirOrUnitType(): FirType = + convertSafe() ?: implicitUnitType + private fun KtTypeReference?.toFirOrErrorType(): FirType = convertSafe() ?: FirErrorTypeImpl(session, this, if (this == null) "Incomplete code" else "Conversion failed") @@ -111,7 +114,11 @@ class RawFirBuilder(val session: FirSession) { this, isGetter, visibility, - returnTypeReference.toFirOrImplicitType(), + if (isGetter) { + returnTypeReference.toFirOrImplicitType() + } else { + returnTypeReference.toFirOrUnitType() + }, bodyExpression.toFirBody() ) extractAnnotationsTo(firAccessor) @@ -374,7 +381,7 @@ class RawFirBuilder(val session: FirSession) { function.hasModifier(KtTokens.EXTERNAL_KEYWORD), function.receiverTypeReference.convertSafe(), if (function.hasBlockBody()) { - typeReference?.toFirOrImplicitType() ?: implicitUnitType + typeReference.toFirOrUnitType() } else { typeReference.toFirOrImplicitType() }, diff --git a/compiler/testData/fir/rawBuilder/declarations/simpleClass.txt b/compiler/testData/fir/rawBuilder/declarations/simpleClass.txt index ee174968193..81e718dca18 100644 --- a/compiler/testData/fir/rawBuilder/declarations/simpleClass.txt +++ b/compiler/testData/fir/rawBuilder/declarations/simpleClass.txt @@ -17,7 +17,7 @@ FILE: simpleClass.kt public? get(): { STUB } - public? set(value: Boolean): { + public? set(value: Boolean): kotlin.Unit { } public? final? lateinit property fau(var): Double diff --git a/compiler/testData/fir/resolve/simpleClass.txt b/compiler/testData/fir/resolve/simpleClass.txt index 02073ba1303..546162244ec 100644 --- a/compiler/testData/fir/resolve/simpleClass.txt +++ b/compiler/testData/fir/resolve/simpleClass.txt @@ -17,7 +17,7 @@ FILE: simpleClass.kt public? get(): R|error: Not supported: FirImplicitTypeImpl| { STUB } - public? set(value: R|kotlin/Boolean|): R|error: Not supported: FirImplicitTypeImpl| { + public? set(value: R|kotlin/Boolean|): R|kotlin/Unit| { } public? final? property fau(var): R|kotlin/Double|