FIR Checker: check AMBIGUOUS_ANONYMOUS_TYPE_INFERRED
Also change org.jetbrains.kotlin.fir.types.TypeUtilsKt#hideLocalTypeIfNeeded to skip approximating anonymous objects if there are multiple super type refs so that resolution behaves the same (for uncompilable code). Note that this change does not implement check for ApproximateAnonymousReturnTypesInPrivateInlineFunctions as the check is already turned on in 1.5 and will likely not needed when FIR becomes stable.
This commit is contained in:
committed by
teamcityserver
parent
6432388778
commit
76e192fc8a
+25
-25
@@ -16,15 +16,15 @@ class Foo {
|
||||
privateProperty.f2()
|
||||
}
|
||||
|
||||
protected val protectedProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>protected val protectedProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
val internalProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>val internalProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
internal val internal2Property = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val internal2Property<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
public val publicProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public val publicProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
val propertyWithGetter
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>val propertyWithGetter<!>
|
||||
get() = object: MyClass(), MyTrait {}
|
||||
|
||||
|
||||
@@ -35,13 +35,13 @@ class Foo {
|
||||
privateFunction().f2()
|
||||
}
|
||||
|
||||
protected fun protectedFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>protected fun protectedFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
fun internalFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>fun internalFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
internal fun internal2Function() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun internal2Function()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
public fun publicFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public fun publicFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
|
||||
|
||||
@@ -53,13 +53,13 @@ class Foo {
|
||||
privatePropertyInner.f2()
|
||||
}
|
||||
|
||||
protected val protectedProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>protected val protectedProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
val internalProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>val internalProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
internal val internal2Property = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val internal2Property<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
public val publicProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public val publicProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
|
||||
private fun privateFunctionInner() = object : MyClass(), MyTrait {}
|
||||
@@ -69,13 +69,13 @@ class Foo {
|
||||
privateFunctionInner().f2()
|
||||
}
|
||||
|
||||
protected fun protectedFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>protected fun protectedFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
fun internalFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>fun internalFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
internal fun internal2Function() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun internal2Function()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
public fun publicFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public fun publicFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
}
|
||||
|
||||
@@ -93,21 +93,21 @@ class Foo {
|
||||
|
||||
private val packagePrivateProperty = object : MyClass(), MyTrait {}
|
||||
|
||||
<!WRONG_MODIFIER_TARGET!>protected<!> val packageProtectedProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!><!WRONG_MODIFIER_TARGET!>protected<!> val packageProtectedProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
val packageInternalProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>val packageInternalProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
internal val packageInternal2Property = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal val packageInternal2Property<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
public val packagePublicProperty = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public val packagePublicProperty<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
<!WRONG_MODIFIER_TARGET!>protected<!> fun packageProtectedFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!><!WRONG_MODIFIER_TARGET!>protected<!> fun packageProtectedFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
fun packageInternalFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>fun packageInternalFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
internal fun packageInternal2Function() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>internal fun packageInternal2Function()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
public fun packagePublicFunction() = object : MyClass(), MyTrait {}
|
||||
<!AMBIGUOUS_ANONYMOUS_TYPE_INFERRED!>public fun packagePublicFunction()<!> = object : MyClass(), MyTrait {}
|
||||
|
||||
fun fooPackage() {
|
||||
val packageLocalVar = object : MyClass(), MyTrait {}
|
||||
|
||||
Reference in New Issue
Block a user