From 574ee0baf86cb3ab45a361ce35565ebadfc9654a Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 24 Mar 2023 16:30:57 -0700 Subject: [PATCH 01/27] crash fix --- packages/pigeon/CHANGELOG.md | 4 + packages/pigeon/lib/generator_tools.dart | 2 +- packages/pigeon/lib/swift_generator.dart | 21 ++- .../mock_handler_tester/test/message.dart | 2 +- .../pigeon/mock_handler_tester/test/test.dart | 2 +- .../CoreTests.java | 2 +- .../ios/Classes/CoreTests.gen.h | 2 +- .../ios/Classes/CoreTests.gen.m | 2 +- .../lib/core_tests.gen.dart | 2 +- .../lib/flutter_unittests.gen.dart | 2 +- .../lib/multiple_arity.gen.dart | 2 +- .../lib/non_null_fields.gen.dart | 2 +- .../lib/null_fields.gen.dart | 2 +- .../lib/nullable_returns.gen.dart | 2 +- .../lib/primitive.gen.dart | 2 +- .../lib/integration_tests.dart | 9 ++ .../lib/src/generated/core_tests.gen.dart | 2 +- .../com/example/test_plugin/CoreTests.gen.kt | 2 +- .../ios/Classes/CoreTests.gen.swift | 123 ++++++++++-------- .../macos/Classes/CoreTests.gen.swift | 123 ++++++++++-------- .../windows/pigeon/core_tests.gen.cpp | 2 +- .../windows/pigeon/core_tests.gen.h | 2 +- packages/pigeon/pubspec.yaml | 2 +- .../pigeon/test/swift_generator_test.dart | 17 +-- 24 files changed, 185 insertions(+), 148 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 988b465fb86..165a9d323bc 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,3 +1,7 @@ +## 9.1.2 + +* [swift] Fixes NSNull casting crash. + ## 9.1.1 * [swift] Removes experimental tags. diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index d7d68b022a3..236fac59fcd 100644 --- a/packages/pigeon/lib/generator_tools.dart +++ b/packages/pigeon/lib/generator_tools.dart @@ -11,7 +11,7 @@ import 'ast.dart'; /// The current version of pigeon. /// /// This must match the version in pubspec.yaml. -const String pigeonVersion = '9.1.1'; +const String pigeonVersion = '9.1.2'; /// Read all the content from [stdin] to a String. String readStdin() { diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 67ee5016445..ce0c3615abb 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -199,7 +199,8 @@ import FlutterMacOS '${field.name} = $fieldType(rawValue: ${field.name}RawValue)'); }); } else { - indent.writeln('let ${field.name} = $listValue as! $fieldType? '); + indent.writeln( + 'let ${field.name} = ${_castForceUnwrap(listValue, field.type, root)} '); } } else { if (!hostDatatype.isBuiltin && @@ -637,11 +638,25 @@ import FlutterMacOS }); } + void _writeNSNullToNil(Indent indent) { + indent.format(''' + +private func nullToNil(value : Any?) -> Any? { + if value is NSNull { + return nil + } else { + return value + } +} +'''); + } + @override void writeGeneralUtilities( SwiftOptions generatorOptions, Root root, Indent indent) { _writeWrapResult(indent); _writeWrapError(indent); + _writeNSNullToNil(indent); } } @@ -677,8 +692,8 @@ String _castForceUnwrap(String value, TypeDeclaration type, Root root) { } else if (type.baseName == 'Object') { // Special-cased to avoid warnings about using 'as' with Any. return value; - } else if (type.baseName == 'int') { - return '($value is Int) ? Int64($value as! Int) : $value as! Int64$castUnwrap'; + } else if (type.isNullable) { + return '($value is NSNull) ? nullToNil(value: $value) as! ${_swiftTypeForDartType(type)}$castUnwrap : $value as! ${_swiftTypeForDartType(type)}$castUnwrap'; } else { return '$value as! ${_swiftTypeForDartType(type)}$castUnwrap'; } diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index c710c5ad968..626974d2f46 100644 --- a/packages/pigeon/mock_handler_tester/test/message.dart +++ b/packages/pigeon/mock_handler_tester/test/message.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/mock_handler_tester/test/test.dart b/packages/pigeon/mock_handler_tester/test/test.dart index 7c40e2b0038..a4d3a674261 100644 --- a/packages/pigeon/mock_handler_tester/test/test.dart +++ b/packages/pigeon/mock_handler_tester/test/test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, unnecessary_import // ignore_for_file: avoid_relative_lib_imports diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/CoreTests.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/CoreTests.java index 0413431f7cd..74ce2594d6d 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/CoreTests.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/CoreTests.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon package com.example.alternate_language_test_plugin; diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.h b/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.h index 9015a67c4d0..0b7afefaed4 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.h +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.h @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon #import diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.m b/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.m index 5d5f72f2ed5..ec21bed715d 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.m +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.m @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "CoreTests.gen.h" diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/core_tests.gen.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/core_tests.gen.dart index 28113f78d33..ca65ee88862 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/core_tests.gen.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/core_tests.gen.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/flutter_unittests.gen.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/flutter_unittests.gen.dart index 6c11b7454ae..48efd83103d 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/flutter_unittests.gen.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/flutter_unittests.gen.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/multiple_arity.gen.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/multiple_arity.gen.dart index bb236d26358..caadb893fa7 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/multiple_arity.gen.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/multiple_arity.gen.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/non_null_fields.gen.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/non_null_fields.gen.dart index 840d8703e60..5d84c9dc0ce 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/non_null_fields.gen.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/non_null_fields.gen.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_fields.gen.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_fields.gen.dart index 45d1b5ec14b..77dd44c80a9 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_fields.gen.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_fields.gen.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/nullable_returns.gen.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/nullable_returns.gen.dart index 95af9203210..7a57cd1cfec 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/nullable_returns.gen.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/nullable_returns.gen.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.gen.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.gen.dart index 643125f7a21..f762999239c 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.gen.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.gen.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/integration_tests.dart b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/integration_tests.dart index 9af7fc7932e..ba553d27081 100644 --- a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/integration_tests.dart +++ b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/integration_tests.dart @@ -1258,6 +1258,15 @@ void runPigeonIntegrationTests(TargetGenerator targetGenerator) { expect(echoObject, sentObject); }); + testWidgets('nullable big ints serialize and deserialize correctly', + (WidgetTester _) async { + final HostIntegrationCoreApi api = HostIntegrationCoreApi(); + + const int sentObject = _biggerThanBigInt; + final int? echoObject = await api.callFlutterEchoNullableInt(sentObject); + expect(echoObject, sentObject); + }); + testWidgets('null ints serialize and deserialize correctly', (WidgetTester _) async { final HostIntegrationCoreApi api = HostIntegrationCoreApi(); diff --git a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/core_tests.gen.dart b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/core_tests.gen.dart index 28113f78d33..ca65ee88862 100644 --- a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/core_tests.gen.dart +++ b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/core_tests.gen.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/CoreTests.gen.kt b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/CoreTests.gen.kt index 2fe1dbd9b0f..7b02c87e311 100644 --- a/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/CoreTests.gen.kt +++ b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/CoreTests.gen.kt @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon package com.example.test_plugin diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index dc9087460e5..81bb62a4cdf 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation @@ -35,6 +35,15 @@ private func wrapError(_ error: Any) -> [Any?] { ] } +private func nullToNil(value : Any?) -> Any? { + if value is NSNull { + return nil + } else { + return value + } +} + + enum AnEnum: Int { case one = 0 case two = 1 @@ -122,24 +131,24 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = list[0] as! Bool? - let aNullableInt = list[1] as! Int64? - let aNullableInt64 = list[2] as! Int64? - let aNullableDouble = list[3] as! Double? - let aNullableByteArray = list[4] as! FlutterStandardTypedData? - let aNullable4ByteArray = list[5] as! FlutterStandardTypedData? - let aNullable8ByteArray = list[6] as! FlutterStandardTypedData? - let aNullableFloatArray = list[7] as! FlutterStandardTypedData? - let aNullableList = list[8] as! [Any]? - let aNullableMap = list[9] as! [AnyHashable: Any]? - let nullableNestedList = list[10] as! [[Bool?]?]? - let nullableMapWithAnnotations = list[11] as! [String?: String?]? - let nullableMapWithObject = list[12] as! [String?: Any?]? + let aNullableBool = (list[0] is NSNull) ? nullToNil(value: list[0]) as! Bool? : list[0] as! Bool? + let aNullableInt = (list[1] is NSNull) ? nullToNil(value: list[1]) as! Int64? : list[1] as! Int64? + let aNullableInt64 = (list[2] is NSNull) ? nullToNil(value: list[2]) as! Int64? : list[2] as! Int64? + let aNullableDouble = (list[3] is NSNull) ? nullToNil(value: list[3]) as! Double? : list[3] as! Double? + let aNullableByteArray = (list[4] is NSNull) ? nullToNil(value: list[4]) as! FlutterStandardTypedData? : list[4] as! FlutterStandardTypedData? + let aNullable4ByteArray = (list[5] is NSNull) ? nullToNil(value: list[5]) as! FlutterStandardTypedData? : list[5] as! FlutterStandardTypedData? + let aNullable8ByteArray = (list[6] is NSNull) ? nullToNil(value: list[6]) as! FlutterStandardTypedData? : list[6] as! FlutterStandardTypedData? + let aNullableFloatArray = (list[7] is NSNull) ? nullToNil(value: list[7]) as! FlutterStandardTypedData? : list[7] as! FlutterStandardTypedData? + let aNullableList = (list[8] is NSNull) ? nullToNil(value: list[8]) as! [Any]? : list[8] as! [Any]? + let aNullableMap = (list[9] is NSNull) ? nullToNil(value: list[9]) as! [AnyHashable: Any]? : list[9] as! [AnyHashable: Any]? + let nullableNestedList = (list[10] is NSNull) ? nullToNil(value: list[10]) as! [[Bool?]?]? : list[10] as! [[Bool?]?]? + let nullableMapWithAnnotations = (list[11] is NSNull) ? nullToNil(value: list[11]) as! [String?: String?]? : list[11] as! [String?: String?]? + let nullableMapWithObject = (list[12] is NSNull) ? nullToNil(value: list[12]) as! [String?: Any?]? : list[12] as! [String?: Any?]? var aNullableEnum: AnEnum? = nil if let aNullableEnumRawValue = list[13] as! Int? { aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = list[14] as! String? + let aNullableString = (list[14] is NSNull) ? nullToNil(value: list[14]) as! String? : list[14] as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -205,7 +214,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = list[0] as! [Any]? + let testList = (list[0] is NSNull) ? nullToNil(value: list[0]) as! [Any]? : list[0] as! [Any]? return TestMessage( testList: testList @@ -477,7 +486,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64 + let anIntArg = args[0] as! Int64 do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -605,7 +614,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllNullableTypes? + let everythingArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! AllNullableTypes? : args[0] as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -639,7 +648,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = args[0] as! String? + let nullableStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -655,9 +664,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = args[0] as! Bool? - let aNullableIntArg = (args[1] is Int) ? Int64(args[1] as! Int) : args[1] as! Int64? - let aNullableStringArg = args[2] as! String? + let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aNullableIntArg = (args[1] is NSNull) ? nullToNil(value: args[1]) as! Int64? : args[1] as! Int64? + let aNullableStringArg = (args[2] is NSNull) ? nullToNil(value: args[2]) as! String? : args[2] as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -673,7 +682,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64? + let aNullableIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -689,7 +698,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = args[0] as! Double? + let aNullableDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -705,7 +714,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = args[0] as! Bool? + let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -721,7 +730,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = args[0] as! String? + let aNullableStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -737,7 +746,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = args[0] as! FlutterStandardTypedData? + let aNullableUint8ListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -769,7 +778,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = args[0] as! [Any?]? + let aNullableListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -785,7 +794,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = args[0] as! [String?: Any?]? + let aNullableMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -818,7 +827,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64 + let anIntArg = args[0] as! Int64 api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -1028,7 +1037,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllNullableTypes? + let everythingArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! AllNullableTypes? : args[0] as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1046,7 +1055,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64? + let anIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1064,7 +1073,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double? + let aDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1082,7 +1091,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool? + let aBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1100,7 +1109,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String? + let aStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1118,7 +1127,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = args[0] as! FlutterStandardTypedData? + let aUint8ListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1154,7 +1163,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?]? + let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1172,7 +1181,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?]? + let aMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1251,9 +1260,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = args[0] as! Bool? - let aNullableIntArg = (args[1] is Int) ? Int64(args[1] as! Int) : args[1] as! Int64? - let aNullableStringArg = args[2] as! String? + let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aNullableIntArg = (args[1] is NSNull) ? nullToNil(value: args[1]) as! Int64? : args[1] as! Int64? + let aNullableStringArg = (args[2] is NSNull) ? nullToNil(value: args[2]) as! String? : args[2] as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1287,7 +1296,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64 + let anIntArg = args[0] as! Int64 api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1389,7 +1398,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool? + let aBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1406,7 +1415,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64? + let anIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1423,7 +1432,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double? + let aDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1440,7 +1449,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String? + let aStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1457,7 +1466,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! FlutterStandardTypedData? + let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1474,7 +1483,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?]? + let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1491,7 +1500,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?]? + let aMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1630,7 +1639,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is Int) ? Int64(response as! Int) : response as! Int64 + let result = response as! Int64 completion(result) } } @@ -1678,7 +1687,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = response as! Bool? + let result = (response is NSNull) ? nullToNil(value: response) as! Bool? : response as! Bool? completion(result) } } @@ -1686,7 +1695,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is Int) ? Int64(response as! Int) : response as! Int64? + let result = (response is NSNull) ? nullToNil(value: response) as! Int64? : response as! Int64? completion(result) } } @@ -1694,7 +1703,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = response as! Double? + let result = (response is NSNull) ? nullToNil(value: response) as! Double? : response as! Double? completion(result) } } @@ -1702,7 +1711,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = response as! String? + let result = (response is NSNull) ? nullToNil(value: response) as! String? : response as! String? completion(result) } } @@ -1710,7 +1719,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = response as! FlutterStandardTypedData? + let result = (response is NSNull) ? nullToNil(value: response) as! FlutterStandardTypedData? : response as! FlutterStandardTypedData? completion(result) } } @@ -1718,7 +1727,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = response as! [Any?]? + let result = (response is NSNull) ? nullToNil(value: response) as! [Any?]? : response as! [Any?]? completion(result) } } @@ -1726,7 +1735,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = response as! [String?: Any?]? + let result = (response is NSNull) ? nullToNil(value: response) as! [String?: Any?]? : response as! [String?: Any?]? completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index dc9087460e5..81bb62a4cdf 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation @@ -35,6 +35,15 @@ private func wrapError(_ error: Any) -> [Any?] { ] } +private func nullToNil(value : Any?) -> Any? { + if value is NSNull { + return nil + } else { + return value + } +} + + enum AnEnum: Int { case one = 0 case two = 1 @@ -122,24 +131,24 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = list[0] as! Bool? - let aNullableInt = list[1] as! Int64? - let aNullableInt64 = list[2] as! Int64? - let aNullableDouble = list[3] as! Double? - let aNullableByteArray = list[4] as! FlutterStandardTypedData? - let aNullable4ByteArray = list[5] as! FlutterStandardTypedData? - let aNullable8ByteArray = list[6] as! FlutterStandardTypedData? - let aNullableFloatArray = list[7] as! FlutterStandardTypedData? - let aNullableList = list[8] as! [Any]? - let aNullableMap = list[9] as! [AnyHashable: Any]? - let nullableNestedList = list[10] as! [[Bool?]?]? - let nullableMapWithAnnotations = list[11] as! [String?: String?]? - let nullableMapWithObject = list[12] as! [String?: Any?]? + let aNullableBool = (list[0] is NSNull) ? nullToNil(value: list[0]) as! Bool? : list[0] as! Bool? + let aNullableInt = (list[1] is NSNull) ? nullToNil(value: list[1]) as! Int64? : list[1] as! Int64? + let aNullableInt64 = (list[2] is NSNull) ? nullToNil(value: list[2]) as! Int64? : list[2] as! Int64? + let aNullableDouble = (list[3] is NSNull) ? nullToNil(value: list[3]) as! Double? : list[3] as! Double? + let aNullableByteArray = (list[4] is NSNull) ? nullToNil(value: list[4]) as! FlutterStandardTypedData? : list[4] as! FlutterStandardTypedData? + let aNullable4ByteArray = (list[5] is NSNull) ? nullToNil(value: list[5]) as! FlutterStandardTypedData? : list[5] as! FlutterStandardTypedData? + let aNullable8ByteArray = (list[6] is NSNull) ? nullToNil(value: list[6]) as! FlutterStandardTypedData? : list[6] as! FlutterStandardTypedData? + let aNullableFloatArray = (list[7] is NSNull) ? nullToNil(value: list[7]) as! FlutterStandardTypedData? : list[7] as! FlutterStandardTypedData? + let aNullableList = (list[8] is NSNull) ? nullToNil(value: list[8]) as! [Any]? : list[8] as! [Any]? + let aNullableMap = (list[9] is NSNull) ? nullToNil(value: list[9]) as! [AnyHashable: Any]? : list[9] as! [AnyHashable: Any]? + let nullableNestedList = (list[10] is NSNull) ? nullToNil(value: list[10]) as! [[Bool?]?]? : list[10] as! [[Bool?]?]? + let nullableMapWithAnnotations = (list[11] is NSNull) ? nullToNil(value: list[11]) as! [String?: String?]? : list[11] as! [String?: String?]? + let nullableMapWithObject = (list[12] is NSNull) ? nullToNil(value: list[12]) as! [String?: Any?]? : list[12] as! [String?: Any?]? var aNullableEnum: AnEnum? = nil if let aNullableEnumRawValue = list[13] as! Int? { aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = list[14] as! String? + let aNullableString = (list[14] is NSNull) ? nullToNil(value: list[14]) as! String? : list[14] as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -205,7 +214,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = list[0] as! [Any]? + let testList = (list[0] is NSNull) ? nullToNil(value: list[0]) as! [Any]? : list[0] as! [Any]? return TestMessage( testList: testList @@ -477,7 +486,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64 + let anIntArg = args[0] as! Int64 do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -605,7 +614,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllNullableTypes? + let everythingArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! AllNullableTypes? : args[0] as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -639,7 +648,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = args[0] as! String? + let nullableStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -655,9 +664,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = args[0] as! Bool? - let aNullableIntArg = (args[1] is Int) ? Int64(args[1] as! Int) : args[1] as! Int64? - let aNullableStringArg = args[2] as! String? + let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aNullableIntArg = (args[1] is NSNull) ? nullToNil(value: args[1]) as! Int64? : args[1] as! Int64? + let aNullableStringArg = (args[2] is NSNull) ? nullToNil(value: args[2]) as! String? : args[2] as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -673,7 +682,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64? + let aNullableIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -689,7 +698,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = args[0] as! Double? + let aNullableDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -705,7 +714,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = args[0] as! Bool? + let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -721,7 +730,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = args[0] as! String? + let aNullableStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -737,7 +746,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = args[0] as! FlutterStandardTypedData? + let aNullableUint8ListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -769,7 +778,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = args[0] as! [Any?]? + let aNullableListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -785,7 +794,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = args[0] as! [String?: Any?]? + let aNullableMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -818,7 +827,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64 + let anIntArg = args[0] as! Int64 api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -1028,7 +1037,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllNullableTypes? + let everythingArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! AllNullableTypes? : args[0] as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1046,7 +1055,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64? + let anIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1064,7 +1073,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double? + let aDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1082,7 +1091,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool? + let aBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1100,7 +1109,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String? + let aStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1118,7 +1127,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = args[0] as! FlutterStandardTypedData? + let aUint8ListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1154,7 +1163,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?]? + let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1172,7 +1181,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?]? + let aMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1251,9 +1260,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = args[0] as! Bool? - let aNullableIntArg = (args[1] is Int) ? Int64(args[1] as! Int) : args[1] as! Int64? - let aNullableStringArg = args[2] as! String? + let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aNullableIntArg = (args[1] is NSNull) ? nullToNil(value: args[1]) as! Int64? : args[1] as! Int64? + let aNullableStringArg = (args[2] is NSNull) ? nullToNil(value: args[2]) as! String? : args[2] as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1287,7 +1296,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64 + let anIntArg = args[0] as! Int64 api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1389,7 +1398,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool? + let aBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1406,7 +1415,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64? + let anIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1423,7 +1432,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double? + let aDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1440,7 +1449,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String? + let aStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1457,7 +1466,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! FlutterStandardTypedData? + let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1474,7 +1483,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?]? + let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1491,7 +1500,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?]? + let aMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1630,7 +1639,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is Int) ? Int64(response as! Int) : response as! Int64 + let result = response as! Int64 completion(result) } } @@ -1678,7 +1687,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = response as! Bool? + let result = (response is NSNull) ? nullToNil(value: response) as! Bool? : response as! Bool? completion(result) } } @@ -1686,7 +1695,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is Int) ? Int64(response as! Int) : response as! Int64? + let result = (response is NSNull) ? nullToNil(value: response) as! Int64? : response as! Int64? completion(result) } } @@ -1694,7 +1703,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = response as! Double? + let result = (response is NSNull) ? nullToNil(value: response) as! Double? : response as! Double? completion(result) } } @@ -1702,7 +1711,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = response as! String? + let result = (response is NSNull) ? nullToNil(value: response) as! String? : response as! String? completion(result) } } @@ -1710,7 +1719,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = response as! FlutterStandardTypedData? + let result = (response is NSNull) ? nullToNil(value: response) as! FlutterStandardTypedData? : response as! FlutterStandardTypedData? completion(result) } } @@ -1718,7 +1727,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = response as! [Any?]? + let result = (response is NSNull) ? nullToNil(value: response) as! [Any?]? : response as! [Any?]? completion(result) } } @@ -1726,7 +1735,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = response as! [String?: Any?]? + let result = (response is NSNull) ? nullToNil(value: response) as! [String?: Any?]? : response as! [String?: Any?]? completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.cpp b/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.cpp index d2002353e71..938352c2bcc 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.cpp @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon #undef _HAS_EXCEPTIONS diff --git a/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h b/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h index fd5975c5204..a4d6de76fb2 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h +++ b/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v9.1.1), do not edit directly. +// Autogenerated from Pigeon (v9.1.2), do not edit directly. // See also: https://pub.dev/packages/pigeon #ifndef PIGEON_CORE_TESTS_GEN_H_ diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index c38c2f72b80..ef999c57998 100644 --- a/packages/pigeon/pubspec.yaml +++ b/packages/pigeon/pubspec.yaml @@ -2,7 +2,7 @@ name: pigeon description: Code generator tool to make communication between Flutter and the host platform type-safe and easier. repository: https://github.com/flutter/packages/tree/main/packages/pigeon issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3Apigeon -version: 9.1.1 # This must match the version in lib/generator_tools.dart +version: 9.1.2 # This must match the version in lib/generator_tools.dart environment: sdk: ">=2.17.0 <4.0.0" diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index 942460f3ecc..3735e8fab6f 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -797,14 +797,8 @@ void main() { final String code = sink.toString(); expect(code, contains('func add(x: Int64, y: Int64) throws -> Int64')); expect(code, contains('let args = message as! [Any]')); - expect( - code, - contains( - 'let xArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64')); - expect( - code, - contains( - 'let yArg = (args[1] is Int) ? Int64(args[1] as! Int) : args[1] as! Int64')); + expect(code, contains('let xArg = args[0] as! Int64')); + expect(code, contains('let yArg = args[1] as! Int64')); expect(code, contains('let result = try api.add(x: xArg, y: yArg)')); expect(code, contains('reply(wrapResult(result))')); }); @@ -834,10 +828,7 @@ void main() { generator.generate(swiftOptions, root, sink); final String code = sink.toString(); expect(code, contains('let channel = FlutterBasicMessageChannel')); - expect( - code, - contains( - 'let result = (response is Int) ? Int64(response as! Int) : response as! Int64')); + expect(code, contains('let result = response as! Int64')); expect(code, contains('completion(result)')); expect( code, @@ -927,7 +918,7 @@ void main() { expect( code, contains( - 'let fooArg = (args[0] is Int) ? Int64(args[0] as! Int) : args[0] as! Int64?')); + 'let fooArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64?')); }); test('nullable argument flutter', () { From 46ca75eb42fca4d947021614e8fc52765ebf0bac Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 24 Mar 2023 20:46:34 -0700 Subject: [PATCH 02/27] remove need for function --- packages/pigeon/lib/swift_generator.dart | 16 +-- .../ios/Classes/CoreTests.gen.swift | 113 ++++++++---------- .../macos/Classes/CoreTests.gen.swift | 113 ++++++++---------- .../pigeon/test/swift_generator_test.dart | 2 +- 4 files changed, 106 insertions(+), 138 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index ce0c3615abb..dd2e5496ef9 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -638,25 +638,11 @@ import FlutterMacOS }); } - void _writeNSNullToNil(Indent indent) { - indent.format(''' - -private func nullToNil(value : Any?) -> Any? { - if value is NSNull { - return nil - } else { - return value - } -} -'''); - } - @override void writeGeneralUtilities( SwiftOptions generatorOptions, Root root, Indent indent) { _writeWrapResult(indent); _writeWrapError(indent); - _writeNSNullToNil(indent); } } @@ -693,7 +679,7 @@ String _castForceUnwrap(String value, TypeDeclaration type, Root root) { // Special-cased to avoid warnings about using 'as' with Any. return value; } else if (type.isNullable) { - return '($value is NSNull) ? nullToNil(value: $value) as! ${_swiftTypeForDartType(type)}$castUnwrap : $value as! ${_swiftTypeForDartType(type)}$castUnwrap'; + return '($value is NSNull) ? (nil as Any?) as! ${_swiftTypeForDartType(type)}$castUnwrap : $value as! ${_swiftTypeForDartType(type)}$castUnwrap'; } else { return '$value as! ${_swiftTypeForDartType(type)}$castUnwrap'; } diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 81bb62a4cdf..9961c439236 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -35,15 +35,6 @@ private func wrapError(_ error: Any) -> [Any?] { ] } -private func nullToNil(value : Any?) -> Any? { - if value is NSNull { - return nil - } else { - return value - } -} - - enum AnEnum: Int { case one = 0 case two = 1 @@ -131,24 +122,24 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = (list[0] is NSNull) ? nullToNil(value: list[0]) as! Bool? : list[0] as! Bool? - let aNullableInt = (list[1] is NSNull) ? nullToNil(value: list[1]) as! Int64? : list[1] as! Int64? - let aNullableInt64 = (list[2] is NSNull) ? nullToNil(value: list[2]) as! Int64? : list[2] as! Int64? - let aNullableDouble = (list[3] is NSNull) ? nullToNil(value: list[3]) as! Double? : list[3] as! Double? - let aNullableByteArray = (list[4] is NSNull) ? nullToNil(value: list[4]) as! FlutterStandardTypedData? : list[4] as! FlutterStandardTypedData? - let aNullable4ByteArray = (list[5] is NSNull) ? nullToNil(value: list[5]) as! FlutterStandardTypedData? : list[5] as! FlutterStandardTypedData? - let aNullable8ByteArray = (list[6] is NSNull) ? nullToNil(value: list[6]) as! FlutterStandardTypedData? : list[6] as! FlutterStandardTypedData? - let aNullableFloatArray = (list[7] is NSNull) ? nullToNil(value: list[7]) as! FlutterStandardTypedData? : list[7] as! FlutterStandardTypedData? - let aNullableList = (list[8] is NSNull) ? nullToNil(value: list[8]) as! [Any]? : list[8] as! [Any]? - let aNullableMap = (list[9] is NSNull) ? nullToNil(value: list[9]) as! [AnyHashable: Any]? : list[9] as! [AnyHashable: Any]? - let nullableNestedList = (list[10] is NSNull) ? nullToNil(value: list[10]) as! [[Bool?]?]? : list[10] as! [[Bool?]?]? - let nullableMapWithAnnotations = (list[11] is NSNull) ? nullToNil(value: list[11]) as! [String?: String?]? : list[11] as! [String?: String?]? - let nullableMapWithObject = (list[12] is NSNull) ? nullToNil(value: list[12]) as! [String?: Any?]? : list[12] as! [String?: Any?]? + let aNullableBool = (list[0] is NSNull) ? (nil as Any?) as! Bool? : list[0] as! Bool? + let aNullableInt = (list[1] is NSNull) ? (nil as Any?) as! Int64? : list[1] as! Int64? + let aNullableInt64 = (list[2] is NSNull) ? (nil as Any?) as! Int64? : list[2] as! Int64? + let aNullableDouble = (list[3] is NSNull) ? (nil as Any?) as! Double? : list[3] as! Double? + let aNullableByteArray = (list[4] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[4] as! FlutterStandardTypedData? + let aNullable4ByteArray = (list[5] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[5] as! FlutterStandardTypedData? + let aNullable8ByteArray = (list[6] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[6] as! FlutterStandardTypedData? + let aNullableFloatArray = (list[7] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[7] as! FlutterStandardTypedData? + let aNullableList = (list[8] is NSNull) ? (nil as Any?) as! [Any]? : list[8] as! [Any]? + let aNullableMap = (list[9] is NSNull) ? (nil as Any?) as! [AnyHashable: Any]? : list[9] as! [AnyHashable: Any]? + let nullableNestedList = (list[10] is NSNull) ? (nil as Any?) as! [[Bool?]?]? : list[10] as! [[Bool?]?]? + let nullableMapWithAnnotations = (list[11] is NSNull) ? (nil as Any?) as! [String?: String?]? : list[11] as! [String?: String?]? + let nullableMapWithObject = (list[12] is NSNull) ? (nil as Any?) as! [String?: Any?]? : list[12] as! [String?: Any?]? var aNullableEnum: AnEnum? = nil if let aNullableEnumRawValue = list[13] as! Int? { aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = (list[14] is NSNull) ? nullToNil(value: list[14]) as! String? : list[14] as! String? + let aNullableString = (list[14] is NSNull) ? (nil as Any?) as! String? : list[14] as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -214,7 +205,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = (list[0] is NSNull) ? nullToNil(value: list[0]) as! [Any]? : list[0] as! [Any]? + let testList = (list[0] is NSNull) ? (nil as Any?) as! [Any]? : list[0] as! [Any]? return TestMessage( testList: testList @@ -614,7 +605,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! AllNullableTypes? : args[0] as! AllNullableTypes? + let everythingArg = (args[0] is NSNull) ? (nil as Any?) as! AllNullableTypes? : args[0] as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -648,7 +639,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? + let nullableStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -664,9 +655,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? - let aNullableIntArg = (args[1] is NSNull) ? nullToNil(value: args[1]) as! Int64? : args[1] as! Int64? - let aNullableStringArg = (args[2] is NSNull) ? nullToNil(value: args[2]) as! String? : args[2] as! String? + let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aNullableIntArg = (args[1] is NSNull) ? (nil as Any?) as! Int64? : args[1] as! Int64? + let aNullableStringArg = (args[2] is NSNull) ? (nil as Any?) as! String? : args[2] as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -682,7 +673,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? + let aNullableIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -698,7 +689,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? + let aNullableDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -714,7 +705,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -730,7 +721,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? + let aNullableStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -746,7 +737,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aNullableUint8ListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -778,7 +769,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? + let aNullableListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -794,7 +785,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aNullableMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1037,7 +1028,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! AllNullableTypes? : args[0] as! AllNullableTypes? + let everythingArg = (args[0] is NSNull) ? (nil as Any?) as! AllNullableTypes? : args[0] as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1055,7 +1046,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? + let anIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1073,7 +1064,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? + let aDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1091,7 +1082,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1109,7 +1100,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? + let aStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1127,7 +1118,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aUint8ListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1163,7 +1154,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? + let aListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1181,7 +1172,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1260,9 +1251,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? - let aNullableIntArg = (args[1] is NSNull) ? nullToNil(value: args[1]) as! Int64? : args[1] as! Int64? - let aNullableStringArg = (args[2] is NSNull) ? nullToNil(value: args[2]) as! String? : args[2] as! String? + let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aNullableIntArg = (args[1] is NSNull) ? (nil as Any?) as! Int64? : args[1] as! Int64? + let aNullableStringArg = (args[2] is NSNull) ? (nil as Any?) as! String? : args[2] as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1398,7 +1389,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1415,7 +1406,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? + let anIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1432,7 +1423,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? + let aDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1449,7 +1440,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? + let aStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1466,7 +1457,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1483,7 +1474,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? + let aListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1500,7 +1491,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1687,7 +1678,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! Bool? : response as! Bool? + let result = (response is NSNull) ? (nil as Any?) as! Bool? : response as! Bool? completion(result) } } @@ -1695,7 +1686,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! Int64? : response as! Int64? + let result = (response is NSNull) ? (nil as Any?) as! Int64? : response as! Int64? completion(result) } } @@ -1703,7 +1694,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! Double? : response as! Double? + let result = (response is NSNull) ? (nil as Any?) as! Double? : response as! Double? completion(result) } } @@ -1711,7 +1702,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! String? : response as! String? + let result = (response is NSNull) ? (nil as Any?) as! String? : response as! String? completion(result) } } @@ -1719,7 +1710,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! FlutterStandardTypedData? : response as! FlutterStandardTypedData? + let result = (response is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : response as! FlutterStandardTypedData? completion(result) } } @@ -1727,7 +1718,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! [Any?]? : response as! [Any?]? + let result = (response is NSNull) ? (nil as Any?) as! [Any?]? : response as! [Any?]? completion(result) } } @@ -1735,7 +1726,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! [String?: Any?]? : response as! [String?: Any?]? + let result = (response is NSNull) ? (nil as Any?) as! [String?: Any?]? : response as! [String?: Any?]? completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 81bb62a4cdf..9961c439236 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -35,15 +35,6 @@ private func wrapError(_ error: Any) -> [Any?] { ] } -private func nullToNil(value : Any?) -> Any? { - if value is NSNull { - return nil - } else { - return value - } -} - - enum AnEnum: Int { case one = 0 case two = 1 @@ -131,24 +122,24 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = (list[0] is NSNull) ? nullToNil(value: list[0]) as! Bool? : list[0] as! Bool? - let aNullableInt = (list[1] is NSNull) ? nullToNil(value: list[1]) as! Int64? : list[1] as! Int64? - let aNullableInt64 = (list[2] is NSNull) ? nullToNil(value: list[2]) as! Int64? : list[2] as! Int64? - let aNullableDouble = (list[3] is NSNull) ? nullToNil(value: list[3]) as! Double? : list[3] as! Double? - let aNullableByteArray = (list[4] is NSNull) ? nullToNil(value: list[4]) as! FlutterStandardTypedData? : list[4] as! FlutterStandardTypedData? - let aNullable4ByteArray = (list[5] is NSNull) ? nullToNil(value: list[5]) as! FlutterStandardTypedData? : list[5] as! FlutterStandardTypedData? - let aNullable8ByteArray = (list[6] is NSNull) ? nullToNil(value: list[6]) as! FlutterStandardTypedData? : list[6] as! FlutterStandardTypedData? - let aNullableFloatArray = (list[7] is NSNull) ? nullToNil(value: list[7]) as! FlutterStandardTypedData? : list[7] as! FlutterStandardTypedData? - let aNullableList = (list[8] is NSNull) ? nullToNil(value: list[8]) as! [Any]? : list[8] as! [Any]? - let aNullableMap = (list[9] is NSNull) ? nullToNil(value: list[9]) as! [AnyHashable: Any]? : list[9] as! [AnyHashable: Any]? - let nullableNestedList = (list[10] is NSNull) ? nullToNil(value: list[10]) as! [[Bool?]?]? : list[10] as! [[Bool?]?]? - let nullableMapWithAnnotations = (list[11] is NSNull) ? nullToNil(value: list[11]) as! [String?: String?]? : list[11] as! [String?: String?]? - let nullableMapWithObject = (list[12] is NSNull) ? nullToNil(value: list[12]) as! [String?: Any?]? : list[12] as! [String?: Any?]? + let aNullableBool = (list[0] is NSNull) ? (nil as Any?) as! Bool? : list[0] as! Bool? + let aNullableInt = (list[1] is NSNull) ? (nil as Any?) as! Int64? : list[1] as! Int64? + let aNullableInt64 = (list[2] is NSNull) ? (nil as Any?) as! Int64? : list[2] as! Int64? + let aNullableDouble = (list[3] is NSNull) ? (nil as Any?) as! Double? : list[3] as! Double? + let aNullableByteArray = (list[4] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[4] as! FlutterStandardTypedData? + let aNullable4ByteArray = (list[5] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[5] as! FlutterStandardTypedData? + let aNullable8ByteArray = (list[6] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[6] as! FlutterStandardTypedData? + let aNullableFloatArray = (list[7] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[7] as! FlutterStandardTypedData? + let aNullableList = (list[8] is NSNull) ? (nil as Any?) as! [Any]? : list[8] as! [Any]? + let aNullableMap = (list[9] is NSNull) ? (nil as Any?) as! [AnyHashable: Any]? : list[9] as! [AnyHashable: Any]? + let nullableNestedList = (list[10] is NSNull) ? (nil as Any?) as! [[Bool?]?]? : list[10] as! [[Bool?]?]? + let nullableMapWithAnnotations = (list[11] is NSNull) ? (nil as Any?) as! [String?: String?]? : list[11] as! [String?: String?]? + let nullableMapWithObject = (list[12] is NSNull) ? (nil as Any?) as! [String?: Any?]? : list[12] as! [String?: Any?]? var aNullableEnum: AnEnum? = nil if let aNullableEnumRawValue = list[13] as! Int? { aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = (list[14] is NSNull) ? nullToNil(value: list[14]) as! String? : list[14] as! String? + let aNullableString = (list[14] is NSNull) ? (nil as Any?) as! String? : list[14] as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -214,7 +205,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = (list[0] is NSNull) ? nullToNil(value: list[0]) as! [Any]? : list[0] as! [Any]? + let testList = (list[0] is NSNull) ? (nil as Any?) as! [Any]? : list[0] as! [Any]? return TestMessage( testList: testList @@ -614,7 +605,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! AllNullableTypes? : args[0] as! AllNullableTypes? + let everythingArg = (args[0] is NSNull) ? (nil as Any?) as! AllNullableTypes? : args[0] as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -648,7 +639,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? + let nullableStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -664,9 +655,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? - let aNullableIntArg = (args[1] is NSNull) ? nullToNil(value: args[1]) as! Int64? : args[1] as! Int64? - let aNullableStringArg = (args[2] is NSNull) ? nullToNil(value: args[2]) as! String? : args[2] as! String? + let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aNullableIntArg = (args[1] is NSNull) ? (nil as Any?) as! Int64? : args[1] as! Int64? + let aNullableStringArg = (args[2] is NSNull) ? (nil as Any?) as! String? : args[2] as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -682,7 +673,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? + let aNullableIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -698,7 +689,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? + let aNullableDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -714,7 +705,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -730,7 +721,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? + let aNullableStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -746,7 +737,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aNullableUint8ListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -778,7 +769,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? + let aNullableListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -794,7 +785,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aNullableMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1037,7 +1028,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! AllNullableTypes? : args[0] as! AllNullableTypes? + let everythingArg = (args[0] is NSNull) ? (nil as Any?) as! AllNullableTypes? : args[0] as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1055,7 +1046,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? + let anIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1073,7 +1064,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? + let aDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1091,7 +1082,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1109,7 +1100,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? + let aStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1127,7 +1118,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aUint8ListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1163,7 +1154,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? + let aListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1181,7 +1172,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1260,9 +1251,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? - let aNullableIntArg = (args[1] is NSNull) ? nullToNil(value: args[1]) as! Int64? : args[1] as! Int64? - let aNullableStringArg = (args[2] is NSNull) ? nullToNil(value: args[2]) as! String? : args[2] as! String? + let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aNullableIntArg = (args[1] is NSNull) ? (nil as Any?) as! Int64? : args[1] as! Int64? + let aNullableStringArg = (args[2] is NSNull) ? (nil as Any?) as! String? : args[2] as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1398,7 +1389,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Bool? : args[0] as! Bool? + let aBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1415,7 +1406,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64? + let anIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1432,7 +1423,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Double? : args[0] as! Double? + let aDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1449,7 +1440,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! String? : args[0] as! String? + let aStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1466,7 +1457,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1483,7 +1474,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [Any?]? : args[0] as! [Any?]? + let aListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1500,7 +1491,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1687,7 +1678,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! Bool? : response as! Bool? + let result = (response is NSNull) ? (nil as Any?) as! Bool? : response as! Bool? completion(result) } } @@ -1695,7 +1686,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! Int64? : response as! Int64? + let result = (response is NSNull) ? (nil as Any?) as! Int64? : response as! Int64? completion(result) } } @@ -1703,7 +1694,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! Double? : response as! Double? + let result = (response is NSNull) ? (nil as Any?) as! Double? : response as! Double? completion(result) } } @@ -1711,7 +1702,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! String? : response as! String? + let result = (response is NSNull) ? (nil as Any?) as! String? : response as! String? completion(result) } } @@ -1719,7 +1710,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! FlutterStandardTypedData? : response as! FlutterStandardTypedData? + let result = (response is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : response as! FlutterStandardTypedData? completion(result) } } @@ -1727,7 +1718,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! [Any?]? : response as! [Any?]? + let result = (response is NSNull) ? (nil as Any?) as! [Any?]? : response as! [Any?]? completion(result) } } @@ -1735,7 +1726,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = (response is NSNull) ? nullToNil(value: response) as! [String?: Any?]? : response as! [String?: Any?]? + let result = (response is NSNull) ? (nil as Any?) as! [String?: Any?]? : response as! [String?: Any?]? completion(result) } } diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index 3735e8fab6f..f4868b45722 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -918,7 +918,7 @@ void main() { expect( code, contains( - 'let fooArg = (args[0] is NSNull) ? nullToNil(value: args[0]) as! Int64? : args[0] as! Int64?')); + 'let fooArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64?')); }); test('nullable argument flutter', () { From e35004062c1831bed3c9c89828ad838531e4c39a Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 29 Mar 2023 15:59:00 -0700 Subject: [PATCH 03/27] cleaner method method --- packages/pigeon/lib/swift_generator.dart | 18 ++- .../ios/Classes/CoreTests.gen.swift | 114 ++++++++++-------- .../macos/Classes/CoreTests.gen.swift | 114 ++++++++++-------- 3 files changed, 138 insertions(+), 108 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index dd2e5496ef9..1fe4985cf6b 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -193,7 +193,9 @@ import FlutterMacOS } else if (!hostDatatype.isBuiltin && customEnumNames.contains(field.type.baseName)) { indent.writeln('var ${field.name}: $fieldType? = nil'); - indent.write('if let ${field.name}RawValue = $listValue as! Int? '); + indent.writeln( + 'let enumVal$index = ${_castForceUnwrap(listValue, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); + indent.write('if let ${field.name}RawValue = enumVal$index'); indent.addScoped('{', '}', () { indent.writeln( '${field.name} = $fieldType(rawValue: ${field.name}RawValue)'); @@ -638,11 +640,23 @@ import FlutterMacOS }); } + void _writeNilOrType(Indent indent) { + indent.format(''' + +private func nilOrType(value: Any?) -> Any? { + if (value is NSNull) { + return nil + } + return value +}'''); + } + @override void writeGeneralUtilities( SwiftOptions generatorOptions, Root root, Indent indent) { _writeWrapResult(indent); _writeWrapError(indent); + _writeNilOrType(indent); } } @@ -679,7 +693,7 @@ String _castForceUnwrap(String value, TypeDeclaration type, Root root) { // Special-cased to avoid warnings about using 'as' with Any. return value; } else if (type.isNullable) { - return '($value is NSNull) ? (nil as Any?) as! ${_swiftTypeForDartType(type)}$castUnwrap : $value as! ${_swiftTypeForDartType(type)}$castUnwrap'; + return 'nilOrType(value: $value) as! ${_swiftTypeForDartType(type)}$castUnwrap'; } else { return '$value as! ${_swiftTypeForDartType(type)}$castUnwrap'; } diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 9961c439236..6077b854dae 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -35,6 +35,13 @@ private func wrapError(_ error: Any) -> [Any?] { ] } +private func nilOrType(value: Any?) -> Any? { + if (value is NSNull) { + return nil + } + return value +} + enum AnEnum: Int { case one = 0 case two = 1 @@ -122,24 +129,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = (list[0] is NSNull) ? (nil as Any?) as! Bool? : list[0] as! Bool? - let aNullableInt = (list[1] is NSNull) ? (nil as Any?) as! Int64? : list[1] as! Int64? - let aNullableInt64 = (list[2] is NSNull) ? (nil as Any?) as! Int64? : list[2] as! Int64? - let aNullableDouble = (list[3] is NSNull) ? (nil as Any?) as! Double? : list[3] as! Double? - let aNullableByteArray = (list[4] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[4] as! FlutterStandardTypedData? - let aNullable4ByteArray = (list[5] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[5] as! FlutterStandardTypedData? - let aNullable8ByteArray = (list[6] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[6] as! FlutterStandardTypedData? - let aNullableFloatArray = (list[7] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[7] as! FlutterStandardTypedData? - let aNullableList = (list[8] is NSNull) ? (nil as Any?) as! [Any]? : list[8] as! [Any]? - let aNullableMap = (list[9] is NSNull) ? (nil as Any?) as! [AnyHashable: Any]? : list[9] as! [AnyHashable: Any]? - let nullableNestedList = (list[10] is NSNull) ? (nil as Any?) as! [[Bool?]?]? : list[10] as! [[Bool?]?]? - let nullableMapWithAnnotations = (list[11] is NSNull) ? (nil as Any?) as! [String?: String?]? : list[11] as! [String?: String?]? - let nullableMapWithObject = (list[12] is NSNull) ? (nil as Any?) as! [String?: Any?]? : list[12] as! [String?: Any?]? + let aNullableBool = nilOrType(value: list[0]) as! Bool? + let aNullableInt = nilOrType(value: list[1]) as! Int64? + let aNullableInt64 = nilOrType(value: list[2]) as! Int64? + let aNullableDouble = nilOrType(value: list[3]) as! Double? + let aNullableByteArray = nilOrType(value: list[4]) as! FlutterStandardTypedData? + let aNullable4ByteArray = nilOrType(value: list[5]) as! FlutterStandardTypedData? + let aNullable8ByteArray = nilOrType(value: list[6]) as! FlutterStandardTypedData? + let aNullableFloatArray = nilOrType(value: list[7]) as! FlutterStandardTypedData? + let aNullableList = nilOrType(value: list[8]) as! [Any]? + let aNullableMap = nilOrType(value: list[9]) as! [AnyHashable: Any]? + let nullableNestedList = nilOrType(value: list[10]) as! [[Bool?]?]? + let nullableMapWithAnnotations = nilOrType(value: list[11]) as! [String?: String?]? + let nullableMapWithObject = nilOrType(value: list[12]) as! [String?: Any?]? var aNullableEnum: AnEnum? = nil - if let aNullableEnumRawValue = list[13] as! Int? { + let enumVal13 = nilOrType(value: list[13]) as! Int? + if let aNullableEnumRawValue = enumVal13{ aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = (list[14] is NSNull) ? (nil as Any?) as! String? : list[14] as! String? + let aNullableString = nilOrType(value: list[14]) as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -205,7 +213,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = (list[0] is NSNull) ? (nil as Any?) as! [Any]? : list[0] as! [Any]? + let testList = nilOrType(value: list[0]) as! [Any]? return TestMessage( testList: testList @@ -605,7 +613,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (args[0] is NSNull) ? (nil as Any?) as! AllNullableTypes? : args[0] as! AllNullableTypes? + let everythingArg = nilOrType(value: args[0]) as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -639,7 +647,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? + let nullableStringArg = nilOrType(value: args[0]) as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -655,9 +663,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? - let aNullableIntArg = (args[1] is NSNull) ? (nil as Any?) as! Int64? : args[1] as! Int64? - let aNullableStringArg = (args[2] is NSNull) ? (nil as Any?) as! String? : args[2] as! String? + let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? + let aNullableIntArg = nilOrType(value: args[1]) as! Int64? + let aNullableStringArg = nilOrType(value: args[2]) as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -673,7 +681,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? + let aNullableIntArg = nilOrType(value: args[0]) as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -689,7 +697,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? + let aNullableDoubleArg = nilOrType(value: args[0]) as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -705,7 +713,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -721,7 +729,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? + let aNullableStringArg = nilOrType(value: args[0]) as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -737,7 +745,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aNullableUint8ListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -769,7 +777,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? + let aNullableListArg = nilOrType(value: args[0]) as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -785,7 +793,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aNullableMapArg = nilOrType(value: args[0]) as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1028,7 +1036,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (args[0] is NSNull) ? (nil as Any?) as! AllNullableTypes? : args[0] as! AllNullableTypes? + let everythingArg = nilOrType(value: args[0]) as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1046,7 +1054,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? + let anIntArg = nilOrType(value: args[0]) as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1064,7 +1072,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? + let aDoubleArg = nilOrType(value: args[0]) as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1082,7 +1090,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aBoolArg = nilOrType(value: args[0]) as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1100,7 +1108,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? + let aStringArg = nilOrType(value: args[0]) as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1118,7 +1126,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aUint8ListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1154,7 +1162,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? + let aListArg = nilOrType(value: args[0]) as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1172,7 +1180,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aMapArg = nilOrType(value: args[0]) as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1251,9 +1259,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? - let aNullableIntArg = (args[1] is NSNull) ? (nil as Any?) as! Int64? : args[1] as! Int64? - let aNullableStringArg = (args[2] is NSNull) ? (nil as Any?) as! String? : args[2] as! String? + let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? + let aNullableIntArg = nilOrType(value: args[1]) as! Int64? + let aNullableStringArg = nilOrType(value: args[2]) as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1389,7 +1397,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aBoolArg = nilOrType(value: args[0]) as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1406,7 +1414,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? + let anIntArg = nilOrType(value: args[0]) as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1423,7 +1431,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? + let aDoubleArg = nilOrType(value: args[0]) as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1440,7 +1448,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? + let aStringArg = nilOrType(value: args[0]) as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1457,7 +1465,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1474,7 +1482,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? + let aListArg = nilOrType(value: args[0]) as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1491,7 +1499,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aMapArg = nilOrType(value: args[0]) as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1678,7 +1686,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! Bool? : response as! Bool? + let result = nilOrType(value: response) as! Bool? completion(result) } } @@ -1686,7 +1694,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! Int64? : response as! Int64? + let result = nilOrType(value: response) as! Int64? completion(result) } } @@ -1694,7 +1702,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! Double? : response as! Double? + let result = nilOrType(value: response) as! Double? completion(result) } } @@ -1702,7 +1710,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! String? : response as! String? + let result = nilOrType(value: response) as! String? completion(result) } } @@ -1710,7 +1718,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : response as! FlutterStandardTypedData? + let result = nilOrType(value: response) as! FlutterStandardTypedData? completion(result) } } @@ -1718,7 +1726,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! [Any?]? : response as! [Any?]? + let result = nilOrType(value: response) as! [Any?]? completion(result) } } @@ -1726,7 +1734,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! [String?: Any?]? : response as! [String?: Any?]? + let result = nilOrType(value: response) as! [String?: Any?]? completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 9961c439236..6077b854dae 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -35,6 +35,13 @@ private func wrapError(_ error: Any) -> [Any?] { ] } +private func nilOrType(value: Any?) -> Any? { + if (value is NSNull) { + return nil + } + return value +} + enum AnEnum: Int { case one = 0 case two = 1 @@ -122,24 +129,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = (list[0] is NSNull) ? (nil as Any?) as! Bool? : list[0] as! Bool? - let aNullableInt = (list[1] is NSNull) ? (nil as Any?) as! Int64? : list[1] as! Int64? - let aNullableInt64 = (list[2] is NSNull) ? (nil as Any?) as! Int64? : list[2] as! Int64? - let aNullableDouble = (list[3] is NSNull) ? (nil as Any?) as! Double? : list[3] as! Double? - let aNullableByteArray = (list[4] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[4] as! FlutterStandardTypedData? - let aNullable4ByteArray = (list[5] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[5] as! FlutterStandardTypedData? - let aNullable8ByteArray = (list[6] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[6] as! FlutterStandardTypedData? - let aNullableFloatArray = (list[7] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : list[7] as! FlutterStandardTypedData? - let aNullableList = (list[8] is NSNull) ? (nil as Any?) as! [Any]? : list[8] as! [Any]? - let aNullableMap = (list[9] is NSNull) ? (nil as Any?) as! [AnyHashable: Any]? : list[9] as! [AnyHashable: Any]? - let nullableNestedList = (list[10] is NSNull) ? (nil as Any?) as! [[Bool?]?]? : list[10] as! [[Bool?]?]? - let nullableMapWithAnnotations = (list[11] is NSNull) ? (nil as Any?) as! [String?: String?]? : list[11] as! [String?: String?]? - let nullableMapWithObject = (list[12] is NSNull) ? (nil as Any?) as! [String?: Any?]? : list[12] as! [String?: Any?]? + let aNullableBool = nilOrType(value: list[0]) as! Bool? + let aNullableInt = nilOrType(value: list[1]) as! Int64? + let aNullableInt64 = nilOrType(value: list[2]) as! Int64? + let aNullableDouble = nilOrType(value: list[3]) as! Double? + let aNullableByteArray = nilOrType(value: list[4]) as! FlutterStandardTypedData? + let aNullable4ByteArray = nilOrType(value: list[5]) as! FlutterStandardTypedData? + let aNullable8ByteArray = nilOrType(value: list[6]) as! FlutterStandardTypedData? + let aNullableFloatArray = nilOrType(value: list[7]) as! FlutterStandardTypedData? + let aNullableList = nilOrType(value: list[8]) as! [Any]? + let aNullableMap = nilOrType(value: list[9]) as! [AnyHashable: Any]? + let nullableNestedList = nilOrType(value: list[10]) as! [[Bool?]?]? + let nullableMapWithAnnotations = nilOrType(value: list[11]) as! [String?: String?]? + let nullableMapWithObject = nilOrType(value: list[12]) as! [String?: Any?]? var aNullableEnum: AnEnum? = nil - if let aNullableEnumRawValue = list[13] as! Int? { + let enumVal13 = nilOrType(value: list[13]) as! Int? + if let aNullableEnumRawValue = enumVal13{ aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = (list[14] is NSNull) ? (nil as Any?) as! String? : list[14] as! String? + let aNullableString = nilOrType(value: list[14]) as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -205,7 +213,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = (list[0] is NSNull) ? (nil as Any?) as! [Any]? : list[0] as! [Any]? + let testList = nilOrType(value: list[0]) as! [Any]? return TestMessage( testList: testList @@ -605,7 +613,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (args[0] is NSNull) ? (nil as Any?) as! AllNullableTypes? : args[0] as! AllNullableTypes? + let everythingArg = nilOrType(value: args[0]) as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -639,7 +647,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? + let nullableStringArg = nilOrType(value: args[0]) as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -655,9 +663,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? - let aNullableIntArg = (args[1] is NSNull) ? (nil as Any?) as! Int64? : args[1] as! Int64? - let aNullableStringArg = (args[2] is NSNull) ? (nil as Any?) as! String? : args[2] as! String? + let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? + let aNullableIntArg = nilOrType(value: args[1]) as! Int64? + let aNullableStringArg = nilOrType(value: args[2]) as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -673,7 +681,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? + let aNullableIntArg = nilOrType(value: args[0]) as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -689,7 +697,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? + let aNullableDoubleArg = nilOrType(value: args[0]) as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -705,7 +713,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -721,7 +729,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? + let aNullableStringArg = nilOrType(value: args[0]) as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -737,7 +745,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aNullableUint8ListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -769,7 +777,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? + let aNullableListArg = nilOrType(value: args[0]) as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -785,7 +793,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aNullableMapArg = nilOrType(value: args[0]) as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1028,7 +1036,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (args[0] is NSNull) ? (nil as Any?) as! AllNullableTypes? : args[0] as! AllNullableTypes? + let everythingArg = nilOrType(value: args[0]) as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1046,7 +1054,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? + let anIntArg = nilOrType(value: args[0]) as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1064,7 +1072,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? + let aDoubleArg = nilOrType(value: args[0]) as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1082,7 +1090,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aBoolArg = nilOrType(value: args[0]) as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1100,7 +1108,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? + let aStringArg = nilOrType(value: args[0]) as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1118,7 +1126,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aUint8ListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1154,7 +1162,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? + let aListArg = nilOrType(value: args[0]) as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1172,7 +1180,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aMapArg = nilOrType(value: args[0]) as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1251,9 +1259,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? - let aNullableIntArg = (args[1] is NSNull) ? (nil as Any?) as! Int64? : args[1] as! Int64? - let aNullableStringArg = (args[2] is NSNull) ? (nil as Any?) as! String? : args[2] as! String? + let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? + let aNullableIntArg = nilOrType(value: args[1]) as! Int64? + let aNullableStringArg = nilOrType(value: args[2]) as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1389,7 +1397,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (args[0] is NSNull) ? (nil as Any?) as! Bool? : args[0] as! Bool? + let aBoolArg = nilOrType(value: args[0]) as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1406,7 +1414,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64? + let anIntArg = nilOrType(value: args[0]) as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1423,7 +1431,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (args[0] is NSNull) ? (nil as Any?) as! Double? : args[0] as! Double? + let aDoubleArg = nilOrType(value: args[0]) as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1440,7 +1448,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (args[0] is NSNull) ? (nil as Any?) as! String? : args[0] as! String? + let aStringArg = nilOrType(value: args[0]) as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1457,7 +1465,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : args[0] as! FlutterStandardTypedData? + let aListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1474,7 +1482,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (args[0] is NSNull) ? (nil as Any?) as! [Any?]? : args[0] as! [Any?]? + let aListArg = nilOrType(value: args[0]) as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1491,7 +1499,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (args[0] is NSNull) ? (nil as Any?) as! [String?: Any?]? : args[0] as! [String?: Any?]? + let aMapArg = nilOrType(value: args[0]) as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1678,7 +1686,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! Bool? : response as! Bool? + let result = nilOrType(value: response) as! Bool? completion(result) } } @@ -1686,7 +1694,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! Int64? : response as! Int64? + let result = nilOrType(value: response) as! Int64? completion(result) } } @@ -1694,7 +1702,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! Double? : response as! Double? + let result = nilOrType(value: response) as! Double? completion(result) } } @@ -1702,7 +1710,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! String? : response as! String? + let result = nilOrType(value: response) as! String? completion(result) } } @@ -1710,7 +1718,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! FlutterStandardTypedData? : response as! FlutterStandardTypedData? + let result = nilOrType(value: response) as! FlutterStandardTypedData? completion(result) } } @@ -1718,7 +1726,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! [Any?]? : response as! [Any?]? + let result = nilOrType(value: response) as! [Any?]? completion(result) } } @@ -1726,7 +1734,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = (response is NSNull) ? (nil as Any?) as! [String?: Any?]? : response as! [String?: Any?]? + let result = nilOrType(value: response) as! [String?: Any?]? completion(result) } } From 3d31affdc662dd8949119cd0dc3b55bc8422dd7e Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 29 Mar 2023 16:00:30 -0700 Subject: [PATCH 04/27] better name --- packages/pigeon/lib/swift_generator.dart | 4 +- .../ios/Classes/CoreTests.gen.swift | 108 +++++++++--------- .../macos/Classes/CoreTests.gen.swift | 108 +++++++++--------- 3 files changed, 110 insertions(+), 110 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 1fe4985cf6b..a4a1ea869df 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -643,7 +643,7 @@ import FlutterMacOS void _writeNilOrType(Indent indent) { indent.format(''' -private func nilOrType(value: Any?) -> Any? { +private func nilOrValue(value: Any?) -> Any? { if (value is NSNull) { return nil } @@ -693,7 +693,7 @@ String _castForceUnwrap(String value, TypeDeclaration type, Root root) { // Special-cased to avoid warnings about using 'as' with Any. return value; } else if (type.isNullable) { - return 'nilOrType(value: $value) as! ${_swiftTypeForDartType(type)}$castUnwrap'; + return 'nilOrValue(value: $value) as! ${_swiftTypeForDartType(type)}$castUnwrap'; } else { return '$value as! ${_swiftTypeForDartType(type)}$castUnwrap'; } diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 6077b854dae..cad9e379a40 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -35,7 +35,7 @@ private func wrapError(_ error: Any) -> [Any?] { ] } -private func nilOrType(value: Any?) -> Any? { +private func nilOrValue(value: Any?) -> Any? { if (value is NSNull) { return nil } @@ -129,25 +129,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = nilOrType(value: list[0]) as! Bool? - let aNullableInt = nilOrType(value: list[1]) as! Int64? - let aNullableInt64 = nilOrType(value: list[2]) as! Int64? - let aNullableDouble = nilOrType(value: list[3]) as! Double? - let aNullableByteArray = nilOrType(value: list[4]) as! FlutterStandardTypedData? - let aNullable4ByteArray = nilOrType(value: list[5]) as! FlutterStandardTypedData? - let aNullable8ByteArray = nilOrType(value: list[6]) as! FlutterStandardTypedData? - let aNullableFloatArray = nilOrType(value: list[7]) as! FlutterStandardTypedData? - let aNullableList = nilOrType(value: list[8]) as! [Any]? - let aNullableMap = nilOrType(value: list[9]) as! [AnyHashable: Any]? - let nullableNestedList = nilOrType(value: list[10]) as! [[Bool?]?]? - let nullableMapWithAnnotations = nilOrType(value: list[11]) as! [String?: String?]? - let nullableMapWithObject = nilOrType(value: list[12]) as! [String?: Any?]? + let aNullableBool = nilOrValue(value: list[0]) as! Bool? + let aNullableInt = nilOrValue(value: list[1]) as! Int64? + let aNullableInt64 = nilOrValue(value: list[2]) as! Int64? + let aNullableDouble = nilOrValue(value: list[3]) as! Double? + let aNullableByteArray = nilOrValue(value: list[4]) as! FlutterStandardTypedData? + let aNullable4ByteArray = nilOrValue(value: list[5]) as! FlutterStandardTypedData? + let aNullable8ByteArray = nilOrValue(value: list[6]) as! FlutterStandardTypedData? + let aNullableFloatArray = nilOrValue(value: list[7]) as! FlutterStandardTypedData? + let aNullableList = nilOrValue(value: list[8]) as! [Any]? + let aNullableMap = nilOrValue(value: list[9]) as! [AnyHashable: Any]? + let nullableNestedList = nilOrValue(value: list[10]) as! [[Bool?]?]? + let nullableMapWithAnnotations = nilOrValue(value: list[11]) as! [String?: String?]? + let nullableMapWithObject = nilOrValue(value: list[12]) as! [String?: Any?]? var aNullableEnum: AnEnum? = nil - let enumVal13 = nilOrType(value: list[13]) as! Int? + let enumVal13 = nilOrValue(value: list[13]) as! Int? if let aNullableEnumRawValue = enumVal13{ aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = nilOrType(value: list[14]) as! String? + let aNullableString = nilOrValue(value: list[14]) as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -213,7 +213,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = nilOrType(value: list[0]) as! [Any]? + let testList = nilOrValue(value: list[0]) as! [Any]? return TestMessage( testList: testList @@ -613,7 +613,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = nilOrType(value: args[0]) as! AllNullableTypes? + let everythingArg = nilOrValue(value: args[0]) as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -647,7 +647,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = nilOrType(value: args[0]) as! String? + let nullableStringArg = nilOrValue(value: args[0]) as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -663,9 +663,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? - let aNullableIntArg = nilOrType(value: args[1]) as! Int64? - let aNullableStringArg = nilOrType(value: args[2]) as! String? + let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? + let aNullableIntArg = nilOrValue(value: args[1]) as! Int64? + let aNullableStringArg = nilOrValue(value: args[2]) as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -681,7 +681,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = nilOrType(value: args[0]) as! Int64? + let aNullableIntArg = nilOrValue(value: args[0]) as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -697,7 +697,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = nilOrType(value: args[0]) as! Double? + let aNullableDoubleArg = nilOrValue(value: args[0]) as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -713,7 +713,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? + let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -729,7 +729,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = nilOrType(value: args[0]) as! String? + let aNullableStringArg = nilOrValue(value: args[0]) as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -745,7 +745,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? + let aNullableUint8ListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -777,7 +777,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = nilOrType(value: args[0]) as! [Any?]? + let aNullableListArg = nilOrValue(value: args[0]) as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -793,7 +793,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = nilOrType(value: args[0]) as! [String?: Any?]? + let aNullableMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1036,7 +1036,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = nilOrType(value: args[0]) as! AllNullableTypes? + let everythingArg = nilOrValue(value: args[0]) as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1054,7 +1054,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = nilOrType(value: args[0]) as! Int64? + let anIntArg = nilOrValue(value: args[0]) as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1072,7 +1072,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = nilOrType(value: args[0]) as! Double? + let aDoubleArg = nilOrValue(value: args[0]) as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1090,7 +1090,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = nilOrType(value: args[0]) as! Bool? + let aBoolArg = nilOrValue(value: args[0]) as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1108,7 +1108,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = nilOrType(value: args[0]) as! String? + let aStringArg = nilOrValue(value: args[0]) as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1126,7 +1126,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? + let aUint8ListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1162,7 +1162,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrType(value: args[0]) as! [Any?]? + let aListArg = nilOrValue(value: args[0]) as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1180,7 +1180,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = nilOrType(value: args[0]) as! [String?: Any?]? + let aMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1259,9 +1259,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? - let aNullableIntArg = nilOrType(value: args[1]) as! Int64? - let aNullableStringArg = nilOrType(value: args[2]) as! String? + let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? + let aNullableIntArg = nilOrValue(value: args[1]) as! Int64? + let aNullableStringArg = nilOrValue(value: args[2]) as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1397,7 +1397,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = nilOrType(value: args[0]) as! Bool? + let aBoolArg = nilOrValue(value: args[0]) as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1414,7 +1414,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = nilOrType(value: args[0]) as! Int64? + let anIntArg = nilOrValue(value: args[0]) as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1431,7 +1431,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = nilOrType(value: args[0]) as! Double? + let aDoubleArg = nilOrValue(value: args[0]) as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1448,7 +1448,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = nilOrType(value: args[0]) as! String? + let aStringArg = nilOrValue(value: args[0]) as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1465,7 +1465,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? + let aListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1482,7 +1482,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrType(value: args[0]) as! [Any?]? + let aListArg = nilOrValue(value: args[0]) as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1499,7 +1499,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = nilOrType(value: args[0]) as! [String?: Any?]? + let aMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1686,7 +1686,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = nilOrType(value: response) as! Bool? + let result = nilOrValue(value: response) as! Bool? completion(result) } } @@ -1694,7 +1694,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = nilOrType(value: response) as! Int64? + let result = nilOrValue(value: response) as! Int64? completion(result) } } @@ -1702,7 +1702,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = nilOrType(value: response) as! Double? + let result = nilOrValue(value: response) as! Double? completion(result) } } @@ -1710,7 +1710,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = nilOrType(value: response) as! String? + let result = nilOrValue(value: response) as! String? completion(result) } } @@ -1718,7 +1718,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = nilOrType(value: response) as! FlutterStandardTypedData? + let result = nilOrValue(value: response) as! FlutterStandardTypedData? completion(result) } } @@ -1726,7 +1726,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = nilOrType(value: response) as! [Any?]? + let result = nilOrValue(value: response) as! [Any?]? completion(result) } } @@ -1734,7 +1734,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = nilOrType(value: response) as! [String?: Any?]? + let result = nilOrValue(value: response) as! [String?: Any?]? completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 6077b854dae..cad9e379a40 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -35,7 +35,7 @@ private func wrapError(_ error: Any) -> [Any?] { ] } -private func nilOrType(value: Any?) -> Any? { +private func nilOrValue(value: Any?) -> Any? { if (value is NSNull) { return nil } @@ -129,25 +129,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = nilOrType(value: list[0]) as! Bool? - let aNullableInt = nilOrType(value: list[1]) as! Int64? - let aNullableInt64 = nilOrType(value: list[2]) as! Int64? - let aNullableDouble = nilOrType(value: list[3]) as! Double? - let aNullableByteArray = nilOrType(value: list[4]) as! FlutterStandardTypedData? - let aNullable4ByteArray = nilOrType(value: list[5]) as! FlutterStandardTypedData? - let aNullable8ByteArray = nilOrType(value: list[6]) as! FlutterStandardTypedData? - let aNullableFloatArray = nilOrType(value: list[7]) as! FlutterStandardTypedData? - let aNullableList = nilOrType(value: list[8]) as! [Any]? - let aNullableMap = nilOrType(value: list[9]) as! [AnyHashable: Any]? - let nullableNestedList = nilOrType(value: list[10]) as! [[Bool?]?]? - let nullableMapWithAnnotations = nilOrType(value: list[11]) as! [String?: String?]? - let nullableMapWithObject = nilOrType(value: list[12]) as! [String?: Any?]? + let aNullableBool = nilOrValue(value: list[0]) as! Bool? + let aNullableInt = nilOrValue(value: list[1]) as! Int64? + let aNullableInt64 = nilOrValue(value: list[2]) as! Int64? + let aNullableDouble = nilOrValue(value: list[3]) as! Double? + let aNullableByteArray = nilOrValue(value: list[4]) as! FlutterStandardTypedData? + let aNullable4ByteArray = nilOrValue(value: list[5]) as! FlutterStandardTypedData? + let aNullable8ByteArray = nilOrValue(value: list[6]) as! FlutterStandardTypedData? + let aNullableFloatArray = nilOrValue(value: list[7]) as! FlutterStandardTypedData? + let aNullableList = nilOrValue(value: list[8]) as! [Any]? + let aNullableMap = nilOrValue(value: list[9]) as! [AnyHashable: Any]? + let nullableNestedList = nilOrValue(value: list[10]) as! [[Bool?]?]? + let nullableMapWithAnnotations = nilOrValue(value: list[11]) as! [String?: String?]? + let nullableMapWithObject = nilOrValue(value: list[12]) as! [String?: Any?]? var aNullableEnum: AnEnum? = nil - let enumVal13 = nilOrType(value: list[13]) as! Int? + let enumVal13 = nilOrValue(value: list[13]) as! Int? if let aNullableEnumRawValue = enumVal13{ aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = nilOrType(value: list[14]) as! String? + let aNullableString = nilOrValue(value: list[14]) as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -213,7 +213,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = nilOrType(value: list[0]) as! [Any]? + let testList = nilOrValue(value: list[0]) as! [Any]? return TestMessage( testList: testList @@ -613,7 +613,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = nilOrType(value: args[0]) as! AllNullableTypes? + let everythingArg = nilOrValue(value: args[0]) as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -647,7 +647,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = nilOrType(value: args[0]) as! String? + let nullableStringArg = nilOrValue(value: args[0]) as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -663,9 +663,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? - let aNullableIntArg = nilOrType(value: args[1]) as! Int64? - let aNullableStringArg = nilOrType(value: args[2]) as! String? + let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? + let aNullableIntArg = nilOrValue(value: args[1]) as! Int64? + let aNullableStringArg = nilOrValue(value: args[2]) as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -681,7 +681,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = nilOrType(value: args[0]) as! Int64? + let aNullableIntArg = nilOrValue(value: args[0]) as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -697,7 +697,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = nilOrType(value: args[0]) as! Double? + let aNullableDoubleArg = nilOrValue(value: args[0]) as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -713,7 +713,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? + let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -729,7 +729,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = nilOrType(value: args[0]) as! String? + let aNullableStringArg = nilOrValue(value: args[0]) as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -745,7 +745,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? + let aNullableUint8ListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -777,7 +777,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = nilOrType(value: args[0]) as! [Any?]? + let aNullableListArg = nilOrValue(value: args[0]) as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -793,7 +793,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = nilOrType(value: args[0]) as! [String?: Any?]? + let aNullableMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1036,7 +1036,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = nilOrType(value: args[0]) as! AllNullableTypes? + let everythingArg = nilOrValue(value: args[0]) as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1054,7 +1054,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = nilOrType(value: args[0]) as! Int64? + let anIntArg = nilOrValue(value: args[0]) as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1072,7 +1072,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = nilOrType(value: args[0]) as! Double? + let aDoubleArg = nilOrValue(value: args[0]) as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1090,7 +1090,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = nilOrType(value: args[0]) as! Bool? + let aBoolArg = nilOrValue(value: args[0]) as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1108,7 +1108,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = nilOrType(value: args[0]) as! String? + let aStringArg = nilOrValue(value: args[0]) as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1126,7 +1126,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? + let aUint8ListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1162,7 +1162,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrType(value: args[0]) as! [Any?]? + let aListArg = nilOrValue(value: args[0]) as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1180,7 +1180,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = nilOrType(value: args[0]) as! [String?: Any?]? + let aMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1259,9 +1259,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrType(value: args[0]) as! Bool? - let aNullableIntArg = nilOrType(value: args[1]) as! Int64? - let aNullableStringArg = nilOrType(value: args[2]) as! String? + let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? + let aNullableIntArg = nilOrValue(value: args[1]) as! Int64? + let aNullableStringArg = nilOrValue(value: args[2]) as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1397,7 +1397,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = nilOrType(value: args[0]) as! Bool? + let aBoolArg = nilOrValue(value: args[0]) as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1414,7 +1414,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = nilOrType(value: args[0]) as! Int64? + let anIntArg = nilOrValue(value: args[0]) as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1431,7 +1431,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = nilOrType(value: args[0]) as! Double? + let aDoubleArg = nilOrValue(value: args[0]) as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1448,7 +1448,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = nilOrType(value: args[0]) as! String? + let aStringArg = nilOrValue(value: args[0]) as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1465,7 +1465,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrType(value: args[0]) as! FlutterStandardTypedData? + let aListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1482,7 +1482,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrType(value: args[0]) as! [Any?]? + let aListArg = nilOrValue(value: args[0]) as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1499,7 +1499,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = nilOrType(value: args[0]) as! [String?: Any?]? + let aMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1686,7 +1686,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = nilOrType(value: response) as! Bool? + let result = nilOrValue(value: response) as! Bool? completion(result) } } @@ -1694,7 +1694,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = nilOrType(value: response) as! Int64? + let result = nilOrValue(value: response) as! Int64? completion(result) } } @@ -1702,7 +1702,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = nilOrType(value: response) as! Double? + let result = nilOrValue(value: response) as! Double? completion(result) } } @@ -1710,7 +1710,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = nilOrType(value: response) as! String? + let result = nilOrValue(value: response) as! String? completion(result) } } @@ -1718,7 +1718,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = nilOrType(value: response) as! FlutterStandardTypedData? + let result = nilOrValue(value: response) as! FlutterStandardTypedData? completion(result) } } @@ -1726,7 +1726,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = nilOrType(value: response) as! [Any?]? + let result = nilOrValue(value: response) as! [Any?]? completion(result) } } @@ -1734,7 +1734,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = nilOrType(value: response) as! [String?: Any?]? + let result = nilOrValue(value: response) as! [String?: Any?]? completion(result) } } From 3be7eb10263d7f742a040a6dddee1268f7657078 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 29 Mar 2023 17:32:06 -0700 Subject: [PATCH 05/27] fix enums and tests --- packages/pigeon/lib/swift_generator.dart | 17 +++++++---------- .../test_plugin/ios/Classes/CoreTests.gen.swift | 6 +----- .../macos/Classes/CoreTests.gen.swift | 6 +----- packages/pigeon/test/swift_generator_test.dart | 7 ++----- 4 files changed, 11 insertions(+), 25 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index a4a1ea869df..499c7c48b54 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -192,14 +192,8 @@ import FlutterMacOS }); } else if (!hostDatatype.isBuiltin && customEnumNames.contains(field.type.baseName)) { - indent.writeln('var ${field.name}: $fieldType? = nil'); indent.writeln( - 'let enumVal$index = ${_castForceUnwrap(listValue, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); - indent.write('if let ${field.name}RawValue = enumVal$index'); - indent.addScoped('{', '}', () { - indent.writeln( - '${field.name} = $fieldType(rawValue: ${field.name}RawValue)'); - }); + 'let ${field.name} = ${_castForceUnwrap(listValue, field.type, root)}'); } else { indent.writeln( 'let ${field.name} = ${_castForceUnwrap(listValue, field.type, root)} '); @@ -683,12 +677,15 @@ String _camelCase(String text) { } String _castForceUnwrap(String value, TypeDeclaration type, Root root) { - final String forceUnwrap = type.isNullable ? '' : '!'; final String castUnwrap = type.isNullable ? '?' : ''; if (isEnum(root, type)) { final String nullableConditionPrefix = - type.isNullable ? '$value == nil ? nil : ' : ''; - return '$nullableConditionPrefix${_swiftTypeForDartType(type)}(rawValue: $value as! Int)$forceUnwrap'; + type.isNullable ? 'nilOrValue(value: $value) != nil ? ' : ''; + final String nullableConditionSuffix = type.isNullable + ? ' : nilOrValue(value: $value) as! ${type.baseName}?' + : ''; + + return '$nullableConditionPrefix${_swiftTypeForDartType(type)}(rawValue: $value as! Int)$nullableConditionSuffix'; } else if (type.baseName == 'Object') { // Special-cased to avoid warnings about using 'as' with Any. return value; diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index cad9e379a40..3599ab3c867 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -142,11 +142,7 @@ struct AllNullableTypes { let nullableNestedList = nilOrValue(value: list[10]) as! [[Bool?]?]? let nullableMapWithAnnotations = nilOrValue(value: list[11]) as! [String?: String?]? let nullableMapWithObject = nilOrValue(value: list[12]) as! [String?: Any?]? - var aNullableEnum: AnEnum? = nil - let enumVal13 = nilOrValue(value: list[13]) as! Int? - if let aNullableEnumRawValue = enumVal13{ - aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) - } + let aNullableEnum = nilOrValue(value: list[13]) != nil ? AnEnum(rawValue: list[13] as! Int) : nilOrValue(value: list[13]) as! AnEnum? let aNullableString = nilOrValue(value: list[14]) as! String? return AllNullableTypes( diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index cad9e379a40..3599ab3c867 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -142,11 +142,7 @@ struct AllNullableTypes { let nullableNestedList = nilOrValue(value: list[10]) as! [[Bool?]?]? let nullableMapWithAnnotations = nilOrValue(value: list[11]) as! [String?: String?]? let nullableMapWithObject = nilOrValue(value: list[12]) as! [String?: Any?]? - var aNullableEnum: AnEnum? = nil - let enumVal13 = nilOrValue(value: list[13]) as! Int? - if let aNullableEnumRawValue = enumVal13{ - aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) - } + let aNullableEnum = nilOrValue(value: list[13]) != nil ? AnEnum(rawValue: list[13] as! Int) : nilOrValue(value: list[13]) as! AnEnum? let aNullableString = nilOrValue(value: list[14]) as! String? return AllNullableTypes( diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index f4868b45722..c5df0e4309f 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -83,7 +83,7 @@ void main() { generator.generate(swiftOptions, root, sink); final String code = sink.toString(); expect(code, contains('enum Foo: Int')); - expect(code, contains('let fooArg = Foo(rawValue: args[0] as! Int)!')); + expect(code, contains('let fooArg = Foo(rawValue: args[0] as! Int)')); }); test('gen one host api', () { @@ -915,10 +915,7 @@ void main() { const SwiftGenerator generator = SwiftGenerator(); generator.generate(swiftOptions, root, sink); final String code = sink.toString(); - expect( - code, - contains( - 'let fooArg = (args[0] is NSNull) ? (nil as Any?) as! Int64? : args[0] as! Int64?')); + expect(code, contains('nilOrValue(value: args[0]) as! Int64?')); }); test('nullable argument flutter', () { From ef111ee011d76c618855e8575c1022cef9578b24 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 29 Mar 2023 21:20:14 -0700 Subject: [PATCH 06/27] enum fixes, and Any casting --- packages/pigeon/lib/swift_generator.dart | 21 ++-- .../example/ios/RunnerTests/RunnerTests.swift | 6 +- .../ios/Classes/CoreTests.gen.swift | 110 +++++++++--------- .../macos/Classes/CoreTests.gen.swift | 110 +++++++++--------- .../pigeon/test/swift_generator_test.dart | 2 +- 5 files changed, 129 insertions(+), 120 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 499c7c48b54..cfa1a883618 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -192,8 +192,14 @@ import FlutterMacOS }); } else if (!hostDatatype.isBuiltin && customEnumNames.contains(field.type.baseName)) { + indent.writeln('var ${field.name}: $fieldType? = nil'); indent.writeln( - 'let ${field.name} = ${_castForceUnwrap(listValue, field.type, root)}'); + 'let enumVal$index = ${_castForceUnwrap(listValue, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); + indent.write('if let ${field.name}RawValue = enumVal$index '); + indent.addScoped('{', '}', () { + indent.writeln( + '${field.name} = $fieldType(rawValue: ${field.name}RawValue)'); + }); } else { indent.writeln( 'let ${field.name} = ${_castForceUnwrap(listValue, field.type, root)} '); @@ -677,22 +683,17 @@ String _camelCase(String text) { } String _castForceUnwrap(String value, TypeDeclaration type, Root root) { - final String castUnwrap = type.isNullable ? '?' : ''; if (isEnum(root, type)) { - final String nullableConditionPrefix = - type.isNullable ? 'nilOrValue(value: $value) != nil ? ' : ''; - final String nullableConditionSuffix = type.isNullable - ? ' : nilOrValue(value: $value) as! ${type.baseName}?' - : ''; - + final String nullableConditionPrefix = type.isNullable ? '' : ''; + final String nullableConditionSuffix = type.isNullable ? '' : '!'; return '$nullableConditionPrefix${_swiftTypeForDartType(type)}(rawValue: $value as! Int)$nullableConditionSuffix'; } else if (type.baseName == 'Object') { // Special-cased to avoid warnings about using 'as' with Any. return value; } else if (type.isNullable) { - return 'nilOrValue(value: $value) as! ${_swiftTypeForDartType(type)}$castUnwrap'; + return '(nilOrValue(value: $value) as Any) as! ${_swiftTypeForDartType(type)}?'; } else { - return '$value as! ${_swiftTypeForDartType(type)}$castUnwrap'; + return '$value as! ${_swiftTypeForDartType(type)}'; } } diff --git a/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/RunnerTests.swift b/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/RunnerTests.swift index 4cbd6b0d1f2..ab90cacf373 100644 --- a/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/RunnerTests.swift +++ b/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/RunnerTests.swift @@ -10,21 +10,21 @@ class RunnerTests: XCTestCase { func testToListAndBack() throws { let reply = MessageSearchReply(result: "foobar") let dict = reply.toList() - let copy = MessageSearchReply.fromList(dict) + let copy = MessageSearchReply.fromList(dict as [Any]) XCTAssertEqual(reply.result, copy?.result) } func testHandlesNull() throws { let reply = MessageSearchReply() let dict = reply.toList() - let copy = MessageSearchReply.fromList(dict) + let copy = MessageSearchReply.fromList(dict as [Any]) XCTAssertNil(copy?.result) } func testHandlesNullFirst() throws { let reply = MessageSearchReply(error: "foobar") let dict = reply.toList() - let copy = MessageSearchReply.fromList(dict) + let copy = MessageSearchReply.fromList(dict as [Any]) XCTAssertEqual(reply.error, copy?.error) } } diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 3599ab3c867..96ee79b98ca 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -129,21 +129,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = nilOrValue(value: list[0]) as! Bool? - let aNullableInt = nilOrValue(value: list[1]) as! Int64? - let aNullableInt64 = nilOrValue(value: list[2]) as! Int64? - let aNullableDouble = nilOrValue(value: list[3]) as! Double? - let aNullableByteArray = nilOrValue(value: list[4]) as! FlutterStandardTypedData? - let aNullable4ByteArray = nilOrValue(value: list[5]) as! FlutterStandardTypedData? - let aNullable8ByteArray = nilOrValue(value: list[6]) as! FlutterStandardTypedData? - let aNullableFloatArray = nilOrValue(value: list[7]) as! FlutterStandardTypedData? - let aNullableList = nilOrValue(value: list[8]) as! [Any]? - let aNullableMap = nilOrValue(value: list[9]) as! [AnyHashable: Any]? - let nullableNestedList = nilOrValue(value: list[10]) as! [[Bool?]?]? - let nullableMapWithAnnotations = nilOrValue(value: list[11]) as! [String?: String?]? - let nullableMapWithObject = nilOrValue(value: list[12]) as! [String?: Any?]? - let aNullableEnum = nilOrValue(value: list[13]) != nil ? AnEnum(rawValue: list[13] as! Int) : nilOrValue(value: list[13]) as! AnEnum? - let aNullableString = nilOrValue(value: list[14]) as! String? + let aNullableBool = (nilOrValue(value: list[0]) as Any) as! Bool? + let aNullableInt = (nilOrValue(value: list[1]) as Any) as! Int64? + let aNullableInt64 = (nilOrValue(value: list[2]) as Any) as! Int64? + let aNullableDouble = (nilOrValue(value: list[3]) as Any) as! Double? + let aNullableByteArray = (nilOrValue(value: list[4]) as Any) as! FlutterStandardTypedData? + let aNullable4ByteArray = (nilOrValue(value: list[5]) as Any) as! FlutterStandardTypedData? + let aNullable8ByteArray = (nilOrValue(value: list[6]) as Any) as! FlutterStandardTypedData? + let aNullableFloatArray = (nilOrValue(value: list[7]) as Any) as! FlutterStandardTypedData? + let aNullableList = (nilOrValue(value: list[8]) as Any) as! [Any]? + let aNullableMap = (nilOrValue(value: list[9]) as Any) as! [AnyHashable: Any]? + let nullableNestedList = (nilOrValue(value: list[10]) as Any) as! [[Bool?]?]? + let nullableMapWithAnnotations = (nilOrValue(value: list[11]) as Any) as! [String?: String?]? + let nullableMapWithObject = (nilOrValue(value: list[12]) as Any) as! [String?: Any?]? + var aNullableEnum: AnEnum? = nil + let enumVal13 = (nilOrValue(value: list[13]) as Any) as! Int? + if let aNullableEnumRawValue = enumVal13 { + aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) + } + let aNullableString = (nilOrValue(value: list[14]) as Any) as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -209,7 +213,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = nilOrValue(value: list[0]) as! [Any]? + let testList = (nilOrValue(value: list[0]) as Any) as! [Any]? return TestMessage( testList: testList @@ -609,7 +613,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = nilOrValue(value: args[0]) as! AllNullableTypes? + let everythingArg = (nilOrValue(value: args[0]) as Any) as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -643,7 +647,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = nilOrValue(value: args[0]) as! String? + let nullableStringArg = (nilOrValue(value: args[0]) as Any) as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -659,9 +663,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? - let aNullableIntArg = nilOrValue(value: args[1]) as! Int64? - let aNullableStringArg = nilOrValue(value: args[2]) as! String? + let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aNullableIntArg = (nilOrValue(value: args[1]) as Any) as! Int64? + let aNullableStringArg = (nilOrValue(value: args[2]) as Any) as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -677,7 +681,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = nilOrValue(value: args[0]) as! Int64? + let aNullableIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -693,7 +697,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = nilOrValue(value: args[0]) as! Double? + let aNullableDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -709,7 +713,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? + let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -725,7 +729,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = nilOrValue(value: args[0]) as! String? + let aNullableStringArg = (nilOrValue(value: args[0]) as Any) as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -741,7 +745,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? + let aNullableUint8ListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -773,7 +777,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = nilOrValue(value: args[0]) as! [Any?]? + let aNullableListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -789,7 +793,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? + let aNullableMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1032,7 +1036,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = nilOrValue(value: args[0]) as! AllNullableTypes? + let everythingArg = (nilOrValue(value: args[0]) as Any) as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1050,7 +1054,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = nilOrValue(value: args[0]) as! Int64? + let anIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1068,7 +1072,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = nilOrValue(value: args[0]) as! Double? + let aDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1086,7 +1090,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = nilOrValue(value: args[0]) as! Bool? + let aBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1104,7 +1108,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = nilOrValue(value: args[0]) as! String? + let aStringArg = (nilOrValue(value: args[0]) as Any) as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1122,7 +1126,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? + let aUint8ListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1158,7 +1162,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrValue(value: args[0]) as! [Any?]? + let aListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1176,7 +1180,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? + let aMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1255,9 +1259,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? - let aNullableIntArg = nilOrValue(value: args[1]) as! Int64? - let aNullableStringArg = nilOrValue(value: args[2]) as! String? + let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aNullableIntArg = (nilOrValue(value: args[1]) as Any) as! Int64? + let aNullableStringArg = (nilOrValue(value: args[2]) as Any) as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1393,7 +1397,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = nilOrValue(value: args[0]) as! Bool? + let aBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1410,7 +1414,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = nilOrValue(value: args[0]) as! Int64? + let anIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1427,7 +1431,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = nilOrValue(value: args[0]) as! Double? + let aDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1444,7 +1448,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = nilOrValue(value: args[0]) as! String? + let aStringArg = (nilOrValue(value: args[0]) as Any) as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1461,7 +1465,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? + let aListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1478,7 +1482,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrValue(value: args[0]) as! [Any?]? + let aListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1495,7 +1499,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? + let aMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1682,7 +1686,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! Bool? + let result = (nilOrValue(value: response) as Any) as! Bool? completion(result) } } @@ -1690,7 +1694,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! Int64? + let result = (nilOrValue(value: response) as Any) as! Int64? completion(result) } } @@ -1698,7 +1702,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! Double? + let result = (nilOrValue(value: response) as Any) as! Double? completion(result) } } @@ -1706,7 +1710,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! String? + let result = (nilOrValue(value: response) as Any) as! String? completion(result) } } @@ -1714,7 +1718,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! FlutterStandardTypedData? + let result = (nilOrValue(value: response) as Any) as! FlutterStandardTypedData? completion(result) } } @@ -1722,7 +1726,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! [Any?]? + let result = (nilOrValue(value: response) as Any) as! [Any?]? completion(result) } } @@ -1730,7 +1734,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! [String?: Any?]? + let result = (nilOrValue(value: response) as Any) as! [String?: Any?]? completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 3599ab3c867..96ee79b98ca 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -129,21 +129,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = nilOrValue(value: list[0]) as! Bool? - let aNullableInt = nilOrValue(value: list[1]) as! Int64? - let aNullableInt64 = nilOrValue(value: list[2]) as! Int64? - let aNullableDouble = nilOrValue(value: list[3]) as! Double? - let aNullableByteArray = nilOrValue(value: list[4]) as! FlutterStandardTypedData? - let aNullable4ByteArray = nilOrValue(value: list[5]) as! FlutterStandardTypedData? - let aNullable8ByteArray = nilOrValue(value: list[6]) as! FlutterStandardTypedData? - let aNullableFloatArray = nilOrValue(value: list[7]) as! FlutterStandardTypedData? - let aNullableList = nilOrValue(value: list[8]) as! [Any]? - let aNullableMap = nilOrValue(value: list[9]) as! [AnyHashable: Any]? - let nullableNestedList = nilOrValue(value: list[10]) as! [[Bool?]?]? - let nullableMapWithAnnotations = nilOrValue(value: list[11]) as! [String?: String?]? - let nullableMapWithObject = nilOrValue(value: list[12]) as! [String?: Any?]? - let aNullableEnum = nilOrValue(value: list[13]) != nil ? AnEnum(rawValue: list[13] as! Int) : nilOrValue(value: list[13]) as! AnEnum? - let aNullableString = nilOrValue(value: list[14]) as! String? + let aNullableBool = (nilOrValue(value: list[0]) as Any) as! Bool? + let aNullableInt = (nilOrValue(value: list[1]) as Any) as! Int64? + let aNullableInt64 = (nilOrValue(value: list[2]) as Any) as! Int64? + let aNullableDouble = (nilOrValue(value: list[3]) as Any) as! Double? + let aNullableByteArray = (nilOrValue(value: list[4]) as Any) as! FlutterStandardTypedData? + let aNullable4ByteArray = (nilOrValue(value: list[5]) as Any) as! FlutterStandardTypedData? + let aNullable8ByteArray = (nilOrValue(value: list[6]) as Any) as! FlutterStandardTypedData? + let aNullableFloatArray = (nilOrValue(value: list[7]) as Any) as! FlutterStandardTypedData? + let aNullableList = (nilOrValue(value: list[8]) as Any) as! [Any]? + let aNullableMap = (nilOrValue(value: list[9]) as Any) as! [AnyHashable: Any]? + let nullableNestedList = (nilOrValue(value: list[10]) as Any) as! [[Bool?]?]? + let nullableMapWithAnnotations = (nilOrValue(value: list[11]) as Any) as! [String?: String?]? + let nullableMapWithObject = (nilOrValue(value: list[12]) as Any) as! [String?: Any?]? + var aNullableEnum: AnEnum? = nil + let enumVal13 = (nilOrValue(value: list[13]) as Any) as! Int? + if let aNullableEnumRawValue = enumVal13 { + aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) + } + let aNullableString = (nilOrValue(value: list[14]) as Any) as! String? return AllNullableTypes( aNullableBool: aNullableBool, @@ -209,7 +213,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = nilOrValue(value: list[0]) as! [Any]? + let testList = (nilOrValue(value: list[0]) as Any) as! [Any]? return TestMessage( testList: testList @@ -609,7 +613,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = nilOrValue(value: args[0]) as! AllNullableTypes? + let everythingArg = (nilOrValue(value: args[0]) as Any) as! AllNullableTypes? do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -643,7 +647,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = nilOrValue(value: args[0]) as! String? + let nullableStringArg = (nilOrValue(value: args[0]) as Any) as! String? do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -659,9 +663,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? - let aNullableIntArg = nilOrValue(value: args[1]) as! Int64? - let aNullableStringArg = nilOrValue(value: args[2]) as! String? + let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aNullableIntArg = (nilOrValue(value: args[1]) as Any) as! Int64? + let aNullableStringArg = (nilOrValue(value: args[2]) as Any) as! String? do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -677,7 +681,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = nilOrValue(value: args[0]) as! Int64? + let aNullableIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -693,7 +697,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = nilOrValue(value: args[0]) as! Double? + let aNullableDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -709,7 +713,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? + let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -725,7 +729,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = nilOrValue(value: args[0]) as! String? + let aNullableStringArg = (nilOrValue(value: args[0]) as Any) as! String? do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -741,7 +745,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? + let aNullableUint8ListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -773,7 +777,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = nilOrValue(value: args[0]) as! [Any?]? + let aNullableListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -789,7 +793,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? + let aNullableMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1032,7 +1036,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = nilOrValue(value: args[0]) as! AllNullableTypes? + let everythingArg = (nilOrValue(value: args[0]) as Any) as! AllNullableTypes? api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1050,7 +1054,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = nilOrValue(value: args[0]) as! Int64? + let anIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1068,7 +1072,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = nilOrValue(value: args[0]) as! Double? + let aDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1086,7 +1090,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = nilOrValue(value: args[0]) as! Bool? + let aBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1104,7 +1108,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = nilOrValue(value: args[0]) as! String? + let aStringArg = (nilOrValue(value: args[0]) as Any) as! String? api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1122,7 +1126,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? + let aUint8ListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1158,7 +1162,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrValue(value: args[0]) as! [Any?]? + let aListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1176,7 +1180,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? + let aMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1255,9 +1259,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = nilOrValue(value: args[0]) as! Bool? - let aNullableIntArg = nilOrValue(value: args[1]) as! Int64? - let aNullableStringArg = nilOrValue(value: args[2]) as! String? + let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aNullableIntArg = (nilOrValue(value: args[1]) as Any) as! Int64? + let aNullableStringArg = (nilOrValue(value: args[2]) as Any) as! String? api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1393,7 +1397,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = nilOrValue(value: args[0]) as! Bool? + let aBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1410,7 +1414,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = nilOrValue(value: args[0]) as! Int64? + let anIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1427,7 +1431,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = nilOrValue(value: args[0]) as! Double? + let aDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1444,7 +1448,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = nilOrValue(value: args[0]) as! String? + let aStringArg = (nilOrValue(value: args[0]) as Any) as! String? api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1461,7 +1465,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrValue(value: args[0]) as! FlutterStandardTypedData? + let aListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1478,7 +1482,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = nilOrValue(value: args[0]) as! [Any?]? + let aListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1495,7 +1499,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = nilOrValue(value: args[0]) as! [String?: Any?]? + let aMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1682,7 +1686,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! Bool? + let result = (nilOrValue(value: response) as Any) as! Bool? completion(result) } } @@ -1690,7 +1694,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! Int64? + let result = (nilOrValue(value: response) as Any) as! Int64? completion(result) } } @@ -1698,7 +1702,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! Double? + let result = (nilOrValue(value: response) as Any) as! Double? completion(result) } } @@ -1706,7 +1710,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! String? + let result = (nilOrValue(value: response) as Any) as! String? completion(result) } } @@ -1714,7 +1718,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! FlutterStandardTypedData? + let result = (nilOrValue(value: response) as Any) as! FlutterStandardTypedData? completion(result) } } @@ -1722,7 +1726,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! [Any?]? + let result = (nilOrValue(value: response) as Any) as! [Any?]? completion(result) } } @@ -1730,7 +1734,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = nilOrValue(value: response) as! [String?: Any?]? + let result = (nilOrValue(value: response) as Any) as! [String?: Any?]? completion(result) } } diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index c5df0e4309f..79d9d8832e7 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -83,7 +83,7 @@ void main() { generator.generate(swiftOptions, root, sink); final String code = sink.toString(); expect(code, contains('enum Foo: Int')); - expect(code, contains('let fooArg = Foo(rawValue: args[0] as! Int)')); + expect(code, contains('let fooArg = Foo(rawValue: args[0] as! Int)!')); }); test('gen one host api', () { From 6d5271fc3e314c4a13705f2f711aee8d575b06d9 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 29 Mar 2023 21:23:49 -0700 Subject: [PATCH 07/27] gen test --- packages/pigeon/test/swift_generator_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index 79d9d8832e7..0cf9e25f6ae 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -915,7 +915,7 @@ void main() { const SwiftGenerator generator = SwiftGenerator(); generator.generate(swiftOptions, root, sink); final String code = sink.toString(); - expect(code, contains('nilOrValue(value: args[0]) as! Int64?')); + expect(code, contains('(nilOrValue(value: args[0]) as Any) as! Int64?')); }); test('nullable argument flutter', () { From 29ac0ec674cd60da0fdc8a52943d40625959646e Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 30 Mar 2023 10:34:03 -0700 Subject: [PATCH 08/27] simplify casting enum --- packages/pigeon/lib/swift_generator.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index cfa1a883618..4fc1809c101 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -684,9 +684,7 @@ String _camelCase(String text) { String _castForceUnwrap(String value, TypeDeclaration type, Root root) { if (isEnum(root, type)) { - final String nullableConditionPrefix = type.isNullable ? '' : ''; - final String nullableConditionSuffix = type.isNullable ? '' : '!'; - return '$nullableConditionPrefix${_swiftTypeForDartType(type)}(rawValue: $value as! Int)$nullableConditionSuffix'; + return '${_swiftTypeForDartType(type)}(rawValue: $value as! Int)!'; } else if (type.baseName == 'Object') { // Special-cased to avoid warnings about using 'as' with Any. return value; From 4a7b40847e7ce32f0ba764206cabccd2400d3bf6 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 30 Mar 2023 16:58:22 -0700 Subject: [PATCH 09/27] Figured it out --- packages/pigeon/lib/swift_generator.dart | 30 +-- .../example/ios/RunnerTests/RunnerTests.swift | 6 +- .../ios/Classes/CoreTests.gen.swift | 227 +++++++++--------- .../macos/Classes/CoreTests.gen.swift | 227 +++++++++--------- 4 files changed, 248 insertions(+), 242 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 4fc1809c101..9795566dae0 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -188,13 +188,13 @@ import FlutterMacOS indent.write('if let ${field.name}List = $listValue as! [Any]? '); indent.addScoped('{', '}', () { indent.writeln( - '${field.name} = $fieldType.fromList(${field.name}List as [Any])'); + '${field.name} = $fieldType.fromList(${field.name}List)'); }); } else if (!hostDatatype.isBuiltin && customEnumNames.contains(field.type.baseName)) { indent.writeln('var ${field.name}: $fieldType? = nil'); indent.writeln( - 'let enumVal$index = ${_castForceUnwrap(listValue, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); + 'let enumVal$index: Int? = ${_castForceUnwrap(listValue, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); indent.write('if let ${field.name}RawValue = enumVal$index '); indent.addScoped('{', '}', () { indent.writeln( @@ -202,19 +202,16 @@ import FlutterMacOS }); } else { indent.writeln( - 'let ${field.name} = ${_castForceUnwrap(listValue, field.type, root)} '); + 'let ${field.name}: $fieldType? = ${_castForceUnwrap(listValue, field.type, root)} '); } } else { if (!hostDatatype.isBuiltin && customClassNames.contains(field.type.baseName)) { indent.writeln( 'let ${field.name} = $fieldType.fromList($listValue as! [Any])!'); - } else if (!hostDatatype.isBuiltin && - customEnumNames.contains(field.type.baseName)) { - indent.writeln( - 'let ${field.name} = $fieldType(rawValue: $listValue as! Int)!'); } else { - indent.writeln('let ${field.name} = $listValue as! $fieldType'); + indent.writeln( + 'let ${field.name}: $fieldType = ${_castForceUnwrap(listValue, field.type, root)}'); } } }); @@ -349,7 +346,7 @@ import FlutterMacOS } else { indent.addScoped('{ response in', '}', () { indent.writeln( - 'let result = ${_castForceUnwrap("response", func.returnType, root)}'); + 'let result: ${_nullsafeSwiftTypeForDartType(func.returnType)} = ${_castForceUnwrap("response", func.returnType, root)}'); indent.writeln('completion(result)'); }); } @@ -465,7 +462,7 @@ import FlutterMacOS _getSafeArgumentName(index, arg.namedType); final String argIndex = 'args[$index]'; indent.writeln( - 'let $argName = ${_castForceUnwrap(argIndex, arg.type, root)}'); + 'let $argName: ${_nullsafeSwiftTypeForDartType(arg.type)} = ${_castForceUnwrap(argIndex, arg.type, root)}'); if (arg.label == '_') { methodArgument.add(argName); @@ -643,11 +640,14 @@ import FlutterMacOS void _writeNilOrType(Indent indent) { indent.format(''' -private func nilOrValue(value: Any?) -> Any? { - if (value is NSNull) { - return nil +private func nilOrValue(value: Any?) -> T? { + if value is NSNull { + return nil + } + if let num = value as? T { + return num } - return value + return (value as Any) as! T? }'''); } @@ -689,7 +689,7 @@ String _castForceUnwrap(String value, TypeDeclaration type, Root root) { // Special-cased to avoid warnings about using 'as' with Any. return value; } else if (type.isNullable) { - return '(nilOrValue(value: $value) as Any) as! ${_swiftTypeForDartType(type)}?'; + return 'nilOrValue(value: $value)'; } else { return '$value as! ${_swiftTypeForDartType(type)}'; } diff --git a/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/RunnerTests.swift b/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/RunnerTests.swift index ab90cacf373..4cbd6b0d1f2 100644 --- a/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/RunnerTests.swift +++ b/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/RunnerTests.swift @@ -10,21 +10,21 @@ class RunnerTests: XCTestCase { func testToListAndBack() throws { let reply = MessageSearchReply(result: "foobar") let dict = reply.toList() - let copy = MessageSearchReply.fromList(dict as [Any]) + let copy = MessageSearchReply.fromList(dict) XCTAssertEqual(reply.result, copy?.result) } func testHandlesNull() throws { let reply = MessageSearchReply() let dict = reply.toList() - let copy = MessageSearchReply.fromList(dict as [Any]) + let copy = MessageSearchReply.fromList(dict) XCTAssertNil(copy?.result) } func testHandlesNullFirst() throws { let reply = MessageSearchReply(error: "foobar") let dict = reply.toList() - let copy = MessageSearchReply.fromList(dict as [Any]) + let copy = MessageSearchReply.fromList(dict) XCTAssertEqual(reply.error, copy?.error) } } diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index d3602abd5c5..94c05e58027 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -35,11 +35,14 @@ private func wrapError(_ error: Any) -> [Any?] { ] } -private func nilOrValue(value: Any?) -> Any? { - if (value is NSNull) { - return nil +private func nilOrValue(value: Any?) -> T? { + if value is NSNull { + return nil } - return value + if let num = value as? T { + return num + } + return (value as Any) as! T? } enum AnEnum: Int { @@ -64,18 +67,18 @@ struct AllTypes { var aString: String static func fromList(_ list: [Any]) -> AllTypes? { - let aBool = list[0] as! Bool - let anInt = list[1] as! Int64 - let anInt64 = list[2] as! Int64 - let aDouble = list[3] as! Double - let aByteArray = list[4] as! FlutterStandardTypedData - let a4ByteArray = list[5] as! FlutterStandardTypedData - let a8ByteArray = list[6] as! FlutterStandardTypedData - let aFloatArray = list[7] as! FlutterStandardTypedData - let aList = list[8] as! [Any] - let aMap = list[9] as! [AnyHashable: Any] - let anEnum = AnEnum(rawValue: list[10] as! Int)! - let aString = list[11] as! String + let aBool: Bool = list[0] as! Bool + let anInt: Int64 = list[1] as! Int64 + let anInt64: Int64 = list[2] as! Int64 + let aDouble: Double = list[3] as! Double + let aByteArray: FlutterStandardTypedData = list[4] as! FlutterStandardTypedData + let a4ByteArray: FlutterStandardTypedData = list[5] as! FlutterStandardTypedData + let a8ByteArray: FlutterStandardTypedData = list[6] as! FlutterStandardTypedData + let aFloatArray: FlutterStandardTypedData = list[7] as! FlutterStandardTypedData + let aList: [Any] = list[8] as! [Any] + let aMap: [AnyHashable: Any] = list[9] as! [AnyHashable: Any] + let anEnum: AnEnum = AnEnum(rawValue: list[10] as! Int)! + let aString: String = list[11] as! String return AllTypes( aBool: aBool, @@ -129,25 +132,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = (nilOrValue(value: list[0]) as Any) as! Bool? - let aNullableInt = (nilOrValue(value: list[1]) as Any) as! Int64? - let aNullableInt64 = (nilOrValue(value: list[2]) as Any) as! Int64? - let aNullableDouble = (nilOrValue(value: list[3]) as Any) as! Double? - let aNullableByteArray = (nilOrValue(value: list[4]) as Any) as! FlutterStandardTypedData? - let aNullable4ByteArray = (nilOrValue(value: list[5]) as Any) as! FlutterStandardTypedData? - let aNullable8ByteArray = (nilOrValue(value: list[6]) as Any) as! FlutterStandardTypedData? - let aNullableFloatArray = (nilOrValue(value: list[7]) as Any) as! FlutterStandardTypedData? - let aNullableList = (nilOrValue(value: list[8]) as Any) as! [Any]? - let aNullableMap = (nilOrValue(value: list[9]) as Any) as! [AnyHashable: Any]? - let nullableNestedList = (nilOrValue(value: list[10]) as Any) as! [[Bool?]?]? - let nullableMapWithAnnotations = (nilOrValue(value: list[11]) as Any) as! [String?: String?]? - let nullableMapWithObject = (nilOrValue(value: list[12]) as Any) as! [String?: Any?]? + let aNullableBool: Bool? = nilOrValue(value: list[0]) + let aNullableInt: Int64? = nilOrValue(value: list[1]) + let aNullableInt64: Int64? = nilOrValue(value: list[2]) + let aNullableDouble: Double? = nilOrValue(value: list[3]) + let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(value: list[4]) + let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(value: list[5]) + let aNullable8ByteArray: FlutterStandardTypedData? = nilOrValue(value: list[6]) + let aNullableFloatArray: FlutterStandardTypedData? = nilOrValue(value: list[7]) + let aNullableList: [Any]? = nilOrValue(value: list[8]) + let aNullableMap: [AnyHashable: Any]? = nilOrValue(value: list[9]) + let nullableNestedList: [[Bool?]?]? = nilOrValue(value: list[10]) + let nullableMapWithAnnotations: [String?: String?]? = nilOrValue(value: list[11]) + let nullableMapWithObject: [String?: Any?]? = nilOrValue(value: list[12]) var aNullableEnum: AnEnum? = nil - let enumVal13 = (nilOrValue(value: list[13]) as Any) as! Int? + let enumVal13: Int? = nilOrValue(value: list[13]) if let aNullableEnumRawValue = enumVal13 { aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = (nilOrValue(value: list[14]) as Any) as! String? + let aNullableString: String? = nilOrValue(value: list[14]) return AllNullableTypes( aNullableBool: aNullableBool, @@ -213,7 +216,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = (nilOrValue(value: list[0]) as Any) as! [Any]? + let testList: [Any]? = nilOrValue(value: list[0]) return TestMessage( testList: testList @@ -427,7 +430,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllTypes + let everythingArg: AllTypes = args[0] as! AllTypes do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -485,7 +488,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = args[0] as! Int64 + let anIntArg: Int64 = args[0] as! Int64 do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -501,7 +504,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double + let aDoubleArg: Double = args[0] as! Double do { let result = try api.echo(aDoubleArg) reply(wrapResult(result)) @@ -517,7 +520,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool + let aBoolArg: Bool = args[0] as! Bool do { let result = try api.echo(aBoolArg) reply(wrapResult(result)) @@ -533,7 +536,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String + let aStringArg: String = args[0] as! String do { let result = try api.echo(aStringArg) reply(wrapResult(result)) @@ -549,7 +552,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = args[0] as! FlutterStandardTypedData + let aUint8ListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData do { let result = try api.echo(aUint8ListArg) reply(wrapResult(result)) @@ -565,7 +568,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg = args[0] + let anObjectArg: Any = args[0] do { let result = try api.echo(anObjectArg) reply(wrapResult(result)) @@ -581,7 +584,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?] + let aListArg: [Any?] = args[0] as! [Any?] do { let result = try api.echo(aListArg) reply(wrapResult(result)) @@ -597,7 +600,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?] + let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] do { let result = try api.echo(aMapArg) reply(wrapResult(result)) @@ -613,7 +616,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (nilOrValue(value: args[0]) as Any) as! AllNullableTypes? + let everythingArg: AllNullableTypes? = nilOrValue(value: args[0]) do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -630,7 +633,7 @@ class HostIntegrationCoreApiSetup { if let api = api { extractNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let wrapperArg = args[0] as! AllNullableTypesWrapper + let wrapperArg: AllNullableTypesWrapper = args[0] as! AllNullableTypesWrapper do { let result = try api.extractNestedNullableString(from: wrapperArg) reply(wrapResult(result)) @@ -647,7 +650,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = (nilOrValue(value: args[0]) as Any) as! String? + let nullableStringArg: String? = nilOrValue(value: args[0]) do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -663,9 +666,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? - let aNullableIntArg = (nilOrValue(value: args[1]) as Any) as! Int64? - let aNullableStringArg = (nilOrValue(value: args[2]) as Any) as! String? + let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) + let aNullableIntArg: Int64? = nilOrValue(value: args[1]) + let aNullableStringArg: String? = nilOrValue(value: args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -681,7 +684,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? + let aNullableIntArg: Int64? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -697,7 +700,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? + let aNullableDoubleArg: Double? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -713,7 +716,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -729,7 +732,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = (nilOrValue(value: args[0]) as Any) as! String? + let aNullableStringArg: String? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -745,7 +748,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? + let aNullableUint8ListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -761,7 +764,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableObjectArg = args[0] + let aNullableObjectArg: Any? = args[0] do { let result = try api.echo(aNullableObjectArg) reply(wrapResult(result)) @@ -777,7 +780,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? + let aNullableListArg: [Any?]? = nilOrValue(value: args[0]) do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -793,7 +796,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? + let aNullableMapArg: [String?: Any?]? = nilOrValue(value: args[0]) do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -826,7 +829,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = args[0] as! Int64 + let anIntArg: Int64 = args[0] as! Int64 api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -844,7 +847,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double + let aDoubleArg: Double = args[0] as! Double api.echoAsync(aDoubleArg) { result in switch result { case .success(let res): @@ -862,7 +865,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool + let aBoolArg: Bool = args[0] as! Bool api.echoAsync(aBoolArg) { result in switch result { case .success(let res): @@ -880,7 +883,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String + let aStringArg: String = args[0] as! String api.echoAsync(aStringArg) { result in switch result { case .success(let res): @@ -898,7 +901,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = args[0] as! FlutterStandardTypedData + let aUint8ListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData api.echoAsync(aUint8ListArg) { result in switch result { case .success(let res): @@ -916,7 +919,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg = args[0] + let anObjectArg: Any = args[0] api.echoAsync(anObjectArg) { result in switch result { case .success(let res): @@ -934,7 +937,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?] + let aListArg: [Any?] = args[0] as! [Any?] api.echoAsync(aListArg) { result in switch result { case .success(let res): @@ -952,7 +955,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?] + let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] api.echoAsync(aMapArg) { result in switch result { case .success(let res): @@ -1018,7 +1021,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllTypes + let everythingArg: AllTypes = args[0] as! AllTypes api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1036,7 +1039,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (nilOrValue(value: args[0]) as Any) as! AllNullableTypes? + let everythingArg: AllNullableTypes? = nilOrValue(value: args[0]) api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1054,7 +1057,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? + let anIntArg: Int64? = nilOrValue(value: args[0]) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1072,7 +1075,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? + let aDoubleArg: Double? = nilOrValue(value: args[0]) api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1090,7 +1093,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aBoolArg: Bool? = nilOrValue(value: args[0]) api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1108,7 +1111,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (nilOrValue(value: args[0]) as Any) as! String? + let aStringArg: String? = nilOrValue(value: args[0]) api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1126,7 +1129,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? + let aUint8ListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1144,7 +1147,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg = args[0] + let anObjectArg: Any? = args[0] api.echoAsyncNullable(anObjectArg) { result in switch result { case .success(let res): @@ -1162,7 +1165,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? + let aListArg: [Any?]? = nilOrValue(value: args[0]) api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1180,7 +1183,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? + let aMapArg: [String?: Any?]? = nilOrValue(value: args[0]) api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1242,7 +1245,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllTypes + let everythingArg: AllTypes = args[0] as! AllTypes api.callFlutterEcho(everythingArg) { result in switch result { case .success(let res): @@ -1259,9 +1262,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? - let aNullableIntArg = (nilOrValue(value: args[1]) as Any) as! Int64? - let aNullableStringArg = (nilOrValue(value: args[2]) as Any) as! String? + let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) + let aNullableIntArg: Int64? = nilOrValue(value: args[1]) + let aNullableStringArg: String? = nilOrValue(value: args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1278,7 +1281,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool + let aBoolArg: Bool = args[0] as! Bool api.callFlutterEcho(aBoolArg) { result in switch result { case .success(let res): @@ -1295,7 +1298,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = args[0] as! Int64 + let anIntArg: Int64 = args[0] as! Int64 api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1312,7 +1315,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double + let aDoubleArg: Double = args[0] as! Double api.callFlutterEcho(aDoubleArg) { result in switch result { case .success(let res): @@ -1329,7 +1332,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String + let aStringArg: String = args[0] as! String api.callFlutterEcho(aStringArg) { result in switch result { case .success(let res): @@ -1346,7 +1349,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! FlutterStandardTypedData + let aListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData api.callFlutterEcho(aListArg) { result in switch result { case .success(let res): @@ -1363,7 +1366,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?] + let aListArg: [Any?] = args[0] as! [Any?] api.callFlutterEcho(aListArg) { result in switch result { case .success(let res): @@ -1380,7 +1383,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?] + let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] api.callFlutterEcho(aMapArg) { result in switch result { case .success(let res): @@ -1397,7 +1400,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aBoolArg: Bool? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1414,7 +1417,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? + let anIntArg: Int64? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1431,7 +1434,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? + let aDoubleArg: Double? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1448,7 +1451,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (nilOrValue(value: args[0]) as Any) as! String? + let aStringArg: String? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1465,7 +1468,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? + let aListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1482,7 +1485,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? + let aListArg: [Any?]? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1499,7 +1502,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? + let aMapArg: [String?: Any?]? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1589,7 +1592,7 @@ class FlutterIntegrationCoreApi { func throwError(completion: @escaping (Any?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.throwError", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage(nil) { response in - let result = response + let result: Any? = response completion(result) } } @@ -1604,7 +1607,7 @@ class FlutterIntegrationCoreApi { func echo(_ everythingArg: AllTypes, completion: @escaping (AllTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([everythingArg] as [Any?]) { response in - let result = response as! AllTypes + let result: AllTypes = response as! AllTypes completion(result) } } @@ -1612,7 +1615,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ everythingArg: AllNullableTypes, completion: @escaping (AllNullableTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllNullableTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([everythingArg] as [Any?]) { response in - let result = response as! AllNullableTypes + let result: AllNullableTypes = response as! AllNullableTypes completion(result) } } @@ -1622,7 +1625,7 @@ class FlutterIntegrationCoreApi { func sendMultipleNullableTypes(aBool aNullableBoolArg: Bool?, anInt aNullableIntArg: Int64?, aString aNullableStringArg: String?, completion: @escaping (AllNullableTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.sendMultipleNullableTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aNullableBoolArg, aNullableIntArg, aNullableStringArg] as [Any?]) { response in - let result = response as! AllNullableTypes + let result: AllNullableTypes = response as! AllNullableTypes completion(result) } } @@ -1630,7 +1633,7 @@ class FlutterIntegrationCoreApi { func echo(_ aBoolArg: Bool, completion: @escaping (Bool) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = response as! Bool + let result: Bool = response as! Bool completion(result) } } @@ -1638,7 +1641,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = response as! Int64 + let result: Int64 = response as! Int64 completion(result) } } @@ -1646,7 +1649,7 @@ class FlutterIntegrationCoreApi { func echo(_ aDoubleArg: Double, completion: @escaping (Double) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = response as! Double + let result: Double = response as! Double completion(result) } } @@ -1654,7 +1657,7 @@ class FlutterIntegrationCoreApi { func echo(_ aStringArg: String, completion: @escaping (String) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = response as! String + let result: String = response as! String completion(result) } } @@ -1662,7 +1665,7 @@ class FlutterIntegrationCoreApi { func echo(_ aListArg: FlutterStandardTypedData, completion: @escaping (FlutterStandardTypedData) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = response as! FlutterStandardTypedData + let result: FlutterStandardTypedData = response as! FlutterStandardTypedData completion(result) } } @@ -1670,7 +1673,7 @@ class FlutterIntegrationCoreApi { func echo(_ aListArg: [Any?], completion: @escaping ([Any?]) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = response as! [Any?] + let result: [Any?] = response as! [Any?] completion(result) } } @@ -1678,7 +1681,7 @@ class FlutterIntegrationCoreApi { func echo(_ aMapArg: [String?: Any?], completion: @escaping ([String?: Any?]) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = response as! [String?: Any?] + let result: [String?: Any?] = response as! [String?: Any?] completion(result) } } @@ -1686,7 +1689,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! Bool? + let result: Bool? = nilOrValue(value: response) completion(result) } } @@ -1694,7 +1697,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! Int64? + let result: Int64? = nilOrValue(value: response) completion(result) } } @@ -1702,7 +1705,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! Double? + let result: Double? = nilOrValue(value: response) completion(result) } } @@ -1710,7 +1713,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! String? + let result: String? = nilOrValue(value: response) completion(result) } } @@ -1718,7 +1721,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! FlutterStandardTypedData? + let result: FlutterStandardTypedData? = nilOrValue(value: response) completion(result) } } @@ -1726,7 +1729,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! [Any?]? + let result: [Any?]? = nilOrValue(value: response) completion(result) } } @@ -1734,7 +1737,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! [String?: Any?]? + let result: [String?: Any?]? = nilOrValue(value: response) completion(result) } } @@ -1750,7 +1753,7 @@ class FlutterIntegrationCoreApi { func echoAsync(_ aStringArg: String, completion: @escaping (String) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAsyncString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = response as! String + let result: String = response as! String completion(result) } } @@ -1799,7 +1802,7 @@ class HostSmallApiSetup { if let api = api { echoChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String + let aStringArg: String = args[0] as! String api.echo(aString: aStringArg) { result in switch result { case .success(let res): @@ -1879,7 +1882,7 @@ class FlutterSmallApi { func echo(_ msgArg: TestMessage, completion: @escaping (TestMessage) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterSmallApi.echoWrappedList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([msgArg] as [Any?]) { response in - let result = response as! TestMessage + let result: TestMessage = response as! TestMessage completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index d3602abd5c5..94c05e58027 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -35,11 +35,14 @@ private func wrapError(_ error: Any) -> [Any?] { ] } -private func nilOrValue(value: Any?) -> Any? { - if (value is NSNull) { - return nil +private func nilOrValue(value: Any?) -> T? { + if value is NSNull { + return nil } - return value + if let num = value as? T { + return num + } + return (value as Any) as! T? } enum AnEnum: Int { @@ -64,18 +67,18 @@ struct AllTypes { var aString: String static func fromList(_ list: [Any]) -> AllTypes? { - let aBool = list[0] as! Bool - let anInt = list[1] as! Int64 - let anInt64 = list[2] as! Int64 - let aDouble = list[3] as! Double - let aByteArray = list[4] as! FlutterStandardTypedData - let a4ByteArray = list[5] as! FlutterStandardTypedData - let a8ByteArray = list[6] as! FlutterStandardTypedData - let aFloatArray = list[7] as! FlutterStandardTypedData - let aList = list[8] as! [Any] - let aMap = list[9] as! [AnyHashable: Any] - let anEnum = AnEnum(rawValue: list[10] as! Int)! - let aString = list[11] as! String + let aBool: Bool = list[0] as! Bool + let anInt: Int64 = list[1] as! Int64 + let anInt64: Int64 = list[2] as! Int64 + let aDouble: Double = list[3] as! Double + let aByteArray: FlutterStandardTypedData = list[4] as! FlutterStandardTypedData + let a4ByteArray: FlutterStandardTypedData = list[5] as! FlutterStandardTypedData + let a8ByteArray: FlutterStandardTypedData = list[6] as! FlutterStandardTypedData + let aFloatArray: FlutterStandardTypedData = list[7] as! FlutterStandardTypedData + let aList: [Any] = list[8] as! [Any] + let aMap: [AnyHashable: Any] = list[9] as! [AnyHashable: Any] + let anEnum: AnEnum = AnEnum(rawValue: list[10] as! Int)! + let aString: String = list[11] as! String return AllTypes( aBool: aBool, @@ -129,25 +132,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool = (nilOrValue(value: list[0]) as Any) as! Bool? - let aNullableInt = (nilOrValue(value: list[1]) as Any) as! Int64? - let aNullableInt64 = (nilOrValue(value: list[2]) as Any) as! Int64? - let aNullableDouble = (nilOrValue(value: list[3]) as Any) as! Double? - let aNullableByteArray = (nilOrValue(value: list[4]) as Any) as! FlutterStandardTypedData? - let aNullable4ByteArray = (nilOrValue(value: list[5]) as Any) as! FlutterStandardTypedData? - let aNullable8ByteArray = (nilOrValue(value: list[6]) as Any) as! FlutterStandardTypedData? - let aNullableFloatArray = (nilOrValue(value: list[7]) as Any) as! FlutterStandardTypedData? - let aNullableList = (nilOrValue(value: list[8]) as Any) as! [Any]? - let aNullableMap = (nilOrValue(value: list[9]) as Any) as! [AnyHashable: Any]? - let nullableNestedList = (nilOrValue(value: list[10]) as Any) as! [[Bool?]?]? - let nullableMapWithAnnotations = (nilOrValue(value: list[11]) as Any) as! [String?: String?]? - let nullableMapWithObject = (nilOrValue(value: list[12]) as Any) as! [String?: Any?]? + let aNullableBool: Bool? = nilOrValue(value: list[0]) + let aNullableInt: Int64? = nilOrValue(value: list[1]) + let aNullableInt64: Int64? = nilOrValue(value: list[2]) + let aNullableDouble: Double? = nilOrValue(value: list[3]) + let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(value: list[4]) + let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(value: list[5]) + let aNullable8ByteArray: FlutterStandardTypedData? = nilOrValue(value: list[6]) + let aNullableFloatArray: FlutterStandardTypedData? = nilOrValue(value: list[7]) + let aNullableList: [Any]? = nilOrValue(value: list[8]) + let aNullableMap: [AnyHashable: Any]? = nilOrValue(value: list[9]) + let nullableNestedList: [[Bool?]?]? = nilOrValue(value: list[10]) + let nullableMapWithAnnotations: [String?: String?]? = nilOrValue(value: list[11]) + let nullableMapWithObject: [String?: Any?]? = nilOrValue(value: list[12]) var aNullableEnum: AnEnum? = nil - let enumVal13 = (nilOrValue(value: list[13]) as Any) as! Int? + let enumVal13: Int? = nilOrValue(value: list[13]) if let aNullableEnumRawValue = enumVal13 { aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) } - let aNullableString = (nilOrValue(value: list[14]) as Any) as! String? + let aNullableString: String? = nilOrValue(value: list[14]) return AllNullableTypes( aNullableBool: aNullableBool, @@ -213,7 +216,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList = (nilOrValue(value: list[0]) as Any) as! [Any]? + let testList: [Any]? = nilOrValue(value: list[0]) return TestMessage( testList: testList @@ -427,7 +430,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllTypes + let everythingArg: AllTypes = args[0] as! AllTypes do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -485,7 +488,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = args[0] as! Int64 + let anIntArg: Int64 = args[0] as! Int64 do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -501,7 +504,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double + let aDoubleArg: Double = args[0] as! Double do { let result = try api.echo(aDoubleArg) reply(wrapResult(result)) @@ -517,7 +520,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool + let aBoolArg: Bool = args[0] as! Bool do { let result = try api.echo(aBoolArg) reply(wrapResult(result)) @@ -533,7 +536,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String + let aStringArg: String = args[0] as! String do { let result = try api.echo(aStringArg) reply(wrapResult(result)) @@ -549,7 +552,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = args[0] as! FlutterStandardTypedData + let aUint8ListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData do { let result = try api.echo(aUint8ListArg) reply(wrapResult(result)) @@ -565,7 +568,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg = args[0] + let anObjectArg: Any = args[0] do { let result = try api.echo(anObjectArg) reply(wrapResult(result)) @@ -581,7 +584,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?] + let aListArg: [Any?] = args[0] as! [Any?] do { let result = try api.echo(aListArg) reply(wrapResult(result)) @@ -597,7 +600,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?] + let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] do { let result = try api.echo(aMapArg) reply(wrapResult(result)) @@ -613,7 +616,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (nilOrValue(value: args[0]) as Any) as! AllNullableTypes? + let everythingArg: AllNullableTypes? = nilOrValue(value: args[0]) do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -630,7 +633,7 @@ class HostIntegrationCoreApiSetup { if let api = api { extractNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let wrapperArg = args[0] as! AllNullableTypesWrapper + let wrapperArg: AllNullableTypesWrapper = args[0] as! AllNullableTypesWrapper do { let result = try api.extractNestedNullableString(from: wrapperArg) reply(wrapResult(result)) @@ -647,7 +650,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg = (nilOrValue(value: args[0]) as Any) as! String? + let nullableStringArg: String? = nilOrValue(value: args[0]) do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -663,9 +666,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? - let aNullableIntArg = (nilOrValue(value: args[1]) as Any) as! Int64? - let aNullableStringArg = (nilOrValue(value: args[2]) as Any) as! String? + let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) + let aNullableIntArg: Int64? = nilOrValue(value: args[1]) + let aNullableStringArg: String? = nilOrValue(value: args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -681,7 +684,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? + let aNullableIntArg: Int64? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -697,7 +700,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? + let aNullableDoubleArg: Double? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -713,7 +716,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -729,7 +732,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg = (nilOrValue(value: args[0]) as Any) as! String? + let aNullableStringArg: String? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -745,7 +748,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? + let aNullableUint8ListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -761,7 +764,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableObjectArg = args[0] + let aNullableObjectArg: Any? = args[0] do { let result = try api.echo(aNullableObjectArg) reply(wrapResult(result)) @@ -777,7 +780,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? + let aNullableListArg: [Any?]? = nilOrValue(value: args[0]) do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -793,7 +796,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? + let aNullableMapArg: [String?: Any?]? = nilOrValue(value: args[0]) do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -826,7 +829,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = args[0] as! Int64 + let anIntArg: Int64 = args[0] as! Int64 api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -844,7 +847,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double + let aDoubleArg: Double = args[0] as! Double api.echoAsync(aDoubleArg) { result in switch result { case .success(let res): @@ -862,7 +865,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool + let aBoolArg: Bool = args[0] as! Bool api.echoAsync(aBoolArg) { result in switch result { case .success(let res): @@ -880,7 +883,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String + let aStringArg: String = args[0] as! String api.echoAsync(aStringArg) { result in switch result { case .success(let res): @@ -898,7 +901,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = args[0] as! FlutterStandardTypedData + let aUint8ListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData api.echoAsync(aUint8ListArg) { result in switch result { case .success(let res): @@ -916,7 +919,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg = args[0] + let anObjectArg: Any = args[0] api.echoAsync(anObjectArg) { result in switch result { case .success(let res): @@ -934,7 +937,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?] + let aListArg: [Any?] = args[0] as! [Any?] api.echoAsync(aListArg) { result in switch result { case .success(let res): @@ -952,7 +955,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?] + let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] api.echoAsync(aMapArg) { result in switch result { case .success(let res): @@ -1018,7 +1021,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllTypes + let everythingArg: AllTypes = args[0] as! AllTypes api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1036,7 +1039,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = (nilOrValue(value: args[0]) as Any) as! AllNullableTypes? + let everythingArg: AllNullableTypes? = nilOrValue(value: args[0]) api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1054,7 +1057,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? + let anIntArg: Int64? = nilOrValue(value: args[0]) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1072,7 +1075,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? + let aDoubleArg: Double? = nilOrValue(value: args[0]) api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1090,7 +1093,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aBoolArg: Bool? = nilOrValue(value: args[0]) api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1108,7 +1111,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (nilOrValue(value: args[0]) as Any) as! String? + let aStringArg: String? = nilOrValue(value: args[0]) api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1126,7 +1129,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? + let aUint8ListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1144,7 +1147,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg = args[0] + let anObjectArg: Any? = args[0] api.echoAsyncNullable(anObjectArg) { result in switch result { case .success(let res): @@ -1162,7 +1165,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? + let aListArg: [Any?]? = nilOrValue(value: args[0]) api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1180,7 +1183,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? + let aMapArg: [String?: Any?]? = nilOrValue(value: args[0]) api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1242,7 +1245,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg = args[0] as! AllTypes + let everythingArg: AllTypes = args[0] as! AllTypes api.callFlutterEcho(everythingArg) { result in switch result { case .success(let res): @@ -1259,9 +1262,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? - let aNullableIntArg = (nilOrValue(value: args[1]) as Any) as! Int64? - let aNullableStringArg = (nilOrValue(value: args[2]) as Any) as! String? + let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) + let aNullableIntArg: Int64? = nilOrValue(value: args[1]) + let aNullableStringArg: String? = nilOrValue(value: args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1278,7 +1281,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = args[0] as! Bool + let aBoolArg: Bool = args[0] as! Bool api.callFlutterEcho(aBoolArg) { result in switch result { case .success(let res): @@ -1295,7 +1298,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = args[0] as! Int64 + let anIntArg: Int64 = args[0] as! Int64 api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1312,7 +1315,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = args[0] as! Double + let aDoubleArg: Double = args[0] as! Double api.callFlutterEcho(aDoubleArg) { result in switch result { case .success(let res): @@ -1329,7 +1332,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String + let aStringArg: String = args[0] as! String api.callFlutterEcho(aStringArg) { result in switch result { case .success(let res): @@ -1346,7 +1349,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! FlutterStandardTypedData + let aListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData api.callFlutterEcho(aListArg) { result in switch result { case .success(let res): @@ -1363,7 +1366,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = args[0] as! [Any?] + let aListArg: [Any?] = args[0] as! [Any?] api.callFlutterEcho(aListArg) { result in switch result { case .success(let res): @@ -1380,7 +1383,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = args[0] as! [String?: Any?] + let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] api.callFlutterEcho(aMapArg) { result in switch result { case .success(let res): @@ -1397,7 +1400,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg = (nilOrValue(value: args[0]) as Any) as! Bool? + let aBoolArg: Bool? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1414,7 +1417,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (nilOrValue(value: args[0]) as Any) as! Int64? + let anIntArg: Int64? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1431,7 +1434,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg = (nilOrValue(value: args[0]) as Any) as! Double? + let aDoubleArg: Double? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1448,7 +1451,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = (nilOrValue(value: args[0]) as Any) as! String? + let aStringArg: String? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1465,7 +1468,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (nilOrValue(value: args[0]) as Any) as! FlutterStandardTypedData? + let aListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1482,7 +1485,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg = (nilOrValue(value: args[0]) as Any) as! [Any?]? + let aListArg: [Any?]? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1499,7 +1502,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg = (nilOrValue(value: args[0]) as Any) as! [String?: Any?]? + let aMapArg: [String?: Any?]? = nilOrValue(value: args[0]) api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1589,7 +1592,7 @@ class FlutterIntegrationCoreApi { func throwError(completion: @escaping (Any?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.throwError", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage(nil) { response in - let result = response + let result: Any? = response completion(result) } } @@ -1604,7 +1607,7 @@ class FlutterIntegrationCoreApi { func echo(_ everythingArg: AllTypes, completion: @escaping (AllTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([everythingArg] as [Any?]) { response in - let result = response as! AllTypes + let result: AllTypes = response as! AllTypes completion(result) } } @@ -1612,7 +1615,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ everythingArg: AllNullableTypes, completion: @escaping (AllNullableTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllNullableTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([everythingArg] as [Any?]) { response in - let result = response as! AllNullableTypes + let result: AllNullableTypes = response as! AllNullableTypes completion(result) } } @@ -1622,7 +1625,7 @@ class FlutterIntegrationCoreApi { func sendMultipleNullableTypes(aBool aNullableBoolArg: Bool?, anInt aNullableIntArg: Int64?, aString aNullableStringArg: String?, completion: @escaping (AllNullableTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.sendMultipleNullableTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aNullableBoolArg, aNullableIntArg, aNullableStringArg] as [Any?]) { response in - let result = response as! AllNullableTypes + let result: AllNullableTypes = response as! AllNullableTypes completion(result) } } @@ -1630,7 +1633,7 @@ class FlutterIntegrationCoreApi { func echo(_ aBoolArg: Bool, completion: @escaping (Bool) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = response as! Bool + let result: Bool = response as! Bool completion(result) } } @@ -1638,7 +1641,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = response as! Int64 + let result: Int64 = response as! Int64 completion(result) } } @@ -1646,7 +1649,7 @@ class FlutterIntegrationCoreApi { func echo(_ aDoubleArg: Double, completion: @escaping (Double) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = response as! Double + let result: Double = response as! Double completion(result) } } @@ -1654,7 +1657,7 @@ class FlutterIntegrationCoreApi { func echo(_ aStringArg: String, completion: @escaping (String) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = response as! String + let result: String = response as! String completion(result) } } @@ -1662,7 +1665,7 @@ class FlutterIntegrationCoreApi { func echo(_ aListArg: FlutterStandardTypedData, completion: @escaping (FlutterStandardTypedData) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = response as! FlutterStandardTypedData + let result: FlutterStandardTypedData = response as! FlutterStandardTypedData completion(result) } } @@ -1670,7 +1673,7 @@ class FlutterIntegrationCoreApi { func echo(_ aListArg: [Any?], completion: @escaping ([Any?]) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = response as! [Any?] + let result: [Any?] = response as! [Any?] completion(result) } } @@ -1678,7 +1681,7 @@ class FlutterIntegrationCoreApi { func echo(_ aMapArg: [String?: Any?], completion: @escaping ([String?: Any?]) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = response as! [String?: Any?] + let result: [String?: Any?] = response as! [String?: Any?] completion(result) } } @@ -1686,7 +1689,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! Bool? + let result: Bool? = nilOrValue(value: response) completion(result) } } @@ -1694,7 +1697,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! Int64? + let result: Int64? = nilOrValue(value: response) completion(result) } } @@ -1702,7 +1705,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! Double? + let result: Double? = nilOrValue(value: response) completion(result) } } @@ -1710,7 +1713,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! String? + let result: String? = nilOrValue(value: response) completion(result) } } @@ -1718,7 +1721,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! FlutterStandardTypedData? + let result: FlutterStandardTypedData? = nilOrValue(value: response) completion(result) } } @@ -1726,7 +1729,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! [Any?]? + let result: [Any?]? = nilOrValue(value: response) completion(result) } } @@ -1734,7 +1737,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result = (nilOrValue(value: response) as Any) as! [String?: Any?]? + let result: [String?: Any?]? = nilOrValue(value: response) completion(result) } } @@ -1750,7 +1753,7 @@ class FlutterIntegrationCoreApi { func echoAsync(_ aStringArg: String, completion: @escaping (String) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAsyncString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result = response as! String + let result: String = response as! String completion(result) } } @@ -1799,7 +1802,7 @@ class HostSmallApiSetup { if let api = api { echoChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg = args[0] as! String + let aStringArg: String = args[0] as! String api.echo(aString: aStringArg) { result in switch result { case .success(let res): @@ -1879,7 +1882,7 @@ class FlutterSmallApi { func echo(_ msgArg: TestMessage, completion: @escaping (TestMessage) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterSmallApi.echoWrappedList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([msgArg] as [Any?]) { response in - let result = response as! TestMessage + let result: TestMessage = response as! TestMessage completion(result) } } From d1d9c6f5fefc758c340de05555523ac96381dfe0 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 30 Mar 2023 17:05:45 -0700 Subject: [PATCH 10/27] Better name --- packages/pigeon/lib/swift_generator.dart | 4 ++-- .../test_plugin/ios/Classes/CoreTests.gen.swift | 4 ++-- .../test_plugin/macos/Classes/CoreTests.gen.swift | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 9795566dae0..db4fea1ef8f 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -644,8 +644,8 @@ private func nilOrValue(value: Any?) -> T? { if value is NSNull { return nil } - if let num = value as? T { - return num + if let convertedValue = value as? T { + return convertedValue } return (value as Any) as! T? }'''); diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 94c05e58027..be3e13e2d80 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -39,8 +39,8 @@ private func nilOrValue(value: Any?) -> T? { if value is NSNull { return nil } - if let num = value as? T { - return num + if let convertedValue = value as? T { + return convertedValue } return (value as Any) as! T? } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 94c05e58027..be3e13e2d80 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -39,8 +39,8 @@ private func nilOrValue(value: Any?) -> T? { if value is NSNull { return nil } - if let num = value as? T { - return num + if let convertedValue = value as? T { + return convertedValue } return (value as Any) as! T? } From 241f0e31e32917f5501dab11f81ab0fbf064687f Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 30 Mar 2023 17:26:18 -0700 Subject: [PATCH 11/27] gen tests --- packages/pigeon/test/swift_generator_test.dart | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index 0cf9e25f6ae..aabafc5de16 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -83,7 +83,7 @@ void main() { generator.generate(swiftOptions, root, sink); final String code = sink.toString(); expect(code, contains('enum Foo: Int')); - expect(code, contains('let fooArg = Foo(rawValue: args[0] as! Int)!')); + expect(code, contains('let fooArg: Foo = Foo(rawValue: args[0] as! Int)!')); }); test('gen one host api', () { @@ -452,7 +452,7 @@ void main() { expect(code, contains('struct Nested')); expect(code, contains('var nested: Nested? = nil')); expect(code, contains('static func fromList(_ list: [Any]) -> Outer?')); - expect(code, contains('nested = Nested.fromList(nestedList as [Any])')); + expect(code, contains('nested = Nested.fromList(nestedList)')); expect(code, contains('func toList() -> [Any?]')); }); @@ -767,7 +767,7 @@ void main() { final String code = sink.toString(); expect( code, contains('func doit(completion: @escaping ([Int64?]) -> Void')); - expect(code, contains('let result = response as! [Int64?]')); + expect(code, contains('let result: [Int64?] = response as! [Int64?]')); expect(code, contains('completion(result)')); }); @@ -797,8 +797,8 @@ void main() { final String code = sink.toString(); expect(code, contains('func add(x: Int64, y: Int64) throws -> Int64')); expect(code, contains('let args = message as! [Any]')); - expect(code, contains('let xArg = args[0] as! Int64')); - expect(code, contains('let yArg = args[1] as! Int64')); + expect(code, contains('let xArg: Int64 = args[0] as! Int64')); + expect(code, contains('let yArg: Int64 = args[1] as! Int64')); expect(code, contains('let result = try api.add(x: xArg, y: yArg)')); expect(code, contains('reply(wrapResult(result))')); }); @@ -828,7 +828,7 @@ void main() { generator.generate(swiftOptions, root, sink); final String code = sink.toString(); expect(code, contains('let channel = FlutterBasicMessageChannel')); - expect(code, contains('let result = response as! Int64')); + expect(code, contains('let result: Int64 = response as! Int64')); expect(code, contains('completion(result)')); expect( code, @@ -915,7 +915,7 @@ void main() { const SwiftGenerator generator = SwiftGenerator(); generator.generate(swiftOptions, root, sink); final String code = sink.toString(); - expect(code, contains('(nilOrValue(value: args[0]) as Any) as! Int64?')); + expect(code, contains('let fooArg: Int64? = nilOrValue(value: args[0])')); }); test('nullable argument flutter', () { From 8d356cc0d9f47f4a5c77020e27ebd8489eab6c91 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 30 Mar 2023 23:58:30 -0700 Subject: [PATCH 12/27] some nits --- packages/pigeon/lib/swift_generator.dart | 31 ++-- .../ios/Classes/CoreTests.gen.swift | 136 +++++++++--------- .../macos/Classes/CoreTests.gen.swift | 136 +++++++++--------- 3 files changed, 153 insertions(+), 150 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index db4fea1ef8f..dbdb62200d6 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -192,17 +192,11 @@ import FlutterMacOS }); } else if (!hostDatatype.isBuiltin && customEnumNames.contains(field.type.baseName)) { - indent.writeln('var ${field.name}: $fieldType? = nil'); indent.writeln( - 'let enumVal$index: Int? = ${_castForceUnwrap(listValue, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); - indent.write('if let ${field.name}RawValue = enumVal$index '); - indent.addScoped('{', '}', () { - indent.writeln( - '${field.name} = $fieldType(rawValue: ${field.name}RawValue)'); - }); + 'var ${field.name}: $fieldType? = ${_castForceUnwrap(listValue, field.type, root, variableName: field.name)}'); } else { indent.writeln( - 'let ${field.name}: $fieldType? = ${_castForceUnwrap(listValue, field.type, root)} '); + 'let ${field.name}: $fieldType? = ${_castForceUnwrap(listValue, field.type, root, variableName: field.name)}'); } } else { if (!hostDatatype.isBuiltin && @@ -211,7 +205,7 @@ import FlutterMacOS 'let ${field.name} = $fieldType.fromList($listValue as! [Any])!'); } else { indent.writeln( - 'let ${field.name}: $fieldType = ${_castForceUnwrap(listValue, field.type, root)}'); + 'let ${field.name} = ${_castForceUnwrap(listValue, field.type, root)}'); } } }); @@ -637,10 +631,10 @@ import FlutterMacOS }); } - void _writeNilOrType(Indent indent) { + void _writeNilOrValue(Indent indent) { indent.format(''' -private func nilOrValue(value: Any?) -> T? { +private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } @@ -656,7 +650,7 @@ private func nilOrValue(value: Any?) -> T? { SwiftOptions generatorOptions, Root root, Indent indent) { _writeWrapResult(indent); _writeWrapError(indent); - _writeNilOrType(indent); + _writeNilOrValue(indent); } } @@ -682,14 +676,23 @@ String _camelCase(String text) { return pascal[0].toLowerCase() + pascal.substring(1); } -String _castForceUnwrap(String value, TypeDeclaration type, Root root) { +String _castForceUnwrap(String value, TypeDeclaration type, Root root, + {String? variableName}) { if (isEnum(root, type)) { + if (type.isNullable) { + return ''' +nil + let ${variableName}EnumVal: Int? = ${_castForceUnwrap(value, const TypeDeclaration(baseName: 'Int', isNullable: true), root)} + if let ${variableName}RawValue = ${variableName}EnumVal { + $variableName = ${_swiftTypeForDartType(type)}(rawValue: ${variableName}RawValue)! + }'''; + } return '${_swiftTypeForDartType(type)}(rawValue: $value as! Int)!'; } else if (type.baseName == 'Object') { // Special-cased to avoid warnings about using 'as' with Any. return value; } else if (type.isNullable) { - return 'nilOrValue(value: $value)'; + return 'nilOrValue($value)'; } else { return '$value as! ${_swiftTypeForDartType(type)}'; } diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index be3e13e2d80..6fe3c0d167b 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -35,7 +35,7 @@ private func wrapError(_ error: Any) -> [Any?] { ] } -private func nilOrValue(value: Any?) -> T? { +private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } @@ -67,18 +67,18 @@ struct AllTypes { var aString: String static func fromList(_ list: [Any]) -> AllTypes? { - let aBool: Bool = list[0] as! Bool - let anInt: Int64 = list[1] as! Int64 - let anInt64: Int64 = list[2] as! Int64 - let aDouble: Double = list[3] as! Double - let aByteArray: FlutterStandardTypedData = list[4] as! FlutterStandardTypedData - let a4ByteArray: FlutterStandardTypedData = list[5] as! FlutterStandardTypedData - let a8ByteArray: FlutterStandardTypedData = list[6] as! FlutterStandardTypedData - let aFloatArray: FlutterStandardTypedData = list[7] as! FlutterStandardTypedData - let aList: [Any] = list[8] as! [Any] - let aMap: [AnyHashable: Any] = list[9] as! [AnyHashable: Any] - let anEnum: AnEnum = AnEnum(rawValue: list[10] as! Int)! - let aString: String = list[11] as! String + let aBool = list[0] as! Bool + let anInt = list[1] as! Int64 + let anInt64 = list[2] as! Int64 + let aDouble = list[3] as! Double + let aByteArray = list[4] as! FlutterStandardTypedData + let a4ByteArray = list[5] as! FlutterStandardTypedData + let a8ByteArray = list[6] as! FlutterStandardTypedData + let aFloatArray = list[7] as! FlutterStandardTypedData + let aList = list[8] as! [Any] + let aMap = list[9] as! [AnyHashable: Any] + let anEnum = AnEnum(rawValue: list[10] as! Int)! + let aString = list[11] as! String return AllTypes( aBool: aBool, @@ -132,25 +132,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool: Bool? = nilOrValue(value: list[0]) - let aNullableInt: Int64? = nilOrValue(value: list[1]) - let aNullableInt64: Int64? = nilOrValue(value: list[2]) - let aNullableDouble: Double? = nilOrValue(value: list[3]) - let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(value: list[4]) - let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(value: list[5]) - let aNullable8ByteArray: FlutterStandardTypedData? = nilOrValue(value: list[6]) - let aNullableFloatArray: FlutterStandardTypedData? = nilOrValue(value: list[7]) - let aNullableList: [Any]? = nilOrValue(value: list[8]) - let aNullableMap: [AnyHashable: Any]? = nilOrValue(value: list[9]) - let nullableNestedList: [[Bool?]?]? = nilOrValue(value: list[10]) - let nullableMapWithAnnotations: [String?: String?]? = nilOrValue(value: list[11]) - let nullableMapWithObject: [String?: Any?]? = nilOrValue(value: list[12]) + let aNullableBool: Bool? = nilOrValue(list[0]) + let aNullableInt: Int64? = nilOrValue(list[1]) + let aNullableInt64: Int64? = nilOrValue(list[2]) + let aNullableDouble: Double? = nilOrValue(list[3]) + let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(list[4]) + let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(list[5]) + let aNullable8ByteArray: FlutterStandardTypedData? = nilOrValue(list[6]) + let aNullableFloatArray: FlutterStandardTypedData? = nilOrValue(list[7]) + let aNullableList: [Any]? = nilOrValue(list[8]) + let aNullableMap: [AnyHashable: Any]? = nilOrValue(list[9]) + let nullableNestedList: [[Bool?]?]? = nilOrValue(list[10]) + let nullableMapWithAnnotations: [String?: String?]? = nilOrValue(list[11]) + let nullableMapWithObject: [String?: Any?]? = nilOrValue(list[12]) var aNullableEnum: AnEnum? = nil - let enumVal13: Int? = nilOrValue(value: list[13]) - if let aNullableEnumRawValue = enumVal13 { - aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) + let aNullableEnumEnumVal: Int? = nilOrValue(list[13]) + if let aNullableEnumRawValue = aNullableEnumEnumVal { + aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue)! } - let aNullableString: String? = nilOrValue(value: list[14]) + let aNullableString: String? = nilOrValue(list[14]) return AllNullableTypes( aNullableBool: aNullableBool, @@ -216,7 +216,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList: [Any]? = nilOrValue(value: list[0]) + let testList: [Any]? = nilOrValue(list[0]) return TestMessage( testList: testList @@ -616,7 +616,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllNullableTypes? = nilOrValue(value: args[0]) + let everythingArg: AllNullableTypes? = nilOrValue(args[0]) do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -650,7 +650,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg: String? = nilOrValue(value: args[0]) + let nullableStringArg: String? = nilOrValue(args[0]) do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -666,9 +666,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) - let aNullableIntArg: Int64? = nilOrValue(value: args[1]) - let aNullableStringArg: String? = nilOrValue(value: args[2]) + let aNullableBoolArg: Bool? = nilOrValue(args[0]) + let aNullableIntArg: Int64? = nilOrValue(args[1]) + let aNullableStringArg: String? = nilOrValue(args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -684,7 +684,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg: Int64? = nilOrValue(value: args[0]) + let aNullableIntArg: Int64? = nilOrValue(args[0]) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -700,7 +700,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg: Double? = nilOrValue(value: args[0]) + let aNullableDoubleArg: Double? = nilOrValue(args[0]) do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -716,7 +716,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) + let aNullableBoolArg: Bool? = nilOrValue(args[0]) do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -732,7 +732,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg: String? = nilOrValue(value: args[0]) + let aNullableStringArg: String? = nilOrValue(args[0]) do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -748,7 +748,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) + let aNullableUint8ListArg: FlutterStandardTypedData? = nilOrValue(args[0]) do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -780,7 +780,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg: [Any?]? = nilOrValue(value: args[0]) + let aNullableListArg: [Any?]? = nilOrValue(args[0]) do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -796,7 +796,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg: [String?: Any?]? = nilOrValue(value: args[0]) + let aNullableMapArg: [String?: Any?]? = nilOrValue(args[0]) do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1039,7 +1039,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllNullableTypes? = nilOrValue(value: args[0]) + let everythingArg: AllNullableTypes? = nilOrValue(args[0]) api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1057,7 +1057,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = nilOrValue(value: args[0]) + let anIntArg: Int64? = nilOrValue(args[0]) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1075,7 +1075,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double? = nilOrValue(value: args[0]) + let aDoubleArg: Double? = nilOrValue(args[0]) api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1093,7 +1093,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool? = nilOrValue(value: args[0]) + let aBoolArg: Bool? = nilOrValue(args[0]) api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1111,7 +1111,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String? = nilOrValue(value: args[0]) + let aStringArg: String? = nilOrValue(args[0]) api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1129,7 +1129,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) + let aUint8ListArg: FlutterStandardTypedData? = nilOrValue(args[0]) api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1165,7 +1165,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?]? = nilOrValue(value: args[0]) + let aListArg: [Any?]? = nilOrValue(args[0]) api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1183,7 +1183,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?]? = nilOrValue(value: args[0]) + let aMapArg: [String?: Any?]? = nilOrValue(args[0]) api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1262,9 +1262,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) - let aNullableIntArg: Int64? = nilOrValue(value: args[1]) - let aNullableStringArg: String? = nilOrValue(value: args[2]) + let aNullableBoolArg: Bool? = nilOrValue(args[0]) + let aNullableIntArg: Int64? = nilOrValue(args[1]) + let aNullableStringArg: String? = nilOrValue(args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1400,7 +1400,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool? = nilOrValue(value: args[0]) + let aBoolArg: Bool? = nilOrValue(args[0]) api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1417,7 +1417,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = nilOrValue(value: args[0]) + let anIntArg: Int64? = nilOrValue(args[0]) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1434,7 +1434,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double? = nilOrValue(value: args[0]) + let aDoubleArg: Double? = nilOrValue(args[0]) api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1451,7 +1451,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String? = nilOrValue(value: args[0]) + let aStringArg: String? = nilOrValue(args[0]) api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1468,7 +1468,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) + let aListArg: FlutterStandardTypedData? = nilOrValue(args[0]) api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1485,7 +1485,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?]? = nilOrValue(value: args[0]) + let aListArg: [Any?]? = nilOrValue(args[0]) api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1502,7 +1502,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?]? = nilOrValue(value: args[0]) + let aMapArg: [String?: Any?]? = nilOrValue(args[0]) api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1689,7 +1689,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result: Bool? = nilOrValue(value: response) + let result: Bool? = nilOrValue(response) completion(result) } } @@ -1697,7 +1697,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64? = nilOrValue(value: response) + let result: Int64? = nilOrValue(response) completion(result) } } @@ -1705,7 +1705,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result: Double? = nilOrValue(value: response) + let result: Double? = nilOrValue(response) completion(result) } } @@ -1713,7 +1713,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result: String? = nilOrValue(value: response) + let result: String? = nilOrValue(response) completion(result) } } @@ -1721,7 +1721,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result: FlutterStandardTypedData? = nilOrValue(value: response) + let result: FlutterStandardTypedData? = nilOrValue(response) completion(result) } } @@ -1729,7 +1729,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result: [Any?]? = nilOrValue(value: response) + let result: [Any?]? = nilOrValue(response) completion(result) } } @@ -1737,7 +1737,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result: [String?: Any?]? = nilOrValue(value: response) + let result: [String?: Any?]? = nilOrValue(response) completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index be3e13e2d80..6fe3c0d167b 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -35,7 +35,7 @@ private func wrapError(_ error: Any) -> [Any?] { ] } -private func nilOrValue(value: Any?) -> T? { +private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } @@ -67,18 +67,18 @@ struct AllTypes { var aString: String static func fromList(_ list: [Any]) -> AllTypes? { - let aBool: Bool = list[0] as! Bool - let anInt: Int64 = list[1] as! Int64 - let anInt64: Int64 = list[2] as! Int64 - let aDouble: Double = list[3] as! Double - let aByteArray: FlutterStandardTypedData = list[4] as! FlutterStandardTypedData - let a4ByteArray: FlutterStandardTypedData = list[5] as! FlutterStandardTypedData - let a8ByteArray: FlutterStandardTypedData = list[6] as! FlutterStandardTypedData - let aFloatArray: FlutterStandardTypedData = list[7] as! FlutterStandardTypedData - let aList: [Any] = list[8] as! [Any] - let aMap: [AnyHashable: Any] = list[9] as! [AnyHashable: Any] - let anEnum: AnEnum = AnEnum(rawValue: list[10] as! Int)! - let aString: String = list[11] as! String + let aBool = list[0] as! Bool + let anInt = list[1] as! Int64 + let anInt64 = list[2] as! Int64 + let aDouble = list[3] as! Double + let aByteArray = list[4] as! FlutterStandardTypedData + let a4ByteArray = list[5] as! FlutterStandardTypedData + let a8ByteArray = list[6] as! FlutterStandardTypedData + let aFloatArray = list[7] as! FlutterStandardTypedData + let aList = list[8] as! [Any] + let aMap = list[9] as! [AnyHashable: Any] + let anEnum = AnEnum(rawValue: list[10] as! Int)! + let aString = list[11] as! String return AllTypes( aBool: aBool, @@ -132,25 +132,25 @@ struct AllNullableTypes { var aNullableString: String? = nil static func fromList(_ list: [Any]) -> AllNullableTypes? { - let aNullableBool: Bool? = nilOrValue(value: list[0]) - let aNullableInt: Int64? = nilOrValue(value: list[1]) - let aNullableInt64: Int64? = nilOrValue(value: list[2]) - let aNullableDouble: Double? = nilOrValue(value: list[3]) - let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(value: list[4]) - let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(value: list[5]) - let aNullable8ByteArray: FlutterStandardTypedData? = nilOrValue(value: list[6]) - let aNullableFloatArray: FlutterStandardTypedData? = nilOrValue(value: list[7]) - let aNullableList: [Any]? = nilOrValue(value: list[8]) - let aNullableMap: [AnyHashable: Any]? = nilOrValue(value: list[9]) - let nullableNestedList: [[Bool?]?]? = nilOrValue(value: list[10]) - let nullableMapWithAnnotations: [String?: String?]? = nilOrValue(value: list[11]) - let nullableMapWithObject: [String?: Any?]? = nilOrValue(value: list[12]) + let aNullableBool: Bool? = nilOrValue(list[0]) + let aNullableInt: Int64? = nilOrValue(list[1]) + let aNullableInt64: Int64? = nilOrValue(list[2]) + let aNullableDouble: Double? = nilOrValue(list[3]) + let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(list[4]) + let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(list[5]) + let aNullable8ByteArray: FlutterStandardTypedData? = nilOrValue(list[6]) + let aNullableFloatArray: FlutterStandardTypedData? = nilOrValue(list[7]) + let aNullableList: [Any]? = nilOrValue(list[8]) + let aNullableMap: [AnyHashable: Any]? = nilOrValue(list[9]) + let nullableNestedList: [[Bool?]?]? = nilOrValue(list[10]) + let nullableMapWithAnnotations: [String?: String?]? = nilOrValue(list[11]) + let nullableMapWithObject: [String?: Any?]? = nilOrValue(list[12]) var aNullableEnum: AnEnum? = nil - let enumVal13: Int? = nilOrValue(value: list[13]) - if let aNullableEnumRawValue = enumVal13 { - aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue) + let aNullableEnumEnumVal: Int? = nilOrValue(list[13]) + if let aNullableEnumRawValue = aNullableEnumEnumVal { + aNullableEnum = AnEnum(rawValue: aNullableEnumRawValue)! } - let aNullableString: String? = nilOrValue(value: list[14]) + let aNullableString: String? = nilOrValue(list[14]) return AllNullableTypes( aNullableBool: aNullableBool, @@ -216,7 +216,7 @@ struct TestMessage { var testList: [Any]? = nil static func fromList(_ list: [Any]) -> TestMessage? { - let testList: [Any]? = nilOrValue(value: list[0]) + let testList: [Any]? = nilOrValue(list[0]) return TestMessage( testList: testList @@ -616,7 +616,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllNullableTypes? = nilOrValue(value: args[0]) + let everythingArg: AllNullableTypes? = nilOrValue(args[0]) do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -650,7 +650,7 @@ class HostIntegrationCoreApiSetup { if let api = api { createNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let nullableStringArg: String? = nilOrValue(value: args[0]) + let nullableStringArg: String? = nilOrValue(args[0]) do { let result = try api.createNestedObject(with: nullableStringArg) reply(wrapResult(result)) @@ -666,9 +666,9 @@ class HostIntegrationCoreApiSetup { if let api = api { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) - let aNullableIntArg: Int64? = nilOrValue(value: args[1]) - let aNullableStringArg: String? = nilOrValue(value: args[2]) + let aNullableBoolArg: Bool? = nilOrValue(args[0]) + let aNullableIntArg: Int64? = nilOrValue(args[1]) + let aNullableStringArg: String? = nilOrValue(args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) reply(wrapResult(result)) @@ -684,7 +684,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg: Int64? = nilOrValue(value: args[0]) + let aNullableIntArg: Int64? = nilOrValue(args[0]) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -700,7 +700,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableDoubleArg: Double? = nilOrValue(value: args[0]) + let aNullableDoubleArg: Double? = nilOrValue(args[0]) do { let result = try api.echo(aNullableDoubleArg) reply(wrapResult(result)) @@ -716,7 +716,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) + let aNullableBoolArg: Bool? = nilOrValue(args[0]) do { let result = try api.echo(aNullableBoolArg) reply(wrapResult(result)) @@ -732,7 +732,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableStringArg: String? = nilOrValue(value: args[0]) + let aNullableStringArg: String? = nilOrValue(args[0]) do { let result = try api.echo(aNullableStringArg) reply(wrapResult(result)) @@ -748,7 +748,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableUint8ListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) + let aNullableUint8ListArg: FlutterStandardTypedData? = nilOrValue(args[0]) do { let result = try api.echo(aNullableUint8ListArg) reply(wrapResult(result)) @@ -780,7 +780,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableListArg: [Any?]? = nilOrValue(value: args[0]) + let aNullableListArg: [Any?]? = nilOrValue(args[0]) do { let result = try api.echoNullable(aNullableListArg) reply(wrapResult(result)) @@ -796,7 +796,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableMapArg: [String?: Any?]? = nilOrValue(value: args[0]) + let aNullableMapArg: [String?: Any?]? = nilOrValue(args[0]) do { let result = try api.echoNullable(aNullableMapArg) reply(wrapResult(result)) @@ -1039,7 +1039,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableAllNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllNullableTypes? = nilOrValue(value: args[0]) + let everythingArg: AllNullableTypes? = nilOrValue(args[0]) api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1057,7 +1057,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = nilOrValue(value: args[0]) + let anIntArg: Int64? = nilOrValue(args[0]) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1075,7 +1075,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double? = nilOrValue(value: args[0]) + let aDoubleArg: Double? = nilOrValue(args[0]) api.echoAsyncNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1093,7 +1093,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool? = nilOrValue(value: args[0]) + let aBoolArg: Bool? = nilOrValue(args[0]) api.echoAsyncNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1111,7 +1111,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String? = nilOrValue(value: args[0]) + let aStringArg: String? = nilOrValue(args[0]) api.echoAsyncNullable(aStringArg) { result in switch result { case .success(let res): @@ -1129,7 +1129,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) + let aUint8ListArg: FlutterStandardTypedData? = nilOrValue(args[0]) api.echoAsyncNullable(aUint8ListArg) { result in switch result { case .success(let res): @@ -1165,7 +1165,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?]? = nilOrValue(value: args[0]) + let aListArg: [Any?]? = nilOrValue(args[0]) api.echoAsyncNullable(aListArg) { result in switch result { case .success(let res): @@ -1183,7 +1183,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?]? = nilOrValue(value: args[0]) + let aMapArg: [String?: Any?]? = nilOrValue(args[0]) api.echAsyncoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1262,9 +1262,9 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableBoolArg: Bool? = nilOrValue(value: args[0]) - let aNullableIntArg: Int64? = nilOrValue(value: args[1]) - let aNullableStringArg: String? = nilOrValue(value: args[2]) + let aNullableBoolArg: Bool? = nilOrValue(args[0]) + let aNullableIntArg: Int64? = nilOrValue(args[1]) + let aNullableStringArg: String? = nilOrValue(args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { case .success(let res): @@ -1400,7 +1400,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool? = nilOrValue(value: args[0]) + let aBoolArg: Bool? = nilOrValue(args[0]) api.callFlutterEchoNullable(aBoolArg) { result in switch result { case .success(let res): @@ -1417,7 +1417,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = nilOrValue(value: args[0]) + let anIntArg: Int64? = nilOrValue(args[0]) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1434,7 +1434,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double? = nilOrValue(value: args[0]) + let aDoubleArg: Double? = nilOrValue(args[0]) api.callFlutterEchoNullable(aDoubleArg) { result in switch result { case .success(let res): @@ -1451,7 +1451,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String? = nilOrValue(value: args[0]) + let aStringArg: String? = nilOrValue(args[0]) api.callFlutterEchoNullable(aStringArg) { result in switch result { case .success(let res): @@ -1468,7 +1468,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: FlutterStandardTypedData? = nilOrValue(value: args[0]) + let aListArg: FlutterStandardTypedData? = nilOrValue(args[0]) api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1485,7 +1485,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?]? = nilOrValue(value: args[0]) + let aListArg: [Any?]? = nilOrValue(args[0]) api.callFlutterEchoNullable(aListArg) { result in switch result { case .success(let res): @@ -1502,7 +1502,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?]? = nilOrValue(value: args[0]) + let aMapArg: [String?: Any?]? = nilOrValue(args[0]) api.callFlutterEchoNullable(aMapArg) { result in switch result { case .success(let res): @@ -1689,7 +1689,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aBoolArg: Bool?, completion: @escaping (Bool?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result: Bool? = nilOrValue(value: response) + let result: Bool? = nilOrValue(response) completion(result) } } @@ -1697,7 +1697,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64? = nilOrValue(value: response) + let result: Int64? = nilOrValue(response) completion(result) } } @@ -1705,7 +1705,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aDoubleArg: Double?, completion: @escaping (Double?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result: Double? = nilOrValue(value: response) + let result: Double? = nilOrValue(response) completion(result) } } @@ -1713,7 +1713,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aStringArg: String?, completion: @escaping (String?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result: String? = nilOrValue(value: response) + let result: String? = nilOrValue(response) completion(result) } } @@ -1721,7 +1721,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: FlutterStandardTypedData?, completion: @escaping (FlutterStandardTypedData?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result: FlutterStandardTypedData? = nilOrValue(value: response) + let result: FlutterStandardTypedData? = nilOrValue(response) completion(result) } } @@ -1729,7 +1729,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aListArg: [Any?]?, completion: @escaping ([Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result: [Any?]? = nilOrValue(value: response) + let result: [Any?]? = nilOrValue(response) completion(result) } } @@ -1737,7 +1737,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ aMapArg: [String?: Any?]?, completion: @escaping ([String?: Any?]?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result: [String?: Any?]? = nilOrValue(value: response) + let result: [String?: Any?]? = nilOrValue(response) completion(result) } } From 04dfdbd0c5d427a4c8dddd30d2c6ae9db5dbdcaa Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 31 Mar 2023 12:36:01 -0700 Subject: [PATCH 13/27] writedecodecasting init --- packages/pigeon/lib/swift_generator.dart | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index dbdb62200d6..89c9fb303db 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -181,6 +181,7 @@ import FlutterMacOS final String listValue = 'list[$index]'; final String fieldType = _swiftTypeForDartType(field.type); + _writeDecodeCasting(root, indent, listValue, field.name, field.type); if (field.type.isNullable) { if (!hostDatatype.isBuiltin && customClassNames.contains(field.type.baseName)) { @@ -601,6 +602,16 @@ import FlutterMacOS indent.newln(); } + void _writeDecodeCasting( + Root root, + Indent indent, + String value, + String variableName, + TypeDeclaration type, + ) { + // + } + void _writeWrapResult(Indent indent) { indent.newln(); indent.write('private func wrapResult(_ result: Any?) -> [Any?] '); From ed57271df7247e919a906ab46a67bc66d7712c93 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 31 Mar 2023 20:55:33 -0700 Subject: [PATCH 14/27] This works, but does it explode on incorect type? --- packages/pigeon/lib/swift_generator.dart | 120 ++++++++++-------- .../ios/Classes/CoreTests.gen.swift | 6 +- .../macos/Classes/CoreTests.gen.swift | 6 +- 3 files changed, 74 insertions(+), 58 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 89c9fb303db..2a3b64b622b 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -176,39 +176,18 @@ import FlutterMacOS indent.addScoped('{', '}', () { enumerate(getFieldsInSerializationOrder(klass), (int index, final NamedType field) { - final HostDatatype hostDatatype = _getHostDatatype(root, field); - final String listValue = 'list[$index]'; - final String fieldType = _swiftTypeForDartType(field.type); - _writeDecodeCasting(root, indent, listValue, field.name, field.type); - if (field.type.isNullable) { - if (!hostDatatype.isBuiltin && - customClassNames.contains(field.type.baseName)) { - indent.writeln('var ${field.name}: $fieldType? = nil'); - indent.write('if let ${field.name}List = $listValue as! [Any]? '); - indent.addScoped('{', '}', () { - indent.writeln( - '${field.name} = $fieldType.fromList(${field.name}List)'); - }); - } else if (!hostDatatype.isBuiltin && - customEnumNames.contains(field.type.baseName)) { - indent.writeln( - 'var ${field.name}: $fieldType? = ${_castForceUnwrap(listValue, field.type, root, variableName: field.name)}'); - } else { - indent.writeln( - 'let ${field.name}: $fieldType? = ${_castForceUnwrap(listValue, field.type, root, variableName: field.name)}'); - } - } else { - if (!hostDatatype.isBuiltin && - customClassNames.contains(field.type.baseName)) { - indent.writeln( - 'let ${field.name} = $fieldType.fromList($listValue as! [Any])!'); - } else { - indent.writeln( - 'let ${field.name} = ${_castForceUnwrap(listValue, field.type, root)}'); - } - } + _writeDecodeCasting( + root, + indent, + listValue, + field.name, + field.type, + field: field, + customClassNames: customClassNames, + customEnumNames: customEnumNames, + ); }); indent.newln(); @@ -340,8 +319,8 @@ import FlutterMacOS }); } else { indent.addScoped('{ response in', '}', () { - indent.writeln( - 'let result: ${_nullsafeSwiftTypeForDartType(func.returnType)} = ${_castForceUnwrap("response", func.returnType, root)}'); + _writeDecodeCasting( + root, indent, 'response', 'result', func.returnType); indent.writeln('completion(result)'); }); } @@ -456,9 +435,8 @@ import FlutterMacOS final String argName = _getSafeArgumentName(index, arg.namedType); final String argIndex = 'args[$index]'; - indent.writeln( - 'let $argName: ${_nullsafeSwiftTypeForDartType(arg.type)} = ${_castForceUnwrap(argIndex, arg.type, root)}'); - + _writeDecodeCasting( + root, indent, argIndex, argName, arg.type); if (arg.label == '_') { methodArgument.add(argName); } else { @@ -607,9 +585,56 @@ import FlutterMacOS Indent indent, String value, String variableName, - TypeDeclaration type, - ) { - // + TypeDeclaration type, { + NamedType? field, + Set? customClassNames, + Set? customEnumNames, + }) { + if (field != null) { + final HostDatatype hostDatatype = _getHostDatatype(root, field); + final String fieldType = _swiftTypeForDartType(field.type); + + if (field.type.isNullable) { + if (customClassNames != null && + !hostDatatype.isBuiltin && + customClassNames.contains(field.type.baseName)) { + indent.writeln('var $variableName: $fieldType? = nil'); + indent.write('if let ${variableName}List = $value as! [Any]? '); + indent.addScoped('{', '}', () { + indent.writeln( + '$variableName = $fieldType.fromList(${variableName}List)'); + }); + } else if (customEnumNames != null && + !hostDatatype.isBuiltin && + customEnumNames.contains(field.type.baseName)) { + indent.writeln('var $variableName: $fieldType? = nil'); + indent.writeln( + 'let ${variableName}EnumVal: Int? = ${_castForceUnwrap(value, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); + indent.write( + 'if let ${variableName}RawValue = ${variableName}EnumVal '); + indent.addScoped('{', '}', () { + indent.writeln( + '$variableName = $fieldType(rawValue: ${variableName}RawValue)!'); + }); + } else { + indent.writeln( + 'let $variableName: $fieldType? = ${_castForceUnwrap(value, field.type, root)}'); + } + } else { + if (customClassNames != null && + !hostDatatype.isBuiltin && + customClassNames.contains(field.type.baseName)) { + indent.writeln( + 'let $variableName = $fieldType.fromList($value as! [Any])!'); + } else { + indent.writeln( + 'let $variableName = ${_castForceUnwrap(value, field.type, root)}'); + } + } + return; + } + indent.writeln( + 'let $variableName: ${_nullsafeSwiftTypeForDartType(type)} = ${_castForceUnwrap(value, type, root)}'); } void _writeWrapResult(Indent indent) { @@ -649,10 +674,10 @@ private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } - if let convertedValue = value as? T { - return convertedValue + if let value = value { + return value as! T? } - return (value as Any) as! T? + return value as! T? }'''); } @@ -687,17 +712,8 @@ String _camelCase(String text) { return pascal[0].toLowerCase() + pascal.substring(1); } -String _castForceUnwrap(String value, TypeDeclaration type, Root root, - {String? variableName}) { +String _castForceUnwrap(String value, TypeDeclaration type, Root root) { if (isEnum(root, type)) { - if (type.isNullable) { - return ''' -nil - let ${variableName}EnumVal: Int? = ${_castForceUnwrap(value, const TypeDeclaration(baseName: 'Int', isNullable: true), root)} - if let ${variableName}RawValue = ${variableName}EnumVal { - $variableName = ${_swiftTypeForDartType(type)}(rawValue: ${variableName}RawValue)! - }'''; - } return '${_swiftTypeForDartType(type)}(rawValue: $value as! Int)!'; } else if (type.baseName == 'Object') { // Special-cased to avoid warnings about using 'as' with Any. diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 6fe3c0d167b..57810d23b2e 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -39,10 +39,10 @@ private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } - if let convertedValue = value as? T { - return convertedValue + if let value = value { + return value as! T? } - return (value as Any) as! T? + return value as! T? } enum AnEnum: Int { diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 6fe3c0d167b..57810d23b2e 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -39,10 +39,10 @@ private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } - if let convertedValue = value as? T { - return convertedValue + if let value = value { + return value as! T? } - return (value as Any) as! T? + return value as! T? } enum AnEnum: Int { From 1bd3afa0728868149c3e96a12be3a26d5317f895 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 31 Mar 2023 22:30:24 -0700 Subject: [PATCH 15/27] cleaner with as Any --- packages/pigeon/lib/swift_generator.dart | 9 ++------- .../test_plugin/ios/Classes/CoreTests.gen.swift | 9 ++------- .../test_plugin/macos/Classes/CoreTests.gen.swift | 9 ++------- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 2a3b64b622b..bc6fbe5816d 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -671,13 +671,8 @@ import FlutterMacOS indent.format(''' private func nilOrValue(_ value: Any?) -> T? { - if value is NSNull { - return nil - } - if let value = value { - return value as! T? - } - return value as! T? + if value is NSNull { return nil } + return (value as Any) as! T? }'''); } diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 57810d23b2e..fd893d61c13 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -36,13 +36,8 @@ private func wrapError(_ error: Any) -> [Any?] { } private func nilOrValue(_ value: Any?) -> T? { - if value is NSNull { - return nil - } - if let value = value { - return value as! T? - } - return value as! T? + if value is NSNull { return nil } + return (value as Any) as! T? } enum AnEnum: Int { diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 57810d23b2e..fd893d61c13 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -36,13 +36,8 @@ private func wrapError(_ error: Any) -> [Any?] { } private func nilOrValue(_ value: Any?) -> T? { - if value is NSNull { - return nil - } - if let value = value { - return value as! T? - } - return value as! T? + if value is NSNull { return nil } + return (value as Any) as! T? } enum AnEnum: Int { From d0f9b8600da122f62122df6737de9d1d104383f7 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 31 Mar 2023 22:50:01 -0700 Subject: [PATCH 16/27] gen test --- packages/pigeon/test/swift_generator_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index aabafc5de16..bcf8dd61643 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -915,7 +915,7 @@ void main() { const SwiftGenerator generator = SwiftGenerator(); generator.generate(swiftOptions, root, sink); final String code = sink.toString(); - expect(code, contains('let fooArg: Int64? = nilOrValue(value: args[0])')); + expect(code, contains('let fooArg: Int64? = nilOrValue(args[0])')); }); test('nullable argument flutter', () { From 2e2d337a14b61ef1a29dd70d95672d1515eaf703 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 3 Apr 2023 12:23:07 -0700 Subject: [PATCH 17/27] comment --- packages/pigeon/lib/swift_generator.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index bc6fbe5816d..fa68378ac09 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -580,6 +580,9 @@ import FlutterMacOS indent.newln(); } + /// Writes decode and casting code for any type. + /// + /// Optional parameters are necessary for class decoding only. void _writeDecodeCasting( Root root, Indent indent, @@ -633,6 +636,7 @@ import FlutterMacOS } return; } + indent.writeln( 'let $variableName: ${_nullsafeSwiftTypeForDartType(type)} = ${_castForceUnwrap(value, type, root)}'); } From 5b39dbe88190122d0bd6d93a75db6afdc6810b27 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 3 Apr 2023 16:27:40 -0700 Subject: [PATCH 18/27] fix NSNull issue in EchoBinaryMessenger --- .../example/ios/RunnerTests/EchoBinaryMessenger.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/EchoBinaryMessenger.swift b/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/EchoBinaryMessenger.swift index 393ff02cec8..fe2886ff25c 100644 --- a/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/EchoBinaryMessenger.swift +++ b/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/EchoBinaryMessenger.swift @@ -28,8 +28,7 @@ class EchoBinaryMessenger: NSObject, FlutterBinaryMessenger { guard let args = self.codec.decode(message) as? [Any?], - let firstArg = args.first, - !(firstArg is NSNull) + let firstArg: Any? = nilOrValue(args.first) else { callback(self.defaultReturn.flatMap { self.codec.encode($0) }) return @@ -49,4 +48,9 @@ class EchoBinaryMessenger: NSObject, FlutterBinaryMessenger { func cleanUpConnection(_ connection: FlutterBinaryMessengerConnection) { // Method not implemented because this messenger is just for echoing } + + private func nilOrValue(_ value: Any?) -> T? { + if value is NSNull { return nil } + return (value as Any) as! T? + } } From cbb8e0b10d38be7c93801e0b9a1268a50ae360f8 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 3 Apr 2023 17:42:23 -0700 Subject: [PATCH 19/27] makes things better --- packages/pigeon/lib/swift_generator.dart | 41 +++++++++++++------ .../ios/Classes/CoreTests.gen.swift | 28 ++++++------- .../macos/Classes/CoreTests.gen.swift | 28 ++++++------- 3 files changed, 56 insertions(+), 41 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index fa68378ac09..b6de4d3b334 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -179,11 +179,11 @@ import FlutterMacOS final String listValue = 'list[$index]'; _writeDecodeCasting( - root, - indent, - listValue, - field.name, - field.type, + root: root, + indent: indent, + value: listValue, + variableName: field.name, + type: field.type, field: field, customClassNames: customClassNames, customEnumNames: customEnumNames, @@ -320,7 +320,12 @@ import FlutterMacOS } else { indent.addScoped('{ response in', '}', () { _writeDecodeCasting( - root, indent, 'response', 'result', func.returnType); + root: root, + indent: indent, + value: 'response', + variableName: 'result', + type: func.returnType, + ); indent.writeln('completion(result)'); }); } @@ -436,7 +441,12 @@ import FlutterMacOS _getSafeArgumentName(index, arg.namedType); final String argIndex = 'args[$index]'; _writeDecodeCasting( - root, indent, argIndex, argName, arg.type); + root: root, + indent: indent, + value: argIndex, + variableName: argName, + type: arg.type, + ); if (arg.label == '_') { methodArgument.add(argName); } else { @@ -583,12 +593,12 @@ import FlutterMacOS /// Writes decode and casting code for any type. /// /// Optional parameters are necessary for class decoding only. - void _writeDecodeCasting( - Root root, - Indent indent, - String value, - String variableName, - TypeDeclaration type, { + void _writeDecodeCasting({ + required Root root, + required Indent indent, + required String value, + required String variableName, + required TypeDeclaration type, NamedType? field, Set? customClassNames, Set? customEnumNames, @@ -713,10 +723,15 @@ String _camelCase(String text) { String _castForceUnwrap(String value, TypeDeclaration type, Root root) { if (isEnum(root, type)) { + assert(!type.isNullable); return '${_swiftTypeForDartType(type)}(rawValue: $value as! Int)!'; } else if (type.baseName == 'Object') { // Special-cased to avoid warnings about using 'as' with Any. return value; + } else if (type.baseName == 'int') { + final String orString = + type.isNullable ? 'nilOrValue($value)' : '$value as! Int64'; + return '($value is Int32) ? Int64($value as! Int32) : $orString'; } else if (type.isNullable) { return 'nilOrValue($value)'; } else { diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 8a4adedb3ff..d5648868759 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -63,8 +63,8 @@ struct AllTypes { static func fromList(_ list: [Any]) -> AllTypes? { let aBool = list[0] as! Bool - let anInt = list[1] as! Int64 - let anInt64 = list[2] as! Int64 + let anInt = (list[1] is Int32) ? Int64(list[1] as! Int32) : list[1] as! Int64 + let anInt64 = (list[2] is Int32) ? Int64(list[2] as! Int32) : list[2] as! Int64 let aDouble = list[3] as! Double let aByteArray = list[4] as! FlutterStandardTypedData let a4ByteArray = list[5] as! FlutterStandardTypedData @@ -128,8 +128,8 @@ struct AllNullableTypes { static func fromList(_ list: [Any]) -> AllNullableTypes? { let aNullableBool: Bool? = nilOrValue(list[0]) - let aNullableInt: Int64? = nilOrValue(list[1]) - let aNullableInt64: Int64? = nilOrValue(list[2]) + let aNullableInt: Int64? = (list[1] is Int32) ? Int64(list[1] as! Int32) : nilOrValue(list[1]) + let aNullableInt64: Int64? = (list[2] is Int32) ? Int64(list[2] as! Int32) : nilOrValue(list[2]) let aNullableDouble: Double? = nilOrValue(list[3]) let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(list[4]) let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(list[5]) @@ -483,7 +483,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = args[0] as! Int64 + let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -662,7 +662,7 @@ class HostIntegrationCoreApiSetup { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = nilOrValue(args[1]) + let aNullableIntArg: Int64? = (args[1] is Int32) ? Int64(args[1] as! Int32) : nilOrValue(args[1]) let aNullableStringArg: String? = nilOrValue(args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) @@ -679,7 +679,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg: Int64? = nilOrValue(args[0]) + let aNullableIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -824,7 +824,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = args[0] as! Int64 + let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -1052,7 +1052,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = nilOrValue(args[0]) + let anIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1258,7 +1258,7 @@ class HostIntegrationCoreApiSetup { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = nilOrValue(args[1]) + let aNullableIntArg: Int64? = (args[1] is Int32) ? Int64(args[1] as! Int32) : nilOrValue(args[1]) let aNullableStringArg: String? = nilOrValue(args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { @@ -1293,7 +1293,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = args[0] as! Int64 + let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1412,7 +1412,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = nilOrValue(args[0]) + let anIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1636,7 +1636,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64 = response as! Int64 + let result: Int64 = (response is Int32) ? Int64(response as! Int32) : response as! Int64 completion(result) } } @@ -1692,7 +1692,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64? = nilOrValue(response) + let result: Int64? = (response is Int32) ? Int64(response as! Int32) : nilOrValue(response) completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 8a4adedb3ff..d5648868759 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -63,8 +63,8 @@ struct AllTypes { static func fromList(_ list: [Any]) -> AllTypes? { let aBool = list[0] as! Bool - let anInt = list[1] as! Int64 - let anInt64 = list[2] as! Int64 + let anInt = (list[1] is Int32) ? Int64(list[1] as! Int32) : list[1] as! Int64 + let anInt64 = (list[2] is Int32) ? Int64(list[2] as! Int32) : list[2] as! Int64 let aDouble = list[3] as! Double let aByteArray = list[4] as! FlutterStandardTypedData let a4ByteArray = list[5] as! FlutterStandardTypedData @@ -128,8 +128,8 @@ struct AllNullableTypes { static func fromList(_ list: [Any]) -> AllNullableTypes? { let aNullableBool: Bool? = nilOrValue(list[0]) - let aNullableInt: Int64? = nilOrValue(list[1]) - let aNullableInt64: Int64? = nilOrValue(list[2]) + let aNullableInt: Int64? = (list[1] is Int32) ? Int64(list[1] as! Int32) : nilOrValue(list[1]) + let aNullableInt64: Int64? = (list[2] is Int32) ? Int64(list[2] as! Int32) : nilOrValue(list[2]) let aNullableDouble: Double? = nilOrValue(list[3]) let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(list[4]) let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(list[5]) @@ -483,7 +483,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = args[0] as! Int64 + let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -662,7 +662,7 @@ class HostIntegrationCoreApiSetup { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = nilOrValue(args[1]) + let aNullableIntArg: Int64? = (args[1] is Int32) ? Int64(args[1] as! Int32) : nilOrValue(args[1]) let aNullableStringArg: String? = nilOrValue(args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) @@ -679,7 +679,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg: Int64? = nilOrValue(args[0]) + let aNullableIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -824,7 +824,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = args[0] as! Int64 + let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -1052,7 +1052,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = nilOrValue(args[0]) + let anIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1258,7 +1258,7 @@ class HostIntegrationCoreApiSetup { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = nilOrValue(args[1]) + let aNullableIntArg: Int64? = (args[1] is Int32) ? Int64(args[1] as! Int32) : nilOrValue(args[1]) let aNullableStringArg: String? = nilOrValue(args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { @@ -1293,7 +1293,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = args[0] as! Int64 + let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1412,7 +1412,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = nilOrValue(args[0]) + let anIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1636,7 +1636,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64 = response as! Int64 + let result: Int64 = (response is Int32) ? Int64(response as! Int32) : response as! Int64 completion(result) } } @@ -1692,7 +1692,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64? = nilOrValue(response) + let result: Int64? = (response is Int32) ? Int64(response as! Int32) : nilOrValue(response) completion(result) } } From 7fa0f7df268b42be15360f3e55506d10bc6ee03f Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 3 Apr 2023 17:45:47 -0700 Subject: [PATCH 20/27] gen tests --- .../pigeon/test/swift_generator_test.dart | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index bcf8dd61643..e6639e03095 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -797,8 +797,14 @@ void main() { final String code = sink.toString(); expect(code, contains('func add(x: Int64, y: Int64) throws -> Int64')); expect(code, contains('let args = message as! [Any]')); - expect(code, contains('let xArg: Int64 = args[0] as! Int64')); - expect(code, contains('let yArg: Int64 = args[1] as! Int64')); + expect( + code, + contains( + 'let xArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64')); + expect( + code, + contains( + 'let yArg: Int64 = (args[1] is Int32) ? Int64(args[1] as! Int32) : args[1] as! Int64')); expect(code, contains('let result = try api.add(x: xArg, y: yArg)')); expect(code, contains('reply(wrapResult(result))')); }); @@ -828,7 +834,10 @@ void main() { generator.generate(swiftOptions, root, sink); final String code = sink.toString(); expect(code, contains('let channel = FlutterBasicMessageChannel')); - expect(code, contains('let result: Int64 = response as! Int64')); + expect( + code, + contains( + 'let result: Int64 = (response is Int32) ? Int64(response as! Int32) : response as! Int64')); expect(code, contains('completion(result)')); expect( code, @@ -915,7 +924,10 @@ void main() { const SwiftGenerator generator = SwiftGenerator(); generator.generate(swiftOptions, root, sink); final String code = sink.toString(); - expect(code, contains('let fooArg: Int64? = nilOrValue(args[0])')); + expect( + code, + contains( + 'let fooArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0])')); }); test('nullable argument flutter', () { From b0c7653c5ee2d9c158fa514cca54c39d838bfef9 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 3 Apr 2023 17:53:59 -0700 Subject: [PATCH 21/27] Improve _writeDecodeCasting --- packages/pigeon/lib/swift_generator.dart | 110 ++++++++---------- .../ios/Classes/CoreTests.gen.swift | 80 ++++++------- .../macos/Classes/CoreTests.gen.swift | 80 ++++++------- 3 files changed, 129 insertions(+), 141 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index b6de4d3b334..75c2ad9c202 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -184,7 +184,6 @@ import FlutterMacOS value: listValue, variableName: field.name, type: field.type, - field: field, customClassNames: customClassNames, customEnumNames: customEnumNames, ); @@ -599,56 +598,63 @@ import FlutterMacOS required String value, required String variableName, required TypeDeclaration type, - NamedType? field, Set? customClassNames, Set? customEnumNames, }) { - if (field != null) { - final HostDatatype hostDatatype = _getHostDatatype(root, field); - final String fieldType = _swiftTypeForDartType(field.type); - - if (field.type.isNullable) { - if (customClassNames != null && - !hostDatatype.isBuiltin && - customClassNames.contains(field.type.baseName)) { - indent.writeln('var $variableName: $fieldType? = nil'); - indent.write('if let ${variableName}List = $value as! [Any]? '); - indent.addScoped('{', '}', () { - indent.writeln( - '$variableName = $fieldType.fromList(${variableName}List)'); - }); - } else if (customEnumNames != null && - !hostDatatype.isBuiltin && - customEnumNames.contains(field.type.baseName)) { - indent.writeln('var $variableName: $fieldType? = nil'); - indent.writeln( - 'let ${variableName}EnumVal: Int? = ${_castForceUnwrap(value, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); - indent.write( - 'if let ${variableName}RawValue = ${variableName}EnumVal '); - indent.addScoped('{', '}', () { - indent.writeln( - '$variableName = $fieldType(rawValue: ${variableName}RawValue)!'); - }); - } else { - indent.writeln( - 'let $variableName: $fieldType? = ${_castForceUnwrap(value, field.type, root)}'); - } + String castForceUnwrap(String value, TypeDeclaration type, Root root) { + if (isEnum(root, type)) { + assert(!type.isNullable); + return '${_swiftTypeForDartType(type)}(rawValue: $value as! Int)!'; + } else if (type.baseName == 'Object') { + // Special-cased to avoid warnings about using 'as' with Any. + return value; + } else if (type.baseName == 'int') { + final String orString = + type.isNullable ? 'nilOrValue($value)' : '$value as! Int64'; + return '($value is Int32) ? Int64($value as! Int32) : $orString'; + } else if (type.isNullable) { + return 'nilOrValue($value)'; } else { - if (customClassNames != null && - !hostDatatype.isBuiltin && - customClassNames.contains(field.type.baseName)) { + return '$value as! ${_swiftTypeForDartType(type)}'; + } + } + + final String fieldType = _swiftTypeForDartType(type); + + if (type.isNullable) { + if (customClassNames != null && + customClassNames.contains(type.baseName)) { + indent.writeln('var $variableName: $fieldType? = nil'); + indent.write('if let ${variableName}List = $value as! [Any]? '); + indent.addScoped('{', '}', () { indent.writeln( - 'let $variableName = $fieldType.fromList($value as! [Any])!'); - } else { + '$variableName = $fieldType.fromList(${variableName}List)'); + }); + } else if (customEnumNames != null && + customEnumNames.contains(type.baseName)) { + indent.writeln('var $variableName: $fieldType? = nil'); + indent.writeln( + 'let ${variableName}EnumVal: Int? = ${castForceUnwrap(value, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); + indent + .write('if let ${variableName}RawValue = ${variableName}EnumVal '); + indent.addScoped('{', '}', () { indent.writeln( - 'let $variableName = ${_castForceUnwrap(value, field.type, root)}'); - } + '$variableName = $fieldType(rawValue: ${variableName}RawValue)!'); + }); + } else { + indent.writeln( + 'let $variableName: $fieldType? = ${castForceUnwrap(value, type, root)}'); + } + } else { + if (customClassNames != null && + customClassNames.contains(type.baseName)) { + indent.writeln( + 'let $variableName = $fieldType.fromList($value as! [Any])!'); + } else { + indent.writeln( + 'let $variableName = ${castForceUnwrap(value, type, root)}'); } - return; } - - indent.writeln( - 'let $variableName: ${_nullsafeSwiftTypeForDartType(type)} = ${_castForceUnwrap(value, type, root)}'); } void _writeWrapResult(Indent indent) { @@ -721,24 +727,6 @@ String _camelCase(String text) { return pascal[0].toLowerCase() + pascal.substring(1); } -String _castForceUnwrap(String value, TypeDeclaration type, Root root) { - if (isEnum(root, type)) { - assert(!type.isNullable); - return '${_swiftTypeForDartType(type)}(rawValue: $value as! Int)!'; - } else if (type.baseName == 'Object') { - // Special-cased to avoid warnings about using 'as' with Any. - return value; - } else if (type.baseName == 'int') { - final String orString = - type.isNullable ? 'nilOrValue($value)' : '$value as! Int64'; - return '($value is Int32) ? Int64($value as! Int32) : $orString'; - } else if (type.isNullable) { - return 'nilOrValue($value)'; - } else { - return '$value as! ${_swiftTypeForDartType(type)}'; - } -} - /// Converts a [List] of [TypeDeclaration]s to a comma separated [String] to be /// used in Swift code. String _flattenTypeArguments(List args) { diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index d5648868759..f9d5a27b66a 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -425,7 +425,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllTypes = args[0] as! AllTypes + let everythingArg = args[0] as! AllTypes do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -483,7 +483,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -499,7 +499,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double = args[0] as! Double + let aDoubleArg = args[0] as! Double do { let result = try api.echo(aDoubleArg) reply(wrapResult(result)) @@ -515,7 +515,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool = args[0] as! Bool + let aBoolArg = args[0] as! Bool do { let result = try api.echo(aBoolArg) reply(wrapResult(result)) @@ -531,7 +531,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String = args[0] as! String + let aStringArg = args[0] as! String do { let result = try api.echo(aStringArg) reply(wrapResult(result)) @@ -547,7 +547,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData + let aUint8ListArg = args[0] as! FlutterStandardTypedData do { let result = try api.echo(aUint8ListArg) reply(wrapResult(result)) @@ -563,7 +563,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg: Any = args[0] + let anObjectArg = args[0] do { let result = try api.echo(anObjectArg) reply(wrapResult(result)) @@ -579,7 +579,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?] = args[0] as! [Any?] + let aListArg = args[0] as! [Any?] do { let result = try api.echo(aListArg) reply(wrapResult(result)) @@ -595,7 +595,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] + let aMapArg = args[0] as! [String?: Any?] do { let result = try api.echo(aMapArg) reply(wrapResult(result)) @@ -628,7 +628,7 @@ class HostIntegrationCoreApiSetup { if let api = api { extractNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let wrapperArg: AllNullableTypesWrapper = args[0] as! AllNullableTypesWrapper + let wrapperArg = args[0] as! AllNullableTypesWrapper do { let result = try api.extractNestedNullableString(from: wrapperArg) reply(wrapResult(result)) @@ -824,7 +824,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -842,7 +842,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double = args[0] as! Double + let aDoubleArg = args[0] as! Double api.echoAsync(aDoubleArg) { result in switch result { case .success(let res): @@ -860,7 +860,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool = args[0] as! Bool + let aBoolArg = args[0] as! Bool api.echoAsync(aBoolArg) { result in switch result { case .success(let res): @@ -878,7 +878,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String = args[0] as! String + let aStringArg = args[0] as! String api.echoAsync(aStringArg) { result in switch result { case .success(let res): @@ -896,7 +896,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData + let aUint8ListArg = args[0] as! FlutterStandardTypedData api.echoAsync(aUint8ListArg) { result in switch result { case .success(let res): @@ -914,7 +914,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg: Any = args[0] + let anObjectArg = args[0] api.echoAsync(anObjectArg) { result in switch result { case .success(let res): @@ -932,7 +932,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?] = args[0] as! [Any?] + let aListArg = args[0] as! [Any?] api.echoAsync(aListArg) { result in switch result { case .success(let res): @@ -950,7 +950,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] + let aMapArg = args[0] as! [String?: Any?] api.echoAsync(aMapArg) { result in switch result { case .success(let res): @@ -1016,7 +1016,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllTypes = args[0] as! AllTypes + let everythingArg = args[0] as! AllTypes api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1240,7 +1240,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllTypes = args[0] as! AllTypes + let everythingArg = args[0] as! AllTypes api.callFlutterEcho(everythingArg) { result in switch result { case .success(let res): @@ -1276,7 +1276,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool = args[0] as! Bool + let aBoolArg = args[0] as! Bool api.callFlutterEcho(aBoolArg) { result in switch result { case .success(let res): @@ -1293,7 +1293,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1310,7 +1310,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double = args[0] as! Double + let aDoubleArg = args[0] as! Double api.callFlutterEcho(aDoubleArg) { result in switch result { case .success(let res): @@ -1327,7 +1327,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String = args[0] as! String + let aStringArg = args[0] as! String api.callFlutterEcho(aStringArg) { result in switch result { case .success(let res): @@ -1344,7 +1344,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData + let aListArg = args[0] as! FlutterStandardTypedData api.callFlutterEcho(aListArg) { result in switch result { case .success(let res): @@ -1361,7 +1361,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?] = args[0] as! [Any?] + let aListArg = args[0] as! [Any?] api.callFlutterEcho(aListArg) { result in switch result { case .success(let res): @@ -1378,7 +1378,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] + let aMapArg = args[0] as! [String?: Any?] api.callFlutterEcho(aMapArg) { result in switch result { case .success(let res): @@ -1602,7 +1602,7 @@ class FlutterIntegrationCoreApi { func echo(_ everythingArg: AllTypes, completion: @escaping (AllTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([everythingArg] as [Any?]) { response in - let result: AllTypes = response as! AllTypes + let result = response as! AllTypes completion(result) } } @@ -1610,7 +1610,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ everythingArg: AllNullableTypes, completion: @escaping (AllNullableTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllNullableTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([everythingArg] as [Any?]) { response in - let result: AllNullableTypes = response as! AllNullableTypes + let result = response as! AllNullableTypes completion(result) } } @@ -1620,7 +1620,7 @@ class FlutterIntegrationCoreApi { func sendMultipleNullableTypes(aBool aNullableBoolArg: Bool?, anInt aNullableIntArg: Int64?, aString aNullableStringArg: String?, completion: @escaping (AllNullableTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.sendMultipleNullableTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aNullableBoolArg, aNullableIntArg, aNullableStringArg] as [Any?]) { response in - let result: AllNullableTypes = response as! AllNullableTypes + let result = response as! AllNullableTypes completion(result) } } @@ -1628,7 +1628,7 @@ class FlutterIntegrationCoreApi { func echo(_ aBoolArg: Bool, completion: @escaping (Bool) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result: Bool = response as! Bool + let result = response as! Bool completion(result) } } @@ -1636,7 +1636,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64 = (response is Int32) ? Int64(response as! Int32) : response as! Int64 + let result = (response is Int32) ? Int64(response as! Int32) : response as! Int64 completion(result) } } @@ -1644,7 +1644,7 @@ class FlutterIntegrationCoreApi { func echo(_ aDoubleArg: Double, completion: @escaping (Double) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result: Double = response as! Double + let result = response as! Double completion(result) } } @@ -1652,7 +1652,7 @@ class FlutterIntegrationCoreApi { func echo(_ aStringArg: String, completion: @escaping (String) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result: String = response as! String + let result = response as! String completion(result) } } @@ -1660,7 +1660,7 @@ class FlutterIntegrationCoreApi { func echo(_ aListArg: FlutterStandardTypedData, completion: @escaping (FlutterStandardTypedData) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result: FlutterStandardTypedData = response as! FlutterStandardTypedData + let result = response as! FlutterStandardTypedData completion(result) } } @@ -1668,7 +1668,7 @@ class FlutterIntegrationCoreApi { func echo(_ aListArg: [Any?], completion: @escaping ([Any?]) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result: [Any?] = response as! [Any?] + let result = response as! [Any?] completion(result) } } @@ -1676,7 +1676,7 @@ class FlutterIntegrationCoreApi { func echo(_ aMapArg: [String?: Any?], completion: @escaping ([String?: Any?]) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result: [String?: Any?] = response as! [String?: Any?] + let result = response as! [String?: Any?] completion(result) } } @@ -1748,7 +1748,7 @@ class FlutterIntegrationCoreApi { func echoAsync(_ aStringArg: String, completion: @escaping (String) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAsyncString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result: String = response as! String + let result = response as! String completion(result) } } @@ -1797,7 +1797,7 @@ class HostSmallApiSetup { if let api = api { echoChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String = args[0] as! String + let aStringArg = args[0] as! String api.echo(aString: aStringArg) { result in switch result { case .success(let res): @@ -1877,7 +1877,7 @@ class FlutterSmallApi { func echo(_ msgArg: TestMessage, completion: @escaping (TestMessage) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterSmallApi.echoWrappedList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([msgArg] as [Any?]) { response in - let result: TestMessage = response as! TestMessage + let result = response as! TestMessage completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index d5648868759..f9d5a27b66a 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -425,7 +425,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllTypes = args[0] as! AllTypes + let everythingArg = args[0] as! AllTypes do { let result = try api.echo(everythingArg) reply(wrapResult(result)) @@ -483,7 +483,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -499,7 +499,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double = args[0] as! Double + let aDoubleArg = args[0] as! Double do { let result = try api.echo(aDoubleArg) reply(wrapResult(result)) @@ -515,7 +515,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool = args[0] as! Bool + let aBoolArg = args[0] as! Bool do { let result = try api.echo(aBoolArg) reply(wrapResult(result)) @@ -531,7 +531,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String = args[0] as! String + let aStringArg = args[0] as! String do { let result = try api.echo(aStringArg) reply(wrapResult(result)) @@ -547,7 +547,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData + let aUint8ListArg = args[0] as! FlutterStandardTypedData do { let result = try api.echo(aUint8ListArg) reply(wrapResult(result)) @@ -563,7 +563,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg: Any = args[0] + let anObjectArg = args[0] do { let result = try api.echo(anObjectArg) reply(wrapResult(result)) @@ -579,7 +579,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?] = args[0] as! [Any?] + let aListArg = args[0] as! [Any?] do { let result = try api.echo(aListArg) reply(wrapResult(result)) @@ -595,7 +595,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] + let aMapArg = args[0] as! [String?: Any?] do { let result = try api.echo(aMapArg) reply(wrapResult(result)) @@ -628,7 +628,7 @@ class HostIntegrationCoreApiSetup { if let api = api { extractNestedNullableStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let wrapperArg: AllNullableTypesWrapper = args[0] as! AllNullableTypesWrapper + let wrapperArg = args[0] as! AllNullableTypesWrapper do { let result = try api.extractNestedNullableString(from: wrapperArg) reply(wrapResult(result)) @@ -824,7 +824,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -842,7 +842,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double = args[0] as! Double + let aDoubleArg = args[0] as! Double api.echoAsync(aDoubleArg) { result in switch result { case .success(let res): @@ -860,7 +860,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool = args[0] as! Bool + let aBoolArg = args[0] as! Bool api.echoAsync(aBoolArg) { result in switch result { case .success(let res): @@ -878,7 +878,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String = args[0] as! String + let aStringArg = args[0] as! String api.echoAsync(aStringArg) { result in switch result { case .success(let res): @@ -896,7 +896,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aUint8ListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData + let aUint8ListArg = args[0] as! FlutterStandardTypedData api.echoAsync(aUint8ListArg) { result in switch result { case .success(let res): @@ -914,7 +914,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncObjectChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anObjectArg: Any = args[0] + let anObjectArg = args[0] api.echoAsync(anObjectArg) { result in switch result { case .success(let res): @@ -932,7 +932,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?] = args[0] as! [Any?] + let aListArg = args[0] as! [Any?] api.echoAsync(aListArg) { result in switch result { case .success(let res): @@ -950,7 +950,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] + let aMapArg = args[0] as! [String?: Any?] api.echoAsync(aMapArg) { result in switch result { case .success(let res): @@ -1016,7 +1016,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllTypes = args[0] as! AllTypes + let everythingArg = args[0] as! AllTypes api.echoAsync(everythingArg) { result in switch result { case .success(let res): @@ -1240,7 +1240,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoAllTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] - let everythingArg: AllTypes = args[0] as! AllTypes + let everythingArg = args[0] as! AllTypes api.callFlutterEcho(everythingArg) { result in switch result { case .success(let res): @@ -1276,7 +1276,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoBoolChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aBoolArg: Bool = args[0] as! Bool + let aBoolArg = args[0] as! Bool api.callFlutterEcho(aBoolArg) { result in switch result { case .success(let res): @@ -1293,7 +1293,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64 = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1310,7 +1310,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoDoubleChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aDoubleArg: Double = args[0] as! Double + let aDoubleArg = args[0] as! Double api.callFlutterEcho(aDoubleArg) { result in switch result { case .success(let res): @@ -1327,7 +1327,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoStringChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String = args[0] as! String + let aStringArg = args[0] as! String api.callFlutterEcho(aStringArg) { result in switch result { case .success(let res): @@ -1344,7 +1344,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoUint8ListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: FlutterStandardTypedData = args[0] as! FlutterStandardTypedData + let aListArg = args[0] as! FlutterStandardTypedData api.callFlutterEcho(aListArg) { result in switch result { case .success(let res): @@ -1361,7 +1361,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoListChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aListArg: [Any?] = args[0] as! [Any?] + let aListArg = args[0] as! [Any?] api.callFlutterEcho(aListArg) { result in switch result { case .success(let res): @@ -1378,7 +1378,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoMapChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aMapArg: [String?: Any?] = args[0] as! [String?: Any?] + let aMapArg = args[0] as! [String?: Any?] api.callFlutterEcho(aMapArg) { result in switch result { case .success(let res): @@ -1602,7 +1602,7 @@ class FlutterIntegrationCoreApi { func echo(_ everythingArg: AllTypes, completion: @escaping (AllTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([everythingArg] as [Any?]) { response in - let result: AllTypes = response as! AllTypes + let result = response as! AllTypes completion(result) } } @@ -1610,7 +1610,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ everythingArg: AllNullableTypes, completion: @escaping (AllNullableTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllNullableTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([everythingArg] as [Any?]) { response in - let result: AllNullableTypes = response as! AllNullableTypes + let result = response as! AllNullableTypes completion(result) } } @@ -1620,7 +1620,7 @@ class FlutterIntegrationCoreApi { func sendMultipleNullableTypes(aBool aNullableBoolArg: Bool?, anInt aNullableIntArg: Int64?, aString aNullableStringArg: String?, completion: @escaping (AllNullableTypes) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.sendMultipleNullableTypes", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aNullableBoolArg, aNullableIntArg, aNullableStringArg] as [Any?]) { response in - let result: AllNullableTypes = response as! AllNullableTypes + let result = response as! AllNullableTypes completion(result) } } @@ -1628,7 +1628,7 @@ class FlutterIntegrationCoreApi { func echo(_ aBoolArg: Bool, completion: @escaping (Bool) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoBool", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aBoolArg] as [Any?]) { response in - let result: Bool = response as! Bool + let result = response as! Bool completion(result) } } @@ -1636,7 +1636,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64 = (response is Int32) ? Int64(response as! Int32) : response as! Int64 + let result = (response is Int32) ? Int64(response as! Int32) : response as! Int64 completion(result) } } @@ -1644,7 +1644,7 @@ class FlutterIntegrationCoreApi { func echo(_ aDoubleArg: Double, completion: @escaping (Double) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoDouble", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aDoubleArg] as [Any?]) { response in - let result: Double = response as! Double + let result = response as! Double completion(result) } } @@ -1652,7 +1652,7 @@ class FlutterIntegrationCoreApi { func echo(_ aStringArg: String, completion: @escaping (String) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result: String = response as! String + let result = response as! String completion(result) } } @@ -1660,7 +1660,7 @@ class FlutterIntegrationCoreApi { func echo(_ aListArg: FlutterStandardTypedData, completion: @escaping (FlutterStandardTypedData) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoUint8List", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result: FlutterStandardTypedData = response as! FlutterStandardTypedData + let result = response as! FlutterStandardTypedData completion(result) } } @@ -1668,7 +1668,7 @@ class FlutterIntegrationCoreApi { func echo(_ aListArg: [Any?], completion: @escaping ([Any?]) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aListArg] as [Any?]) { response in - let result: [Any?] = response as! [Any?] + let result = response as! [Any?] completion(result) } } @@ -1676,7 +1676,7 @@ class FlutterIntegrationCoreApi { func echo(_ aMapArg: [String?: Any?], completion: @escaping ([String?: Any?]) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoMap", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aMapArg] as [Any?]) { response in - let result: [String?: Any?] = response as! [String?: Any?] + let result = response as! [String?: Any?] completion(result) } } @@ -1748,7 +1748,7 @@ class FlutterIntegrationCoreApi { func echoAsync(_ aStringArg: String, completion: @escaping (String) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAsyncString", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([aStringArg] as [Any?]) { response in - let result: String = response as! String + let result = response as! String completion(result) } } @@ -1797,7 +1797,7 @@ class HostSmallApiSetup { if let api = api { echoChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aStringArg: String = args[0] as! String + let aStringArg = args[0] as! String api.echo(aString: aStringArg) { result in switch result { case .success(let res): @@ -1877,7 +1877,7 @@ class FlutterSmallApi { func echo(_ msgArg: TestMessage, completion: @escaping (TestMessage) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterSmallApi.echoWrappedList", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([msgArg] as [Any?]) { response in - let result: TestMessage = response as! TestMessage + let result = response as! TestMessage completion(result) } } From 748a0bba974f8f1f5bfe348ef5367e4fda852195 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 3 Apr 2023 18:22:21 -0700 Subject: [PATCH 22/27] assert message --- packages/pigeon/lib/swift_generator.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 75c2ad9c202..65c059fb299 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -603,7 +603,8 @@ import FlutterMacOS }) { String castForceUnwrap(String value, TypeDeclaration type, Root root) { if (isEnum(root, type)) { - assert(!type.isNullable); + assert(!type.isNullable, + 'nullable enums require special code that this helper does not supply'); return '${_swiftTypeForDartType(type)}(rawValue: $value as! Int)!'; } else if (type.baseName == 'Object') { // Special-cased to avoid warnings about using 'as' with Any. From d8f5fe398e93622f2a624bfdb39a9b5595e4fb59 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 3 Apr 2023 21:00:05 -0700 Subject: [PATCH 23/27] nits --- packages/pigeon/lib/swift_generator.dart | 24 +++++++++---------- .../ios/Classes/CoreTests.gen.swift | 2 -- .../macos/Classes/CoreTests.gen.swift | 2 -- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 65c059fb299..089ee2f497c 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -75,9 +75,7 @@ import Flutter import FlutterMacOS #else #error("Unsupported platform.") -#endif -'''); - indent.newln(); +#endif'''); } @override @@ -184,8 +182,8 @@ import FlutterMacOS value: listValue, variableName: field.name, type: field.type, - customClassNames: customClassNames, - customEnumNames: customEnumNames, + listEncodedClassNames: customClassNames, + listEncodedEnumNames: customEnumNames, ); }); @@ -598,8 +596,8 @@ import FlutterMacOS required String value, required String variableName, required TypeDeclaration type, - Set? customClassNames, - Set? customEnumNames, + Set? listEncodedClassNames, + Set? listEncodedEnumNames, }) { String castForceUnwrap(String value, TypeDeclaration type, Root root) { if (isEnum(root, type)) { @@ -623,16 +621,16 @@ import FlutterMacOS final String fieldType = _swiftTypeForDartType(type); if (type.isNullable) { - if (customClassNames != null && - customClassNames.contains(type.baseName)) { + if (listEncodedClassNames != null && + listEncodedClassNames.contains(type.baseName)) { indent.writeln('var $variableName: $fieldType? = nil'); indent.write('if let ${variableName}List = $value as! [Any]? '); indent.addScoped('{', '}', () { indent.writeln( '$variableName = $fieldType.fromList(${variableName}List)'); }); - } else if (customEnumNames != null && - customEnumNames.contains(type.baseName)) { + } else if (listEncodedEnumNames != null && + listEncodedEnumNames.contains(type.baseName)) { indent.writeln('var $variableName: $fieldType? = nil'); indent.writeln( 'let ${variableName}EnumVal: Int? = ${castForceUnwrap(value, const TypeDeclaration(baseName: 'Int', isNullable: true), root)}'); @@ -647,8 +645,8 @@ import FlutterMacOS 'let $variableName: $fieldType? = ${castForceUnwrap(value, type, root)}'); } } else { - if (customClassNames != null && - customClassNames.contains(type.baseName)) { + if (listEncodedClassNames != null && + listEncodedClassNames.contains(type.baseName)) { indent.writeln( 'let $variableName = $fieldType.fromList($value as! [Any])!'); } else { diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index d853a017824..3559c805de7 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -14,8 +14,6 @@ import FlutterMacOS #error("Unsupported platform.") #endif - - private func wrapResult(_ result: Any?) -> [Any?] { return [result] } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index d853a017824..3559c805de7 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -14,8 +14,6 @@ import FlutterMacOS #error("Unsupported platform.") #endif - - private func wrapResult(_ result: Any?) -> [Any?] { return [result] } From 06ab71ebba50049200d841c655fb287246af61d0 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 3 Apr 2023 21:03:02 -0700 Subject: [PATCH 24/27] comment --- packages/pigeon/lib/swift_generator.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 089ee2f497c..5912255f763 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -589,7 +589,7 @@ import FlutterMacOS /// Writes decode and casting code for any type. /// - /// Optional parameters are necessary for class decoding only. + /// Optional parameters should only be used for class decoding. void _writeDecodeCasting({ required Root root, required Indent indent, From 547ed02d8a1431d7e9e9b5b0b11bcc7cc8b59808 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 4 Apr 2023 10:52:03 -0700 Subject: [PATCH 25/27] nested ternary --- packages/pigeon/lib/swift_generator.dart | 10 +++++-- .../ios/Classes/CoreTests.gen.swift | 28 +++++++++---------- .../macos/Classes/CoreTests.gen.swift | 28 +++++++++---------- 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 5912255f763..fc1d38694f6 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -608,9 +608,13 @@ import FlutterMacOS // Special-cased to avoid warnings about using 'as' with Any. return value; } else if (type.baseName == 'int') { - final String orString = - type.isNullable ? 'nilOrValue($value)' : '$value as! Int64'; - return '($value is Int32) ? Int64($value as! Int32) : $orString'; + if (type.isNullable) { + // Nullable ints need to check for NSNull, nil, and Int32 before casting can be done safely. + // This nested ternary is a necessary evil to avoid less efficient conversions. + return '$value is NSNull ? nil : ($value is Int64 ? $value as! Int64? : Int64($value as! Int32))'; + } else { + return '$value is Int64 ? $value as! Int64 : Int64($value as! Int32)'; + } } else if (type.isNullable) { return 'nilOrValue($value)'; } else { diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 3559c805de7..3bf550ce74f 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -61,8 +61,8 @@ struct AllTypes { static func fromList(_ list: [Any]) -> AllTypes? { let aBool = list[0] as! Bool - let anInt = (list[1] is Int32) ? Int64(list[1] as! Int32) : list[1] as! Int64 - let anInt64 = (list[2] is Int32) ? Int64(list[2] as! Int32) : list[2] as! Int64 + let anInt = list[1] is Int64 ? list[1] as! Int64 : Int64(list[1] as! Int32) + let anInt64 = list[2] is Int64 ? list[2] as! Int64 : Int64(list[2] as! Int32) let aDouble = list[3] as! Double let aByteArray = list[4] as! FlutterStandardTypedData let a4ByteArray = list[5] as! FlutterStandardTypedData @@ -126,8 +126,8 @@ struct AllNullableTypes { static func fromList(_ list: [Any]) -> AllNullableTypes? { let aNullableBool: Bool? = nilOrValue(list[0]) - let aNullableInt: Int64? = (list[1] is Int32) ? Int64(list[1] as! Int32) : nilOrValue(list[1]) - let aNullableInt64: Int64? = (list[2] is Int32) ? Int64(list[2] as! Int32) : nilOrValue(list[2]) + let aNullableInt: Int64? = list[1] is NSNull ? nil : (list[1] is Int64 ? list[1] as! Int64? : Int64(list[1] as! Int32)) + let aNullableInt64: Int64? = list[2] is NSNull ? nil : (list[2] is Int64 ? list[2] as! Int64? : Int64(list[2] as! Int32)) let aNullableDouble: Double? = nilOrValue(list[3]) let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(list[4]) let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(list[5]) @@ -481,7 +481,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32) do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -660,7 +660,7 @@ class HostIntegrationCoreApiSetup { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = (args[1] is Int32) ? Int64(args[1] as! Int32) : nilOrValue(args[1]) + let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64 ? args[1] as! Int64? : Int64(args[1] as! Int32)) let aNullableStringArg: String? = nilOrValue(args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) @@ -677,7 +677,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) + let aNullableIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -822,7 +822,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32) api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -1050,7 +1050,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) + let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1256,7 +1256,7 @@ class HostIntegrationCoreApiSetup { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = (args[1] is Int32) ? Int64(args[1] as! Int32) : nilOrValue(args[1]) + let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64 ? args[1] as! Int64? : Int64(args[1] as! Int32)) let aNullableStringArg: String? = nilOrValue(args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { @@ -1291,7 +1291,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32) api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1410,7 +1410,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) + let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1634,7 +1634,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is Int32) ? Int64(response as! Int32) : response as! Int64 + let result = response is Int64 ? response as! Int64 : Int64(response as! Int32) completion(result) } } @@ -1690,7 +1690,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64? = (response is Int32) ? Int64(response as! Int32) : nilOrValue(response) + let result: Int64? = response is NSNull ? nil : (response is Int64 ? response as! Int64? : Int64(response as! Int32)) completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 3559c805de7..3bf550ce74f 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -61,8 +61,8 @@ struct AllTypes { static func fromList(_ list: [Any]) -> AllTypes? { let aBool = list[0] as! Bool - let anInt = (list[1] is Int32) ? Int64(list[1] as! Int32) : list[1] as! Int64 - let anInt64 = (list[2] is Int32) ? Int64(list[2] as! Int32) : list[2] as! Int64 + let anInt = list[1] is Int64 ? list[1] as! Int64 : Int64(list[1] as! Int32) + let anInt64 = list[2] is Int64 ? list[2] as! Int64 : Int64(list[2] as! Int32) let aDouble = list[3] as! Double let aByteArray = list[4] as! FlutterStandardTypedData let a4ByteArray = list[5] as! FlutterStandardTypedData @@ -126,8 +126,8 @@ struct AllNullableTypes { static func fromList(_ list: [Any]) -> AllNullableTypes? { let aNullableBool: Bool? = nilOrValue(list[0]) - let aNullableInt: Int64? = (list[1] is Int32) ? Int64(list[1] as! Int32) : nilOrValue(list[1]) - let aNullableInt64: Int64? = (list[2] is Int32) ? Int64(list[2] as! Int32) : nilOrValue(list[2]) + let aNullableInt: Int64? = list[1] is NSNull ? nil : (list[1] is Int64 ? list[1] as! Int64? : Int64(list[1] as! Int32)) + let aNullableInt64: Int64? = list[2] is NSNull ? nil : (list[2] is Int64 ? list[2] as! Int64? : Int64(list[2] as! Int32)) let aNullableDouble: Double? = nilOrValue(list[3]) let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(list[4]) let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(list[5]) @@ -481,7 +481,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32) do { let result = try api.echo(anIntArg) reply(wrapResult(result)) @@ -660,7 +660,7 @@ class HostIntegrationCoreApiSetup { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = (args[1] is Int32) ? Int64(args[1] as! Int32) : nilOrValue(args[1]) + let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64 ? args[1] as! Int64? : Int64(args[1] as! Int32)) let aNullableStringArg: String? = nilOrValue(args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) @@ -677,7 +677,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) + let aNullableIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -822,7 +822,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32) api.echoAsync(anIntArg) { result in switch result { case .success(let res): @@ -1050,7 +1050,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) + let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1256,7 +1256,7 @@ class HostIntegrationCoreApiSetup { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = (args[1] is Int32) ? Int64(args[1] as! Int32) : nilOrValue(args[1]) + let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64 ? args[1] as! Int64? : Int64(args[1] as! Int32)) let aNullableStringArg: String? = nilOrValue(args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { @@ -1291,7 +1291,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64 + let anIntArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32) api.callFlutterEcho(anIntArg) { result in switch result { case .success(let res): @@ -1410,7 +1410,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0]) + let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1634,7 +1634,7 @@ class FlutterIntegrationCoreApi { func echo(_ anIntArg: Int64, completion: @escaping (Int64) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result = (response is Int32) ? Int64(response as! Int32) : response as! Int64 + let result = response is Int64 ? response as! Int64 : Int64(response as! Int32) completion(result) } } @@ -1690,7 +1690,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64? = (response is Int32) ? Int64(response as! Int32) : nilOrValue(response) + let result: Int64? = response is NSNull ? nil : (response is Int64 ? response as! Int64? : Int64(response as! Int32)) completion(result) } } From 367009ea0993a8700ff87d209675b4d6ff1ede21 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 4 Apr 2023 10:58:22 -0700 Subject: [PATCH 26/27] gen test --- packages/pigeon/test/swift_generator_test.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index b40a935ccc7..00c21dcedc5 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -800,11 +800,11 @@ void main() { expect( code, contains( - 'let xArg = (args[0] is Int32) ? Int64(args[0] as! Int32) : args[0] as! Int64')); + 'let xArg = args[0] is Int64 ? args[0] as! Int64 : Int64(args[0] as! Int32)')); expect( code, contains( - 'let yArg = (args[1] is Int32) ? Int64(args[1] as! Int32) : args[1] as! Int64')); + 'let yArg = args[1] is Int64 ? args[1] as! Int64 : Int64(args[1] as! Int32)')); expect(code, contains('let result = try api.add(x: xArg, y: yArg)')); expect(code, contains('reply(wrapResult(result))')); }); @@ -837,7 +837,7 @@ void main() { expect( code, contains( - 'let result = (response is Int32) ? Int64(response as! Int32) : response as! Int64')); + 'let result = response is Int64 ? response as! Int64 : Int64(response as! Int32)')); expect(code, contains('completion(result)')); expect( code, @@ -927,7 +927,7 @@ void main() { expect( code, contains( - 'let fooArg: Int64? = (args[0] is Int32) ? Int64(args[0] as! Int32) : nilOrValue(args[0])')); + 'let fooArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32))')); }); test('nullable argument flutter', () { From cdf35ff6316996fc8527464c301a7657418bad9f Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 4 Apr 2023 11:17:29 -0700 Subject: [PATCH 27/27] nits --- packages/pigeon/lib/swift_generator.dart | 4 ++-- .../test_plugin/ios/Classes/CoreTests.gen.swift | 16 ++++++++-------- .../macos/Classes/CoreTests.gen.swift | 16 ++++++++-------- packages/pigeon/test/swift_generator_test.dart | 2 +- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index fc1d38694f6..b14077c7b4f 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -609,9 +609,9 @@ import FlutterMacOS return value; } else if (type.baseName == 'int') { if (type.isNullable) { - // Nullable ints need to check for NSNull, nil, and Int32 before casting can be done safely. + // Nullable ints need to check for NSNull, and Int32 before casting can be done safely. // This nested ternary is a necessary evil to avoid less efficient conversions. - return '$value is NSNull ? nil : ($value is Int64 ? $value as! Int64? : Int64($value as! Int32))'; + return '$value is NSNull ? nil : ($value is Int64? ? $value as! Int64? : Int64($value as! Int32))'; } else { return '$value is Int64 ? $value as! Int64 : Int64($value as! Int32)'; } diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 3bf550ce74f..92421529092 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -126,8 +126,8 @@ struct AllNullableTypes { static func fromList(_ list: [Any]) -> AllNullableTypes? { let aNullableBool: Bool? = nilOrValue(list[0]) - let aNullableInt: Int64? = list[1] is NSNull ? nil : (list[1] is Int64 ? list[1] as! Int64? : Int64(list[1] as! Int32)) - let aNullableInt64: Int64? = list[2] is NSNull ? nil : (list[2] is Int64 ? list[2] as! Int64? : Int64(list[2] as! Int32)) + let aNullableInt: Int64? = list[1] is NSNull ? nil : (list[1] is Int64? ? list[1] as! Int64? : Int64(list[1] as! Int32)) + let aNullableInt64: Int64? = list[2] is NSNull ? nil : (list[2] is Int64? ? list[2] as! Int64? : Int64(list[2] as! Int32)) let aNullableDouble: Double? = nilOrValue(list[3]) let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(list[4]) let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(list[5]) @@ -660,7 +660,7 @@ class HostIntegrationCoreApiSetup { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64 ? args[1] as! Int64? : Int64(args[1] as! Int32)) + let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64? ? args[1] as! Int64? : Int64(args[1] as! Int32)) let aNullableStringArg: String? = nilOrValue(args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) @@ -677,7 +677,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) + let aNullableIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64? ? args[0] as! Int64? : Int64(args[0] as! Int32)) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -1050,7 +1050,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) + let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64? ? args[0] as! Int64? : Int64(args[0] as! Int32)) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1256,7 +1256,7 @@ class HostIntegrationCoreApiSetup { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64 ? args[1] as! Int64? : Int64(args[1] as! Int32)) + let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64? ? args[1] as! Int64? : Int64(args[1] as! Int32)) let aNullableStringArg: String? = nilOrValue(args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { @@ -1410,7 +1410,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) + let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64? ? args[0] as! Int64? : Int64(args[0] as! Int32)) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1690,7 +1690,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64? = response is NSNull ? nil : (response is Int64 ? response as! Int64? : Int64(response as! Int32)) + let result: Int64? = response is NSNull ? nil : (response is Int64? ? response as! Int64? : Int64(response as! Int32)) completion(result) } } diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 3bf550ce74f..92421529092 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -126,8 +126,8 @@ struct AllNullableTypes { static func fromList(_ list: [Any]) -> AllNullableTypes? { let aNullableBool: Bool? = nilOrValue(list[0]) - let aNullableInt: Int64? = list[1] is NSNull ? nil : (list[1] is Int64 ? list[1] as! Int64? : Int64(list[1] as! Int32)) - let aNullableInt64: Int64? = list[2] is NSNull ? nil : (list[2] is Int64 ? list[2] as! Int64? : Int64(list[2] as! Int32)) + let aNullableInt: Int64? = list[1] is NSNull ? nil : (list[1] is Int64? ? list[1] as! Int64? : Int64(list[1] as! Int32)) + let aNullableInt64: Int64? = list[2] is NSNull ? nil : (list[2] is Int64? ? list[2] as! Int64? : Int64(list[2] as! Int32)) let aNullableDouble: Double? = nilOrValue(list[3]) let aNullableByteArray: FlutterStandardTypedData? = nilOrValue(list[4]) let aNullable4ByteArray: FlutterStandardTypedData? = nilOrValue(list[5]) @@ -660,7 +660,7 @@ class HostIntegrationCoreApiSetup { sendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64 ? args[1] as! Int64? : Int64(args[1] as! Int32)) + let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64? ? args[1] as! Int64? : Int64(args[1] as! Int32)) let aNullableStringArg: String? = nilOrValue(args[2]) do { let result = try api.sendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) @@ -677,7 +677,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let aNullableIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) + let aNullableIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64? ? args[0] as! Int64? : Int64(args[0] as! Int32)) do { let result = try api.echo(aNullableIntArg) reply(wrapResult(result)) @@ -1050,7 +1050,7 @@ class HostIntegrationCoreApiSetup { if let api = api { echoAsyncNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) + let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64? ? args[0] as! Int64? : Int64(args[0] as! Int32)) api.echoAsyncNullable(anIntArg) { result in switch result { case .success(let res): @@ -1256,7 +1256,7 @@ class HostIntegrationCoreApiSetup { callFlutterSendMultipleNullableTypesChannel.setMessageHandler { message, reply in let args = message as! [Any] let aNullableBoolArg: Bool? = nilOrValue(args[0]) - let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64 ? args[1] as! Int64? : Int64(args[1] as! Int32)) + let aNullableIntArg: Int64? = args[1] is NSNull ? nil : (args[1] is Int64? ? args[1] as! Int64? : Int64(args[1] as! Int32)) let aNullableStringArg: String? = nilOrValue(args[2]) api.callFlutterSendMultipleNullableTypes(aBool: aNullableBoolArg, anInt: aNullableIntArg, aString: aNullableStringArg) { result in switch result { @@ -1410,7 +1410,7 @@ class HostIntegrationCoreApiSetup { if let api = api { callFlutterEchoNullableIntChannel.setMessageHandler { message, reply in let args = message as! [Any] - let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32)) + let anIntArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64? ? args[0] as! Int64? : Int64(args[0] as! Int32)) api.callFlutterEchoNullable(anIntArg) { result in switch result { case .success(let res): @@ -1690,7 +1690,7 @@ class FlutterIntegrationCoreApi { func echoNullable(_ anIntArg: Int64?, completion: @escaping (Int64?) -> Void) { let channel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.FlutterIntegrationCoreApi.echoNullableInt", binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([anIntArg] as [Any?]) { response in - let result: Int64? = response is NSNull ? nil : (response is Int64 ? response as! Int64? : Int64(response as! Int32)) + let result: Int64? = response is NSNull ? nil : (response is Int64? ? response as! Int64? : Int64(response as! Int32)) completion(result) } } diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index 00c21dcedc5..452bf8f8424 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -927,7 +927,7 @@ void main() { expect( code, contains( - 'let fooArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64 ? args[0] as! Int64? : Int64(args[0] as! Int32))')); + 'let fooArg: Int64? = args[0] is NSNull ? nil : (args[0] is Int64? ? args[0] as! Int64? : Int64(args[0] as! Int32))')); }); test('nullable argument flutter', () {