Skip to content

Commit 35a44e5

Browse files
authored
[Concurrency] Fix templated code in Task+startSynchronously.swift (#80100)
* [Concurrency] Fix templated code in Task+startSynchronously.swift rdar://147348183 The gyb code always dropped the `throws` modifier, no matter which case was being processed. * Update Task+startSynchronously.swift.gyb * Fix abi tests
1 parent cc6729a commit 35a44e5

File tree

4 files changed

+60
-68
lines changed

4 files changed

+60
-68
lines changed

stdlib/public/Concurrency/Task+startSynchronously.swift.gyb

Lines changed: 45 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -97,56 +97,48 @@ extension Task where Failure == ${FAILURE_TYPE} {
9797
}
9898
%end
9999

100-
% OPERATION_PARAM = 'operation: sending @escaping () async throws -> ChildTaskResult'
101-
% for (GROUP_TYPE, METHOD_NAMES) in [
102-
% (
103-
% 'TaskGroup',
104-
% [
105-
% 'startTaskSynchronously',
106-
% 'startTaskSynchronouslyUnlessCancelled'
107-
% ]
108-
% ),
109-
% (
110-
% 'ThrowingTaskGroup',
111-
% [
112-
% 'startTaskSynchronously',
113-
% 'startTaskSynchronouslyUnlessCancelled'
114-
% ]
115-
% ),
116-
% (
117-
% 'DiscardingTaskGroup',
118-
% [
119-
% 'startTaskSynchronously',
120-
% 'startTaskSynchronouslyUnlessCancelled'
121-
% ]
122-
% ),
123-
% (
124-
% 'ThrowingDiscardingTaskGroup',
125-
% [
126-
% 'startTaskSynchronously',
127-
% 'startTaskSynchronouslyUnlessCancelled'
128-
% ]
129-
% ),
130-
% ]:
131-
% for METHOD_NAME in METHOD_NAMES:
132-
133-
% IS_DISCARDING = 'Discarding' in GROUP_TYPE
134-
% IS_THROWING = 'Throwing' in GROUP_TYPE
135-
136-
% if not IS_THROWING:
137-
% OPERATION_PARAM = OPERATION_PARAM.replace('throws', '')
138-
% end
139-
140-
% if IS_DISCARDING:
141-
% OPERATION_PARAM = OPERATION_PARAM.replace('ChildTaskResult', 'Void')
142-
% end
143-
144-
% if IS_THROWING:
145-
% FAILURE_TYPE = 'Error'
146-
% else:
147-
% FAILURE_TYPE = 'Never'
148-
% end
149-
100+
%{
101+
GROUP_AND_OP_INFO = [
102+
(
103+
'TaskGroup',
104+
[
105+
'startTaskSynchronously',
106+
'startTaskSynchronouslyUnlessCancelled'
107+
],
108+
'',
109+
'ChildTaskResult'
110+
),
111+
(
112+
'ThrowingTaskGroup',
113+
[
114+
'startTaskSynchronously',
115+
'startTaskSynchronouslyUnlessCancelled'
116+
],
117+
'throws ',
118+
'ChildTaskResult'
119+
),
120+
(
121+
'DiscardingTaskGroup',
122+
[
123+
'startTaskSynchronously',
124+
'startTaskSynchronouslyUnlessCancelled'
125+
],
126+
'',
127+
'Void'
128+
),
129+
(
130+
'ThrowingDiscardingTaskGroup',
131+
[
132+
'startTaskSynchronously',
133+
'startTaskSynchronouslyUnlessCancelled'
134+
],
135+
'throws ',
136+
'Void'
137+
),
138+
]
139+
}%
140+
% for (GROUP_TYPE, METHOD_NAMES, THROWS, RESULT_TYPE) in GROUP_AND_OP_INFO:
141+
% for METHOD_NAME in METHOD_NAMES:
150142
@available(SwiftStdlib 6.2, *)
151143
extension ${GROUP_TYPE} {
152144

@@ -169,7 +161,7 @@ extension ${GROUP_TYPE} {
169161
public func ${METHOD_NAME}( // in ${GROUP_TYPE}
170162
name: String? = nil,
171163
priority: TaskPriority? = nil,
172-
${OPERATION_PARAM}
164+
operation: sending @escaping () async ${THROWS}-> ${RESULT_TYPE}
173165
) {
174166
let flags = taskCreateFlags(
175167
priority: priority,
@@ -191,7 +183,7 @@ extension ${GROUP_TYPE} {
191183
_startTaskSynchronously(task)
192184
}
193185
}
194-
%end # METHOD_NAMES
186+
% end # METHOD_NAMES
195187
%end # GROUP_TYPES
196188

197189
// ==== Legacy SPI -------------------------------------------------------------
@@ -249,4 +241,4 @@ extension Task where Failure == ${FAILURE_TYPE} {
249241
internal func _startTaskOnMainActor(_ task: Builtin.NativeObject)
250242

251243
@_silgen_name("swift_task_startSynchronously")
252-
internal func _startTaskSynchronously(_ task: Builtin.NativeObject)
244+
internal func _startTaskSynchronously(_ task: Builtin.NativeObject)

test/Concurrency/startSynchronouslyIsolation.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ func async() async throws {
2626
group.startTaskSynchronouslyUnlessCancelled { 2 }
2727
}
2828
await withThrowingTaskGroup(of: Int.self) { group in
29-
group.startTaskSynchronously { 1 }
30-
group.startTaskSynchronouslyUnlessCancelled { 2 }
29+
group.startTaskSynchronously { () async throws -> Int in 1 }
30+
group.startTaskSynchronouslyUnlessCancelled { () async throws -> Int in 2 }
3131
}
3232
await withDiscardingTaskGroup { group in
3333
group.startTaskSynchronously { }
3434
group.startTaskSynchronouslyUnlessCancelled { }
3535
}
3636
try await withThrowingDiscardingTaskGroup { group in
37-
group.startTaskSynchronously { }
38-
group.startTaskSynchronouslyUnlessCancelled { }
37+
group.startTaskSynchronously { () async throws -> Void in }
38+
group.startTaskSynchronouslyUnlessCancelled { () async throws -> Void in }
3939
}
40-
}
40+
}

test/abi/macOS/arm64/concurrency.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -392,12 +392,12 @@ Added: _$sScG22startTaskSynchronously4name8priority9operationySSSg_ScPSgxyYacntF
392392
Added: _$sScG37startTaskSynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgxyYacntF
393393
Added: _$sScTss5Error_pRs_rlE18startSynchronously4name8priority_ScTyxsAA_pGSSSg_ScPSgxyYaKcntFZ
394394
Added: _$sScTss5NeverORs_rlE18startSynchronously4name8priority_ScTyxABGSSSg_ScPSgxyYaKcntFZ
395-
Added: _$sScg22startTaskSynchronously4name8priority9operationySSSg_ScPSgxyYacntF
396-
Added: _$sScg37startTaskSynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgxyYacntF
395+
Added: _$sScg22startTaskSynchronously4name8priority9operationySSSg_ScPSgxyYaKcntF
396+
Added: _$sScg37startTaskSynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgxyYaKcntF
397397
Added: _$ss19DiscardingTaskGroupV05startB13Synchronously4name8priority9operationySSSg_ScPSgyyYacntF
398398
Added: _$ss19DiscardingTaskGroupV05startB28SynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgyyYacntF
399-
Added: _$ss27ThrowingDiscardingTaskGroupV05startC13Synchronously4name8priority9operationySSSg_ScPSgyyYacntF
400-
Added: _$ss27ThrowingDiscardingTaskGroupV05startC28SynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgyyYacntF
399+
Added: _$ss27ThrowingDiscardingTaskGroupV05startC13Synchronously4name8priority9operationySSSg_ScPSgyyYaKcntF
400+
Added: _$ss27ThrowingDiscardingTaskGroupV05startC28SynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgyyYaKcntF
401401

402402
Added: _swift_task_startSynchronously
403403

@@ -418,4 +418,4 @@ Added: _swift_coro_getGlobalAllocator
418418
Added: _swift_task_dealloc_through
419419

420420
// SwiftSettings
421-
Added: _$ss12SwiftSettingVsE16defaultIsolationyABScA_pXpSgFZ
421+
Added: _$ss12SwiftSettingVsE16defaultIsolationyABScA_pXpSgFZ

test/abi/macOS/x86_64/concurrency.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -392,12 +392,12 @@ Added: _$sScG22startTaskSynchronously4name8priority9operationySSSg_ScPSgxyYacntF
392392
Added: _$sScG37startTaskSynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgxyYacntF
393393
Added: _$sScTss5Error_pRs_rlE18startSynchronously4name8priority_ScTyxsAA_pGSSSg_ScPSgxyYaKcntFZ
394394
Added: _$sScTss5NeverORs_rlE18startSynchronously4name8priority_ScTyxABGSSSg_ScPSgxyYaKcntFZ
395-
Added: _$sScg22startTaskSynchronously4name8priority9operationySSSg_ScPSgxyYacntF
396-
Added: _$sScg37startTaskSynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgxyYacntF
395+
Added: _$sScg22startTaskSynchronously4name8priority9operationySSSg_ScPSgxyYaKcntF
396+
Added: _$sScg37startTaskSynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgxyYaKcntF
397397
Added: _$ss19DiscardingTaskGroupV05startB13Synchronously4name8priority9operationySSSg_ScPSgyyYacntF
398398
Added: _$ss19DiscardingTaskGroupV05startB28SynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgyyYacntF
399-
Added: _$ss27ThrowingDiscardingTaskGroupV05startC13Synchronously4name8priority9operationySSSg_ScPSgyyYacntF
400-
Added: _$ss27ThrowingDiscardingTaskGroupV05startC28SynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgyyYacntF
399+
Added: _$ss27ThrowingDiscardingTaskGroupV05startC13Synchronously4name8priority9operationySSSg_ScPSgyyYaKcntF
400+
Added: _$ss27ThrowingDiscardingTaskGroupV05startC28SynchronouslyUnlessCancelled4name8priority9operationySSSg_ScPSgyyYaKcntF
401401

402402
Added: _swift_task_startSynchronously
403403

@@ -418,4 +418,4 @@ Added: _swift_coro_getGlobalAllocator
418418
Added: _swift_task_dealloc_through
419419

420420
// SwiftSettings
421-
Added: _$ss12SwiftSettingVsE16defaultIsolationyABScA_pXpSgFZ
421+
Added: _$ss12SwiftSettingVsE16defaultIsolationyABScA_pXpSgFZ

0 commit comments

Comments
 (0)