Fix for static - write NEED_SYNTHETIC flag on original descriptor
This commit is contained in:
+1
-1
@@ -38,7 +38,7 @@ public class NeedSyntheticCallResolverExtension implements CallResolverExtension
|
|||||||
ResolvedCallWithTrace<F> resolvedCall = results.getResultingCall();
|
ResolvedCallWithTrace<F> resolvedCall = results.getResultingCall();
|
||||||
CallableDescriptor targetDescriptor = resolvedCall.getResultingDescriptor();
|
CallableDescriptor targetDescriptor = resolvedCall.getResultingDescriptor();
|
||||||
if (needSyntheticAccessor(context.scope, targetDescriptor)) {
|
if (needSyntheticAccessor(context.scope, targetDescriptor)) {
|
||||||
context.trace.record(NEED_SYNTHETIC_ACCESSOR, (CallableMemberDescriptor) targetDescriptor, Boolean.TRUE);
|
context.trace.record(NEED_SYNTHETIC_ACCESSOR, (CallableMemberDescriptor) targetDescriptor.getOriginal(), Boolean.TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
class C() {
|
||||||
|
class object {
|
||||||
|
private fun <T> create() = C()
|
||||||
|
}
|
||||||
|
|
||||||
|
class ZZZ {
|
||||||
|
val c = C.create<String>()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
C.ZZZ().c
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -680,6 +680,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
doTest("compiler/testData/codegen/box/classes/classObjectNotOfEnum.kt");
|
doTest("compiler/testData/codegen/box/classes/classObjectNotOfEnum.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("classObjectWithPrivateGenericMember.kt")
|
||||||
|
public void testClassObjectWithPrivateGenericMember() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/box/classes/classObjectWithPrivateGenericMember.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("classObjectsWithParentClasses.kt")
|
@TestMetadata("classObjectsWithParentClasses.kt")
|
||||||
public void testClassObjectsWithParentClasses() throws Exception {
|
public void testClassObjectsWithParentClasses() throws Exception {
|
||||||
doTest("compiler/testData/codegen/box/classes/classObjectsWithParentClasses.kt");
|
doTest("compiler/testData/codegen/box/classes/classObjectsWithParentClasses.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user