Skip to content

Commit 7a39f02

Browse files
bc-leeandroidseb
authored andcommitted
[pigeon] [swift] Fix PigeonError sendability conformance in Swift 6 (flutter#8302)
Ensure `PigeonError` conforms to `Sendable` for Swift 6.0 compatibility by updating the `details` property type from `Any?` to `Sendable?`. Fixes flutter/flutter#160313
1 parent fa7f75d commit 7a39f02

File tree

12 files changed

+45
-18
lines changed

12 files changed

+45
-18
lines changed

packages/pigeon/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 23.0.0
2+
3+
* **Breaking Change** [swift] Fixes a compile error about PigeonError's sendability conformance in Swift 6.
4+
* PigeonError's init now requires the "details" argument to be Sendable.
5+
16
## 22.7.4
27

38
* [dart] Fixes bug with multi-instance event channel support.

packages/pigeon/example/app/ios/Runner/Messages.g.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import Foundation
1818
final class PigeonError: Error {
1919
let code: String
2020
let message: String?
21-
let details: Any?
21+
let details: Sendable?
2222

23-
init(code: String, message: String?, details: Any?) {
23+
init(code: String, message: String?, details: Sendable?) {
2424
self.code = code
2525
self.message = message
2626
self.details = details

packages/pigeon/lib/generator_tools.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import 'ast.dart';
1414
/// The current version of pigeon.
1515
///
1616
/// This must match the version in pubspec.yaml.
17-
const String pigeonVersion = '22.7.4';
17+
const String pigeonVersion = '23.0.0';
1818

1919
/// Read all the content from [stdin] to a String.
2020
String readStdin() {

packages/pigeon/lib/swift_generator.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2463,10 +2463,11 @@ private func nilOrValue<T>(_ value: Any?) -> T? {
24632463
() {
24642464
indent.writeln('let code: String');
24652465
indent.writeln('let message: String?');
2466-
indent.writeln('let details: Any?');
2466+
indent.writeln('let details: Sendable?');
24672467
indent.newln();
24682468
indent.writeScoped(
2469-
'init(code: String, message: String?, details: Any?) {', '}', () {
2469+
'init(code: String, message: String?, details: Sendable?) {', '}',
2470+
() {
24702471
indent.writeln('self.code = code');
24712472
indent.writeln('self.message = message');
24722473
indent.writeln('self.details = details');

packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import Foundation
1919
final class PigeonError: Error {
2020
let code: String
2121
let message: String?
22-
let details: Any?
22+
let details: Sendable?
2323

24-
init(code: String, message: String?, details: Any?) {
24+
init(code: String, message: String?, details: Sendable?) {
2525
self.code = code
2626
self.message = message
2727
self.details = details

packages/pigeon/platform_tests/test_plugin/ios/Classes/EventChannelTests.gen.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import Foundation
1919
final class EventChannelTestsError: Error {
2020
let code: String
2121
let message: String?
22-
let details: Any?
22+
let details: Sendable?
2323

24-
init(code: String, message: String?, details: Any?) {
24+
init(code: String, message: String?, details: Sendable?) {
2525
self.code = code
2626
self.message = message
2727
self.details = details

packages/pigeon/platform_tests/test_plugin/ios/Classes/ProxyApiTests.gen.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import Foundation
1919
final class ProxyApiTestsError: Error {
2020
let code: String
2121
let message: String?
22-
let details: Any?
22+
let details: Sendable?
2323

24-
init(code: String, message: String?, details: Any?) {
24+
init(code: String, message: String?, details: Sendable?) {
2525
self.code = code
2626
self.message = message
2727
self.details = details

packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import Foundation
1919
final class PigeonError: Error {
2020
let code: String
2121
let message: String?
22-
let details: Any?
22+
let details: Sendable?
2323

24-
init(code: String, message: String?, details: Any?) {
24+
init(code: String, message: String?, details: Sendable?) {
2525
self.code = code
2626
self.message = message
2727
self.details = details

packages/pigeon/platform_tests/test_plugin/macos/Classes/EventChannelTests.gen.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import Foundation
1919
final class EventChannelTestsError: Error {
2020
let code: String
2121
let message: String?
22-
let details: Any?
22+
let details: Sendable?
2323

24-
init(code: String, message: String?, details: Any?) {
24+
init(code: String, message: String?, details: Sendable?) {
2525
self.code = code
2626
self.message = message
2727
self.details = details

packages/pigeon/platform_tests/test_plugin/macos/Classes/ProxyApiTests.gen.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import Foundation
1919
final class ProxyApiTestsError: Error {
2020
let code: String
2121
let message: String?
22-
let details: Any?
22+
let details: Sendable?
2323

24-
init(code: String, message: String?, details: Any?) {
24+
init(code: String, message: String?, details: Sendable?) {
2525
self.code = code
2626
self.message = message
2727
self.details = details

0 commit comments

Comments
 (0)