Skip to content

Commit 6ef0a93

Browse files
authored
Merge pull request #79381 from ktoso/wip-correct-metadata-lookup-result-type
[Distributed] Improve getting return type metadata for distributed invocations
2 parents afb4d13 + d8f89bd commit 6ef0a93

File tree

3 files changed

+1104
-5
lines changed

3 files changed

+1104
-5
lines changed

stdlib/public/runtime/MetadataLookup.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2945,8 +2945,12 @@ swift_func_getReturnTypeInfo(const char *typeNameStart, size_t typeNameLength,
29452945

29462946
SubstGenericParametersFromMetadata substFn(genericEnv, genericArguments);
29472947

2948-
DecodedMetadataBuilder builder(
2949-
demangler,
2948+
auto request = MetadataRequest(MetadataState::Complete);
2949+
2950+
NodePointer nodePointer = resultType->getFirstChild();
2951+
auto typeInfoOrErr = swift_getTypeByMangledNode(
2952+
request, demangler, nodePointer,
2953+
/*arguments=*/genericArguments,
29502954
/*substGenericParam=*/
29512955
[&substFn](unsigned depth, unsigned index) {
29522956
return substFn.getMetadata(depth, index).Ptr;
@@ -2956,9 +2960,12 @@ swift_func_getReturnTypeInfo(const char *typeNameStart, size_t typeNameLength,
29562960
return substFn.getWitnessTable(type, index);
29572961
});
29582962

2959-
TypeDecoder<DecodedMetadataBuilder> decoder(builder);
2963+
if (typeInfoOrErr.isError()) {
2964+
return nullptr;
2965+
}
29602966

2961-
return decodeType(decoder, resultType->getFirstChild());
2967+
auto typeInfo = typeInfoOrErr.getType();
2968+
return typeInfo.getMetadata();
29622969
}
29632970

29642971
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_SPI

test/Distributed/Inputs/FakeDistributedActorSystems.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ public final class FakeInvocationDecoder: DistributedTargetInvocationDecoder {
459459

460460
var argumentIndex: Int = 0
461461

462-
fileprivate init(
462+
public init(
463463
args: [Any],
464464
substitutions: [Any.Type] = [],
465465
returnType: Any.Type? = nil,

0 commit comments

Comments
 (0)