Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/pigeon/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 28.0.1

* [swift] Fixes a crash when a Flutter API returns null for a non-null return
value and the null arrives as `NSNull`.

## 28.0.0

* **Breaking Change** Updates Kotlin and Swift generators to generate `suspend` functions and `async throws` signatures for `@FlutterApi` methods by default, and for `@HostApi` methods annotated with `@async`.
Expand Down
2 changes: 1 addition & 1 deletion packages/pigeon/example/app/ios/Runner/Messages.g.swift
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ class MessageFlutterApi: MessageFlutterApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down
2 changes: 1 addition & 1 deletion packages/pigeon/lib/src/generator_tools.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import 'generator.dart';
/// The current version of pigeon.
///
/// This must match the version in pubspec.yaml.
const String pigeonVersion = '28.0.0';
const String pigeonVersion = '28.0.1';

/// Default plugin package name.
const String defaultPluginPackageName = 'dev.flutter.pigeon';
Expand Down
19 changes: 12 additions & 7 deletions packages/pigeon/lib/src/swift/swift_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1751,13 +1751,18 @@ static func deepHash(value: Any?, hasher: inout Hasher) {
);
}, addTrailingNewline: false);
if (!returnType.isNullable && !returnType.isVoid) {
indent.addScoped('else if listResponse[0] == nil {', '} ', () {
indent.writeln(
resumeError(
'${_getErrorClassName(generatorOptions)}(code: "null-error", message: "Flutter api returned null value for non-null return value.", details: "")',
),
);
}, addTrailingNewline: false);
indent.addScoped(
'else if listResponse[0] == nil || listResponse[0] is NSNull {',
'} ',
() {
indent.writeln(
resumeError(
'${_getErrorClassName(generatorOptions)}(code: "null-error", message: "Flutter api returned null value for non-null return value.", details: "")',
),
);
},
addTrailingNewline: false,
);
}
indent.addScoped('else {', '}', () {
if (returnType.isVoid) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4815,7 +4815,7 @@ class FlutterCallbackCoreApi: FlutterCallbackCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
completion(.failure(PigeonError(code: code, message: message, details: details)))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
completion(
.failure(
PigeonError(
Expand Down Expand Up @@ -5098,7 +5098,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5157,7 +5157,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5218,7 +5218,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5247,7 +5247,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5276,7 +5276,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5305,7 +5305,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5334,7 +5334,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5363,7 +5363,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5392,7 +5392,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5421,7 +5421,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5450,7 +5450,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5479,7 +5479,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5508,7 +5508,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5537,7 +5537,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5566,7 +5566,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5595,7 +5595,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5624,7 +5624,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5655,7 +5655,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5684,7 +5684,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5713,7 +5713,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5742,7 +5742,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5773,7 +5773,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5802,7 +5802,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -5831,7 +5831,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -6401,7 +6401,7 @@ class FlutterIntegrationCoreApi: FlutterIntegrationCoreApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -6700,7 +6700,7 @@ class FlutterSmallApi: FlutterSmallApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down Expand Up @@ -6728,7 +6728,7 @@ class FlutterSmallApi: FlutterSmallApiProtocol {
let message: String? = nilOrValue(listResponse[1])
let details: String? = nilOrValue(listResponse[2])
continuation.resume(throwing: PigeonError(code: code, message: message, details: details))
} else if listResponse[0] == nil {
} else if listResponse[0] == nil || listResponse[0] is NSNull {
continuation.resume(
throwing: PigeonError(
code: "null-error",
Expand Down
Loading
Loading