Skip to content

Commit 5fe149d

Browse files
committed
SIL: disable invalid test case
Noncopyable types cannot be substituted for an unconstrained generic parameter, as it will have a Copyable conformance on it. This test should be refactored to use a concrete function like `transferMoveOnlyStruct` instead of the generic. But its not obvious to me the best way to update this test.
1 parent e913712 commit 5fe149d

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

test/Concurrency/transfernonsendable_instruction_matching.sil

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -176,25 +176,26 @@ bb0:
176176
return %9999 : $()
177177
}
178178

179-
sil [ossa] @mark_unresolved_noncopyable_value_test : $@convention(thin) @async () -> () {
180-
bb0:
181-
%0 = function_ref @constructMoveOnlyStruct : $@convention(thin) () -> @owned NonSendableMoveOnlyStruct
182-
%1 = apply %0() : $@convention(thin) () -> @owned NonSendableMoveOnlyStruct
183-
%box = alloc_box ${ var NonSendableMoveOnlyStruct }
184-
%project = project_box %box : ${ var NonSendableMoveOnlyStruct }, 0
185-
%unresolved = mark_unresolved_non_copyable_value [consumable_and_assignable] %project : $*NonSendableMoveOnlyStruct
186-
store %1 to [init] %unresolved : $*NonSendableMoveOnlyStruct
187-
188-
%4 = function_ref @transferIndirect : $@convention(thin) @async <τ_0_0> (@in_guaranteed τ_0_0) -> ()
189-
apply [caller_isolation=nonisolated] [callee_isolation=global_actor] %4<NonSendableMoveOnlyStruct>(%unresolved) : $@convention(thin) @async <τ_0_0> (@in_guaranteed τ_0_0) -> ()
190-
// expected-warning @-1 {{transferring value of non-Sendable type 'NonSendableMoveOnlyStruct' from nonisolated context to global actor '<null>'-isolated context; later accesses could race}}
191-
%5 = function_ref @useIndirect : $@convention(thin) <τ_0_0> (@in_guaranteed τ_0_0) -> ()
192-
apply %5<NonSendableMoveOnlyStruct>(%unresolved) : $@convention(thin) <τ_0_0> (@in_guaranteed τ_0_0) -> ()
193-
// expected-note @-1 {{access here could race}}
194-
destroy_value %box : ${ var NonSendableMoveOnlyStruct }
195-
%9999 = tuple ()
196-
return %9999 : $()
197-
}
179+
// sil [ossa] @mark_unresolved_noncopyable_value_test : $@convention(thin) @async () -> () {
180+
// bb0:
181+
// %0 = function_ref @constructMoveOnlyStruct : $@convention(thin) () -> @owned NonSendableMoveOnlyStruct
182+
// %1 = apply %0() : $@convention(thin) () -> @owned NonSendableMoveOnlyStruct
183+
// %box = alloc_box ${ var NonSendableMoveOnlyStruct }
184+
// %project = project_box %box : ${ var NonSendableMoveOnlyStruct }, 0
185+
// %unresolved = mark_unresolved_non_copyable_value [consumable_and_assignable] %project : $*NonSendableMoveOnlyStruct
186+
// store %1 to [init] %unresolved : $*NonSendableMoveOnlyStruct
187+
188+
// FIXME: rdar://122773845 substitution replacement type 'NonSendableMoveOnlyStruct' does not conform to protocol 'Copyable'
189+
// %4 = function_ref @transferIndirect : $@convention(thin) @async <τ_0_0> (@in_guaranteed τ_0_0) -> ()
190+
// apply [caller_isolation=nonisolated] [callee_isolation=global_actor] %4<NonSendableMoveOnlyStruct>(%unresolved) : $@convention(thin) @async <τ_0_0> (@in_guaranteed τ_0_0) -> ()
191+
// x-warning @-1 {{transferring value of non-Sendable type 'NonSendableMoveOnlyStruct' from nonisolated context to global actor '<null>'-isolated context; later accesses could race}}
192+
// %5 = function_ref @useIndirect : $@convention(thin) <τ_0_0> (@in_guaranteed τ_0_0) -> ()
193+
// apply %5<NonSendableMoveOnlyStruct>(%unresolved) : $@convention(thin) <τ_0_0> (@in_guaranteed τ_0_0) -> ()
194+
// x-note @-1 {{access here could race}}
195+
// destroy_value %box : ${ var NonSendableMoveOnlyStruct }
196+
// %9999 = tuple ()
197+
// return %9999 : $()
198+
// }
198199

199200
sil [ossa] @mark_unresolved_reference_binding_test : $@convention(thin) @async () -> () {
200201
bb0:
@@ -1646,4 +1647,4 @@ bb0(%arg : $Builtin.Word):
16461647
destroy_value %b : $Builtin.BridgeObject
16471648
%9999 = tuple ()
16481649
return %9999 : $()
1649-
}
1650+
}

0 commit comments

Comments
 (0)