diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAmbiguousAnonymousTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAmbiguousAnonymousTypeChecker.kt index 83c6662c717..666ad4c7a93 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAmbiguousAnonymousTypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAmbiguousAnonymousTypeChecker.kt @@ -40,13 +40,16 @@ object FirAmbiguousAnonymousTypeChecker : FirBasicDeclarationChecker() { * 2. `val x = ...` * 3. `val x get() = ...` */ - val type = when (declaration) { - is FirProperty -> declaration.initializer?.resolvedType ?: declaration.getter?.body?.singleExpressionType - is FirFunction -> declaration.body?.singleExpressionType + val (type, source) = when (declaration) { + is FirProperty -> { + declaration.initializer?.resolvedType?.let { it to declaration.source } + ?: (declaration.getter?.body?.singleExpressionType to declaration.getter?.source) + } + is FirFunction -> declaration.body?.singleExpressionType to declaration.source else -> error("Should not be there") - } ?: return + } - checkTypeAndArguments(type, context, reporter, declaration.source) + type?.let { checkTypeAndArguments(it, context, reporter, source) } } private fun checkTypeAndArguments( diff --git a/compiler/testData/diagnostics/tests/declarationChecks/ambiguousObjectExpressionType.fir.kt b/compiler/testData/diagnostics/tests/declarationChecks/ambiguousObjectExpressionType.fir.kt index b5dba09b804..6087886506b 100644 --- a/compiler/testData/diagnostics/tests/declarationChecks/ambiguousObjectExpressionType.fir.kt +++ b/compiler/testData/diagnostics/tests/declarationChecks/ambiguousObjectExpressionType.fir.kt @@ -38,8 +38,8 @@ class Foo(val myTrait: MyTrait) { public val publicProperty = object : MyClass(), MyTrait {} - val propertyWithGetter - get() = object: MyClass(), MyTrait {} + val propertyWithGetter + get() = object: MyClass(), MyTrait {} private val privateDelegateProperty by lazy { object : MyClass(), MyTrait {} } val publicDelegatePropertyWithSingleSuperType by lazy {