Skip to content

Instantly share code, notes, and snippets.

@ktoso
Created March 18, 2024 21:15
Show Gist options
  • Save ktoso/92d39ddf7d3ff732ea53ce675b63d70e to your computer and use it in GitHub Desktop.
Save ktoso/92d39ddf7d3ff732ea53ce675b63d70e to your computer and use it in GitHub Desktop.
[SILGenThunk.cpp:129](emitDistributedThunkForDecl) VAR THUNK IS:
(accessor_decl implicit <anonymous @ 0x1591115a0> interface type="<ActorSystem where ActorSystem : DistributedActorSystem, ActorSystem.SerializationRequirement == any Decodable & Encodable> (Worker<ActorSystem>) -> () async throws -> String" access=internal final captures=(<generic> ) nonisolated distributed_thunk _distributed_get for="distributedVariable"
(parameter "self" interface type="Worker<ActorSystem>" known_to_be_local)
(parameter_list)
(brace_stmt implicit
(if_stmt implicit
(conditions=array
(call_expr implicit type="Bool" nothrow isolation_crossing="none"
(declref_expr implicit type="(AnyObject) -> Bool" decl="Distributed.(file).__isRemoteActor" function_ref=single)
(argument_list implicit
(argument
(erasure_expr implicit type="AnyObject"
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.<anonymous>.self known-to-be-local" function_ref=unapplied))))))
(brace_stmt implicit
(pattern_binding_decl implicit
(pattern_named implicit type="ActorSystem" "system")
(original_init=unresolved_dot_expr implicit type="<null>" field="actorSystem" function_ref=unapplied
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.<anonymous>.self known-to-be-local" function_ref=unapplied))
(processed_init=member_ref_expr implicit type="ActorSystem" decl="main.(file).Worker.actorSystem [with (substitution_map generic_signature=<ActorSystem where ActorSystem : DistributedActorSystem, ActorSystem.SerializationRequirement == any Decodable & Encodable> ActorSystem -> ActorSystem)]"
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.<anonymous>.self known-to-be-local" function_ref=unapplied)))
(var_decl implicit "system" interface type="ActorSystem" access=private let readImpl=stored immutable)
(pattern_binding_decl implicit
(pattern_named implicit type="ActorSystem.InvocationEncoder" "invocation")
(original_init=call_expr implicit type="ActorSystem.InvocationEncoder" nothrow isolation_crossing="none"
(dot_syntax_call_expr implicit type="() -> ActorSystem.InvocationEncoder" nothrow isolation_crossing="none"
(declref_expr implicit type="(ActorSystem) -> () -> ActorSystem.InvocationEncoder" decl="Distributed.(file).DistributedActorSystem.makeInvocationEncoder() [with (substitution_map generic_signature=<Self where Self : DistributedActorSystem> Self -> ActorSystem)]" function_ref=single)
(argument_list implicit
(argument
(declref_expr implicit type="ActorSystem" decl="main.(file).Worker.<anonymous>.system" function_ref=unapplied))))
(argument_list implicit))
(processed_init=call_expr implicit type="ActorSystem.InvocationEncoder" nothrow isolation_crossing="none"
(dot_syntax_call_expr implicit type="() -> ActorSystem.InvocationEncoder" nothrow isolation_crossing="none"
(declref_expr implicit type="(ActorSystem) -> () -> ActorSystem.InvocationEncoder" decl="Distributed.(file).DistributedActorSystem.makeInvocationEncoder() [with (substitution_map generic_signature=<Self where Self : DistributedActorSystem> Self -> ActorSystem)]" function_ref=single)
(argument_list implicit
(argument
(declref_expr implicit type="ActorSystem" decl="main.(file).Worker.<anonymous>.system" function_ref=unapplied))))
(argument_list implicit)))
(var_decl implicit "invocation" interface type="ActorSystem.InvocationEncoder" access=private readImpl=stored writeImpl=stored readWriteImpl=stored)
(try_expr implicit type="()"
(call_expr implicit type="()" throws isolation_crossing="none"
(dot_syntax_call_expr implicit type="(ActorSystem.Type) throws -> ()" nothrow isolation_crossing="none"
(declref_expr implicit type="(inout ActorSystem.InvocationEncoder) -> (ActorSystem.Type) throws -> ()" decl="Distributed.(file).DistributedTargetInvocationEncoder.recordGenericSubstitution [with (substitution_map generic_signature=<Self, T where Self : DistributedTargetInvocationEncoder> Self -> ActorSystem.InvocationEncoder T -> ActorSystem)]" function_ref=single)
(argument_list implicit
(argument inout
(inout_expr implicit type="inout ActorSystem.InvocationEncoder"
(declref_expr implicit type="@lvalue ActorSystem.InvocationEncoder" decl="main.(file).Worker.<anonymous>.invocation" function_ref=unapplied)))))
(argument_list implicit
(argument
(dot_self_expr type="ActorSystem.Type"
(type_expr implicit type="ActorSystem.Type" null_typerepr))))))
(try_expr implicit type="()"
(call_expr implicit type="()" throws isolation_crossing="none"
(dot_syntax_call_expr implicit type="(String.Type) throws -> ()" nothrow isolation_crossing="none"
(declref_expr implicit type="(inout ActorSystem.InvocationEncoder) -> (String.Type) throws -> ()" decl="Distributed.(file).DistributedTargetInvocationEncoder.recordReturnType [with (substitution_map generic_signature=<Self, R where Self : DistributedTargetInvocationEncoder> Self -> ActorSystem.InvocationEncoder R -> String)]" function_ref=single)
(argument_list implicit
(argument inout
(inout_expr implicit type="inout ActorSystem.InvocationEncoder"
(declref_expr implicit type="@lvalue ActorSystem.InvocationEncoder" decl="main.(file).Worker.<anonymous>.invocation" function_ref=unapplied)))))
(argument_list implicit
(argument
(dot_self_expr type="String.Type"
(type_expr implicit type="String.Type" null_typerepr))))))
(try_expr implicit type="()"
(call_expr implicit type="()" throws isolation_crossing="none"
(dot_syntax_call_expr implicit type="() throws -> ()" nothrow isolation_crossing="none"
(declref_expr implicit type="(inout ActorSystem.InvocationEncoder) -> () throws -> ()" decl="Distributed.(file).DistributedTargetInvocationEncoder.doneRecording() [with (substitution_map generic_signature=<Self where Self : DistributedTargetInvocationEncoder> Self -> ActorSystem.InvocationEncoder)]" function_ref=single)
(argument_list implicit
(argument inout
(inout_expr implicit type="inout ActorSystem.InvocationEncoder"
(declref_expr implicit type="@lvalue ActorSystem.InvocationEncoder" decl="main.(file).Worker.<anonymous>.invocation" function_ref=unapplied)))))
(argument_list implicit)))
(pattern_binding_decl implicit
(pattern_named implicit type="RemoteCallTarget" "target")
(original_init=call_expr implicit type="RemoteCallTarget" nothrow isolation_crossing="none"
(constructor_ref_call_expr implicit type="(String) -> RemoteCallTarget" nothrow isolation_crossing="none"
(declref_expr implicit type="(RemoteCallTarget.Type) -> (String) -> RemoteCallTarget" decl="Distributed.(file).RemoteCallTarget.init(_:)" function_ref=single)
(argument_list implicit
(argument
(type_expr implicit type="RemoteCallTarget.Type" typerepr="RemoteCallTarget"))))
(argument_list implicit
(argument
(string_literal_expr implicit type="String" encoding=utf8 value="$s4main6WorkerC19distributedVariableSSyYaKFTE" builtin_initializer="Swift.(file).String extension.init(_builtinStringLiteral:utf8CodeUnitCount:isASCII:)" initializer="**NULL**"))))
(processed_init=call_expr implicit type="RemoteCallTarget" nothrow isolation_crossing="none"
(constructor_ref_call_expr implicit type="(String) -> RemoteCallTarget" nothrow isolation_crossing="none"
(declref_expr implicit type="(RemoteCallTarget.Type) -> (String) -> RemoteCallTarget" decl="Distributed.(file).RemoteCallTarget.init(_:)" function_ref=single)
(argument_list implicit
(argument
(type_expr implicit type="RemoteCallTarget.Type" typerepr="RemoteCallTarget"))))
(argument_list implicit
(argument
(string_literal_expr implicit type="String" encoding=utf8 value="$s4main6WorkerC19distributedVariableSSyYaKFTE" builtin_initializer="Swift.(file).String extension.init(_builtinStringLiteral:utf8CodeUnitCount:isASCII:)" initializer="**NULL**")))))
(var_decl implicit "target" interface type="RemoteCallTarget" access=private let readImpl=stored immutable)
(return_stmt implicit
(try_expr implicit type="String"
(await_expr implicit type="String"
(call_expr implicit type="String" throws isolation_crossing="none"
(dot_syntax_call_expr implicit type="(Worker<ActorSystem>, RemoteCallTarget, inout ActorSystem.InvocationEncoder, Never.Type, String.Type) async throws -> String" nothrow isolation_crossing="none"
(declref_expr implicit type="(ActorSystem) -> (Worker<ActorSystem>, RemoteCallTarget, inout ActorSystem.InvocationEncoder, Never.Type, String.Type) async throws -> String" decl="Distributed.(file).DistributedActorSystem.remoteCall(on:target:invocation:throwing:returning:) [with (substitution_map generic_signature=<Self, Act, Err, Res where Self : DistributedActorSystem, Act : DistributedActor, Err : Error, Self.ActorID == Act.ID> Self -> ActorSystem Act -> Worker<ActorSystem> Err -> Never Res -> String)]" function_ref=single)
(argument_list implicit
(argument
(declref_expr implicit type="ActorSystem" decl="main.(file).Worker.<anonymous>.system" function_ref=unapplied))))
(argument_list implicit labels="on:target:invocation:throwing:returning:"
(argument label="on"
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.<anonymous>.self known-to-be-local" function_ref=unapplied))
(argument label="target"
(declref_expr implicit type="RemoteCallTarget" decl="main.(file).Worker.<anonymous>.target" function_ref=unapplied))
(argument label="invocation" inout
(inout_expr implicit type="inout ActorSystem.InvocationEncoder"
(declref_expr implicit type="@lvalue ActorSystem.InvocationEncoder" decl="main.(file).Worker.<anonymous>.invocation" function_ref=unapplied)))
(argument label="throwing"
(dot_self_expr type="Never.Type"
(type_expr implicit type="Never.Type" typerepr="Never")))
(argument label="returning"
(dot_self_expr type="String.Type"
(type_expr implicit type="String.Type" null_typerepr)))))))))
(brace_stmt implicit
(return_stmt implicit
(await_expr implicit type="String"
(member_ref_expr implicit type="String" decl="main.(file).Worker.distributedVariable@/Users/ktoso/code/swift-project/swift/test/Distributed/Runtime/distributed_actor_localSystem_distributed_property.swift:18:19 [with (substitution_map generic_signature=<ActorSystem where ActorSystem : DistributedActorSystem, ActorSystem.SerializationRequirement == any Decodable & Encodable> ActorSystem -> ActorSystem)]"
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.<anonymous>.self known-to-be-local" function_ref=unapplied))))))))
Assertion failed: (ThrowDest.isValid() && "calling emitThrow with invalid throw destination!"), function emitThrow, file SILGenStmt.cpp, line 1536.
(func_decl implicit "distributedMethod()" interface type="<ActorSystem where ActorSystem : DistributedActorSystem, ActorSystem.SerializationRequirement == any Decodable & Encodable> (Worker<ActorSystem>) -> () async throws -> String" access=internal final captures=(<generic> ) nonisolated distributed_thunk
(parameter "self" interface type="Worker<ActorSystem>" known_to_be_local)
(parameter_list)
(brace_stmt implicit
(if_stmt implicit
(conditions=array
(call_expr implicit type="Bool" nothrow isolation_crossing="none"
(declref_expr implicit type="(AnyObject) -> Bool" decl="Distributed.(file).__isRemoteActor" function_ref=single)
(argument_list implicit
(argument
(erasure_expr implicit type="AnyObject"
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.distributedMethod().self known-to-be-local" function_ref=unapplied))))))
(brace_stmt implicit
(pattern_binding_decl implicit
(pattern_named implicit type="ActorSystem" "system")
(original_init=unresolved_dot_expr implicit type="<null>" field="actorSystem" function_ref=unapplied
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.distributedMethod().self known-to-be-local" function_ref=unapplied))
(processed_init=member_ref_expr implicit type="ActorSystem" decl="main.(file).Worker.actorSystem [with (substitution_map generic_signature=<ActorSystem where ActorSystem : DistributedActorSystem, ActorSystem.SerializationRequirement == any Decodable & Encodable> ActorSystem -> ActorSystem)]"
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.distributedMethod().self known-to-be-local" function_ref=unapplied)))
(var_decl implicit "system" interface type="ActorSystem" access=private let readImpl=stored immutable)
(pattern_binding_decl implicit
(pattern_named implicit type="ActorSystem.InvocationEncoder" "invocation")
(original_init=call_expr implicit type="ActorSystem.InvocationEncoder" nothrow isolation_crossing="none"
(dot_syntax_call_expr implicit type="() -> ActorSystem.InvocationEncoder" nothrow isolation_crossing="none"
(declref_expr implicit type="(ActorSystem) -> () -> ActorSystem.InvocationEncoder" decl="Distributed.(file).DistributedActorSystem.makeInvocationEncoder() [with (substitution_map generic_signature=<Self where Self : DistributedActorSystem> Self -> ActorSystem)]" function_ref=single)
(argument_list implicit
(argument
(declref_expr implicit type="ActorSystem" decl="main.(file).Worker.distributedMethod().system" function_ref=unapplied))))
(argument_list implicit))
(processed_init=call_expr implicit type="ActorSystem.InvocationEncoder" nothrow isolation_crossing="none"
(dot_syntax_call_expr implicit type="() -> ActorSystem.InvocationEncoder" nothrow isolation_crossing="none"
(declref_expr implicit type="(ActorSystem) -> () -> ActorSystem.InvocationEncoder" decl="Distributed.(file).DistributedActorSystem.makeInvocationEncoder() [with (substitution_map generic_signature=<Self where Self : DistributedActorSystem> Self -> ActorSystem)]" function_ref=single)
(argument_list implicit
(argument
(declref_expr implicit type="ActorSystem" decl="main.(file).Worker.distributedMethod().system" function_ref=unapplied))))
(argument_list implicit)))
(var_decl implicit "invocation" interface type="ActorSystem.InvocationEncoder" access=private readImpl=stored writeImpl=stored readWriteImpl=stored)
(try_expr implicit type="()"
(call_expr implicit type="()" throws isolation_crossing="none"
(dot_syntax_call_expr implicit type="(ActorSystem.Type) throws -> ()" nothrow isolation_crossing="none"
(declref_expr implicit type="(inout ActorSystem.InvocationEncoder) -> (ActorSystem.Type) throws -> ()" decl="Distributed.(file).DistributedTargetInvocationEncoder.recordGenericSubstitution [with (substitution_map generic_signature=<Self, T where Self : DistributedTargetInvocationEncoder> Self -> ActorSystem.InvocationEncoder T -> ActorSystem)]" function_ref=single)
(argument_list implicit
(argument inout
(inout_expr implicit type="inout ActorSystem.InvocationEncoder"
(declref_expr implicit type="@lvalue ActorSystem.InvocationEncoder" decl="main.(file).Worker.distributedMethod().invocation" function_ref=unapplied)))))
(argument_list implicit
(argument
(dot_self_expr type="ActorSystem.Type"
(type_expr implicit type="ActorSystem.Type" null_typerepr))))))
(try_expr implicit type="()"
(call_expr implicit type="()" throws isolation_crossing="none"
(dot_syntax_call_expr implicit type="(String.Type) throws -> ()" nothrow isolation_crossing="none"
(declref_expr implicit type="(inout ActorSystem.InvocationEncoder) -> (String.Type) throws -> ()" decl="Distributed.(file).DistributedTargetInvocationEncoder.recordReturnType [with (substitution_map generic_signature=<Self, R where Self : DistributedTargetInvocationEncoder> Self -> ActorSystem.InvocationEncoder R -> String)]" function_ref=single)
(argument_list implicit
(argument inout
(inout_expr implicit type="inout ActorSystem.InvocationEncoder"
(declref_expr implicit type="@lvalue ActorSystem.InvocationEncoder" decl="main.(file).Worker.distributedMethod().invocation" function_ref=unapplied)))))
(argument_list implicit
(argument
(dot_self_expr type="String.Type"
(type_expr implicit type="String.Type" null_typerepr))))))
(try_expr implicit type="()"
(call_expr implicit type="()" throws isolation_crossing="none"
(dot_syntax_call_expr implicit type="() throws -> ()" nothrow isolation_crossing="none"
(declref_expr implicit type="(inout ActorSystem.InvocationEncoder) -> () throws -> ()" decl="Distributed.(file).DistributedTargetInvocationEncoder.doneRecording() [with (substitution_map generic_signature=<Self where Self : DistributedTargetInvocationEncoder> Self -> ActorSystem.InvocationEncoder)]" function_ref=single)
(argument_list implicit
(argument inout
(inout_expr implicit type="inout ActorSystem.InvocationEncoder"
(declref_expr implicit type="@lvalue ActorSystem.InvocationEncoder" decl="main.(file).Worker.distributedMethod().invocation" function_ref=unapplied)))))
(argument_list implicit)))
(pattern_binding_decl implicit
(pattern_named implicit type="RemoteCallTarget" "target")
(original_init=call_expr implicit type="RemoteCallTarget" nothrow isolation_crossing="none"
(constructor_ref_call_expr implicit type="(String) -> RemoteCallTarget" nothrow isolation_crossing="none"
(declref_expr implicit type="(RemoteCallTarget.Type) -> (String) -> RemoteCallTarget" decl="Distributed.(file).RemoteCallTarget.init(_:)" function_ref=single)
(argument_list implicit
(argument
(type_expr implicit type="RemoteCallTarget.Type" typerepr="RemoteCallTarget"))))
(argument_list implicit
(argument
(string_literal_expr implicit type="String" encoding=utf8 value="$s4main6WorkerC17distributedMethodSSyYaKFTE" builtin_initializer="Swift.(file).String extension.init(_builtinStringLiteral:utf8CodeUnitCount:isASCII:)" initializer="**NULL**"))))
(processed_init=call_expr implicit type="RemoteCallTarget" nothrow isolation_crossing="none"
(constructor_ref_call_expr implicit type="(String) -> RemoteCallTarget" nothrow isolation_crossing="none"
(declref_expr implicit type="(RemoteCallTarget.Type) -> (String) -> RemoteCallTarget" decl="Distributed.(file).RemoteCallTarget.init(_:)" function_ref=single)
(argument_list implicit
(argument
(type_expr implicit type="RemoteCallTarget.Type" typerepr="RemoteCallTarget"))))
(argument_list implicit
(argument
(string_literal_expr implicit type="String" encoding=utf8 value="$s4main6WorkerC17distributedMethodSSyYaKFTE" builtin_initializer="Swift.(file).String extension.init(_builtinStringLiteral:utf8CodeUnitCount:isASCII:)" initializer="**NULL**")))))
(var_decl implicit "target" interface type="RemoteCallTarget" access=private let readImpl=stored immutable)
(return_stmt implicit
(try_expr implicit type="String"
(await_expr implicit type="String"
(call_expr implicit type="String" throws isolation_crossing="none"
(dot_syntax_call_expr implicit type="(Worker<ActorSystem>, RemoteCallTarget, inout ActorSystem.InvocationEncoder, Never.Type, String.Type) async throws -> String" nothrow isolation_crossing="none"
(declref_expr implicit type="(ActorSystem) -> (Worker<ActorSystem>, RemoteCallTarget, inout ActorSystem.InvocationEncoder, Never.Type, String.Type) async throws -> String" decl="Distributed.(file).DistributedActorSystem.remoteCall(on:target:invocation:throwing:returning:) [with (substitution_map generic_signature=<Self, Act, Err, Res where Self : DistributedActorSystem, Act : DistributedActor, Err : Error, Self.ActorID == Act.ID> Self -> ActorSystem Act -> Worker<ActorSystem> Err -> Never Res -> String)]" function_ref=single)
(argument_list implicit
(argument
(declref_expr implicit type="ActorSystem" decl="main.(file).Worker.distributedMethod().system" function_ref=unapplied))))
(argument_list implicit labels="on:target:invocation:throwing:returning:"
(argument label="on"
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.distributedMethod().self known-to-be-local" function_ref=unapplied))
(argument label="target"
(declref_expr implicit type="RemoteCallTarget" decl="main.(file).Worker.distributedMethod().target" function_ref=unapplied))
(argument label="invocation" inout
(inout_expr implicit type="inout ActorSystem.InvocationEncoder"
(declref_expr implicit type="@lvalue ActorSystem.InvocationEncoder" decl="main.(file).Worker.distributedMethod().invocation" function_ref=unapplied)))
(argument label="throwing"
(dot_self_expr type="Never.Type"
(type_expr implicit type="Never.Type" typerepr="Never")))
(argument label="returning"
(dot_self_expr type="String.Type"
(type_expr implicit type="String.Type" null_typerepr)))))))))
(brace_stmt implicit
(return_stmt implicit
(await_expr implicit type="String"
(call_expr implicit type="String" nothrow isolation_crossing="{caller='nonisolated', callee='actor-isolated to instance of distributed actor Worker'}"
(dot_syntax_call_expr implicit type="() -> String" nothrow isolation_crossing="none"
(declref_expr implicit type="(isolated Worker<ActorSystem>) -> () -> String" decl="main.(file).Worker.distributedMethod()@/Users/ktoso/code/swift-project/swift/test/Distributed/Runtime/distributed_actor_localSystem_distributed_property.swift:25:20 [with (substitution_map generic_signature=<ActorSystem where ActorSystem : DistributedActorSystem, ActorSystem.SerializationRequirement == any Decodable & Encodable> ActorSystem -> ActorSystem)]" function_ref=single)
(argument_list implicit
(argument
(declref_expr implicit type="Worker<ActorSystem>" decl="main.(file).Worker.distributedMethod().self known-to-be-local" function_ref=unapplied))))
(argument_list implicit))))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment