Filter out invisible fakes in KClass.properties
A user will rarely need those at the moment, and there's currently no other way to let him filter out them by himself
This commit is contained in:
+6
@@ -0,0 +1,6 @@
|
|||||||
|
open class A(private val p: Int)
|
||||||
|
class B : A(42)
|
||||||
|
|
||||||
|
fun box() =
|
||||||
|
if (B::class.properties.isEmpty()) "OK"
|
||||||
|
else "Fail: invisible fake overrides should not appear in KClass.properties"
|
||||||
+6
@@ -2890,6 +2890,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
|
|||||||
doTestWithStdlib(fileName);
|
doTestWithStdlib(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("privateFakeOverrideFromSuperclass.kt")
|
||||||
|
public void testPrivateFakeOverrideFromSuperclass() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/properties/privateFakeOverrideFromSuperclass.kt");
|
||||||
|
doTestWithStdlib(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleGetProperties.kt")
|
@TestMetadata("simpleGetProperties.kt")
|
||||||
public void testSimpleGetProperties() throws Exception {
|
public void testSimpleGetProperties() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/properties/simpleGetProperties.kt");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/properties/simpleGetProperties.kt");
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package kotlin.reflect.jvm.internal
|
package kotlin.reflect.jvm.internal
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.findClassAcrossModuleDependencies
|
import org.jetbrains.kotlin.serialization.deserialization.findClassAcrossModuleDependencies
|
||||||
import kotlin.reflect.*
|
import kotlin.reflect.*
|
||||||
@@ -66,7 +67,8 @@ class KClassImpl<T>(override val jClass: Class<T>) : KCallableContainerImpl(), K
|
|||||||
.filterIsInstance<PropertyDescriptor>()
|
.filterIsInstance<PropertyDescriptor>()
|
||||||
.filter { descriptor ->
|
.filter { descriptor ->
|
||||||
(descriptor.getExtensionReceiverParameter() != null) == extension &&
|
(descriptor.getExtensionReceiverParameter() != null) == extension &&
|
||||||
(descriptor.getKind().isReal() || !declared)
|
(descriptor.getKind().isReal() || !declared) &&
|
||||||
|
descriptor.getVisibility() != Visibilities.INVISIBLE_FAKE
|
||||||
}
|
}
|
||||||
.map(create)
|
.map(create)
|
||||||
.toList()
|
.toList()
|
||||||
|
|||||||
Reference in New Issue
Block a user