[FIR] Fix incorrect work of K2 expect-actual matcher when actual is Java
...field, which is fake override. This was failing in Stdlib with `expect HashMap` + actual typealias to `java.util.HashMap`. ^KT-63624 Fixed
This commit is contained in:
committed by
Space Team
parent
3d2a37ee41
commit
ee1ee965a1
+1
-1
@@ -437,7 +437,7 @@ class FirExpectActualMatchingContextImpl private constructor(
|
|||||||
get() = asSymbol().rawStatus.hasStableParameterNames
|
get() = asSymbol().rawStatus.hasStableParameterNames
|
||||||
|
|
||||||
override val CallableSymbolMarker.isJavaField: Boolean
|
override val CallableSymbolMarker.isJavaField: Boolean
|
||||||
get() = this is FirFieldSymbol && fir.isJava
|
get() = this is FirFieldSymbol && this.fir.unwrapFakeOverrides().isJava
|
||||||
|
|
||||||
override val DeclarationSymbolMarker.annotations: List<AnnotationCallInfo>
|
override val DeclarationSymbolMarker.annotations: List<AnnotationCallInfo>
|
||||||
get() = asSymbol().resolvedAnnotationsWithArguments.map(::AnnotationCallInfoImpl)
|
get() = asSymbol().resolvedAnnotationsWithArguments.map(::AnnotationCallInfoImpl)
|
||||||
|
|||||||
Vendored
+1
-1
@@ -12,4 +12,4 @@
|
|||||||
|
|
||||||
import java.util.AbstractMap
|
import java.util.AbstractMap
|
||||||
|
|
||||||
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS, NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
|
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
|
||||||
|
|||||||
Vendored
+1
-1
@@ -12,4 +12,4 @@ public expect abstract class AbstractMutableMap<K, V> : MutableMap<K, V> {
|
|||||||
|
|
||||||
import java.util.AbstractMap
|
import java.util.AbstractMap
|
||||||
|
|
||||||
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS, NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
|
public actual abstract class <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>AbstractMutableMap<!><K, V>() : MutableMap<K, V>, AbstractMap<K, V>()
|
||||||
|
|||||||
compiler/testData/diagnostics/tests/multiplatform/java/propertyAgainstFakeOverrideOfJavaField.fir.kt
Vendored
-28
@@ -1,28 +0,0 @@
|
|||||||
// MODULE: m1-common
|
|
||||||
// FILE: common.kt
|
|
||||||
expect class MyHashMap<K, V> {
|
|
||||||
val values: Collection<V>
|
|
||||||
}
|
|
||||||
|
|
||||||
// MODULE: m2-jvm()()(m1-common)
|
|
||||||
// FILE: jvm.kt
|
|
||||||
interface MyMap<K, V> {
|
|
||||||
val values: Collection<V>
|
|
||||||
}
|
|
||||||
|
|
||||||
actual typealias <!NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS!>MyHashMap<!><K, V> = MyHashMapJava<K, V>
|
|
||||||
|
|
||||||
// FILE: MyHashMapJava.java
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
public final class MyHashMapJava<K, V> extends AbstractMyHashMap<K, V> {
|
|
||||||
// fake override of field AbstractMyHashMap.values
|
|
||||||
}
|
|
||||||
abstract class AbstractMyHashMap<K, V> implements MyMap<K, V> {
|
|
||||||
protected Collection<V> values;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection<V> getValues() {
|
|
||||||
return values;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Vendored
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// MODULE: m1-common
|
// MODULE: m1-common
|
||||||
// FILE: common.kt
|
// FILE: common.kt
|
||||||
expect class MyHashMap<K, V> {
|
expect class MyHashMap<K, V> {
|
||||||
|
|||||||
Reference in New Issue
Block a user