[FIR] Fix some disappeared AMBIGUOUS_ANONYMOUS_TYPE_INFERRED

^KT-59932

Merge-request: KT-MR-12312
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-09-22 07:47:12 +00:00
committed by Space Team
parent fa34021a04
commit 70ea0de2db
2 changed files with 10 additions and 7 deletions
@@ -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(
@@ -38,8 +38,8 @@ class Foo(val myTrait: MyTrait) {
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public val publicProperty<!> = object : MyClass(), MyTrait {}
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>val propertyWithGetter<!>
get() = object: MyClass(), MyTrait {}
val propertyWithGetter
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>get()<!> = object: MyClass(), MyTrait {}
private val privateDelegateProperty by lazy { object : MyClass(), MyTrait {} }
val publicDelegatePropertyWithSingleSuperType by lazy {