From 524af57365404988f038294a35a440757bf77487 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 24 Oct 2022 17:06:29 -0700 Subject: [PATCH 01/55] Fixs missed indents on generated comments --- packages/pigeon/lib/java_generator.dart | 2 +- packages/pigeon/lib/swift_generator.dart | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index a1a3b30a89ec..70ebb5e4a885 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -760,7 +760,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { writeImports(); indent.addln(''); indent.writeln( - '${_docCommentPrefix}Generated class from Pigeon.$_docCommentSuffix'); + '$_docCommentPrefix Generated class from Pigeon.$_docCommentSuffix'); indent.writeln( '@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"})'); if (options.useGeneratedAnnotation ?? false) { diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 758199d77b7e..1ffca346255d 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -145,7 +145,7 @@ void _writeHostApi(Indent indent, Api api, Root root) { final String apiName = api.name; const List generatedComments = [ - 'Generated protocol from Pigeon that represents a handler of messages from Flutter.' + ' Generated protocol from Pigeon that represents a handler of messages from Flutter.' ]; addDocumentationComments(indent, api.documentationComments, _docCommentSpec, generatorComments: generatedComments); @@ -282,7 +282,7 @@ String _camelCase(String text) { void _writeFlutterApi(Indent indent, Api api, Root root) { assert(api.location == ApiLocation.flutter); const List generatedComments = [ - 'Generated class from Pigeon that represents Flutter messages that can be called from Swift.' + ' Generated class from Pigeon that represents Flutter messages that can be called from Swift.' ]; addDocumentationComments(indent, api.documentationComments, _docCommentSpec, generatorComments: generatedComments); @@ -581,7 +581,7 @@ import FlutterMacOS } const List generatedComments = [ - 'Generated class from Pigeon that represents data sent in messages.' + ' Generated class from Pigeon that represents data sent in messages.' ]; addDocumentationComments( indent, klass.documentationComments, _docCommentSpec, From 39b10a568ce49a204ca9bb3e6edc59e74af8cadd Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 24 Oct 2022 17:07:10 -0700 Subject: [PATCH 02/55] begin improved serialization --- packages/pigeon/lib/dart_generator.dart | 34 ++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 70da7caed155..86450cb72f0d 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -489,39 +489,39 @@ void generateDart(DartOptions opt, Root root, StringSink sink) { } void writeEncode() { - indent.write('Object encode() '); + indent.write('List encode() '); indent.scoped('{', '}', () { indent.writeln( - 'final Map pigeonMap = {};', + 'final List pigeonList = [];', ); for (final NamedType field in klass.fields) { - indent.write("pigeonMap['${field.name}'] = "); + indent.write('pigeonList.add('); final String conditional = field.type.isNullable ? '?' : ''; if (customClassNames.contains(field.type.baseName)) { indent.addln( - '${field.name}$conditional.encode();', + '${field.name}$conditional.encode());', ); } else if (customEnumNames.contains(field.type.baseName)) { indent.addln( - '${field.name}$conditional.index;', + '${field.name}$conditional.index);', ); } else { - indent.addln('${field.name};'); + indent.addln('${field.name});'); } } - indent.writeln('return pigeonMap;'); + indent.writeln('return pigeonList;'); }); } void writeDecode() { - void writeValueDecode(NamedType field) { + void writeValueDecode(NamedType field, int index) { if (customClassNames.contains(field.type.baseName)) { final String nonNullValue = - "${field.type.baseName}.decode(pigeonMap['${field.name}']!)"; + '${field.type.baseName}.decode(pigeonList[$index]!)'; indent.format( field.type.isNullable ? ''' -pigeonMap['${field.name}'] != null +pigeonList[$index] != null \t\t? $nonNullValue \t\t: null''' : nonNullValue, @@ -529,11 +529,11 @@ pigeonMap['${field.name}'] != null trailingNewline: false); } else if (customEnumNames.contains(field.type.baseName)) { final String nonNullValue = - "${field.type.baseName}.values[pigeonMap['${field.name}']! as int]"; + '${field.type.baseName}.values[pigeonList[$index]! as int]'; indent.format( field.type.isNullable ? ''' -pigeonMap['${field.name}'] != null +pigeonList[$index] != null \t\t? $nonNullValue \t\t: null''' : nonNullValue, @@ -544,17 +544,17 @@ pigeonMap['${field.name}'] != null final String castCall = _makeGenericCastCall(field.type); final String castCallPrefix = field.type.isNullable ? '?' : '!'; indent.add( - "(pigeonMap['${field.name}'] as $genericType?)$castCallPrefix$castCall", + '(pigeonList[$index] as $genericType?)$castCallPrefix$castCall', ); } else { final String genericdType = _addGenericTypesNullable(field.type); if (field.type.isNullable) { indent.add( - "pigeonMap['${field.name}'] as $genericdType", + 'pigeonList[$index] as $genericdType', ); } else { indent.add( - "pigeonMap['${field.name}']! as $genericdType", + 'pigeonList[$index]! as $genericdType', ); } } @@ -565,14 +565,14 @@ pigeonMap['${field.name}'] != null ); indent.scoped('{', '}', () { indent.writeln( - 'final Map pigeonMap = message as Map;', + 'final List pigeonList = message as List;', ); indent.write('return ${klass.name}'); indent.scoped('(', ');', () { for (int index = 0; index < klass.fields.length; index += 1) { final NamedType field = klass.fields[index]; indent.write('${field.name}: '); - writeValueDecode(field); + writeValueDecode(field, index); indent.addln(','); } }); From cdaecf9147253f5602a6a097f51cfc511d67acdc Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 25 Oct 2022 13:01:23 -0700 Subject: [PATCH 03/55] formatting errors --- packages/pigeon/lib/dart_generator.dart | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 86450cb72f0d..82dead6f0a09 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -78,13 +78,21 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { indent.writeln('@override'); indent.write('void writeValue(WriteBuffer buffer, Object? value) '); indent.scoped('{', '}', () { - for (final EnumeratedClass customClass in codecClasses) { - indent.write('if (value is ${customClass.name}) '); + codecClasses + .toList() + .asMap() + .forEach((int index, final EnumeratedClass customClass) { + final String ifValue = 'if (value is ${customClass.name}) '; + if (index == 0) { + indent.write(ifValue); + } else { + indent.add(ifValue); + } indent.scoped('{', '} else ', () { indent.writeln('buffer.putUint8(${customClass.enumeration});'); indent.writeln('writeValue(buffer, value.encode());'); - }); - } + }, addTrailingNewline: false); + }); indent.scoped('{', '}', () { indent.writeln('super.writeValue(buffer, value);'); }); From a4510d53c7c17a8c39f27a5dd22d5c7545587f08 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 27 Oct 2022 14:23:12 -0700 Subject: [PATCH 04/55] Dart encoder updated to use lists, tests to match --- packages/pigeon/lib/dart_generator.dart | 21 ++-- .../test/null_fields_test.dart | 102 +++++++++--------- .../test/null_safe_test.dart | 4 +- packages/pigeon/test/dart_generator_test.dart | 16 +-- 4 files changed, 69 insertions(+), 74 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 82dead6f0a09..fd229860bad6 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -106,7 +106,7 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { indent.write('case ${customClass.enumeration}: '); indent.writeScoped('', '', () { indent.writeln( - 'return ${customClass.name}.decode(readValue(buffer)!);'); + 'return ${customClass.name}.decode(readValue(buffer)! as List);'); }); } indent.write('default:'); @@ -525,11 +525,11 @@ void generateDart(DartOptions opt, Root root, StringSink sink) { void writeValueDecode(NamedType field, int index) { if (customClassNames.contains(field.type.baseName)) { final String nonNullValue = - '${field.type.baseName}.decode(pigeonList[$index]!)'; + '${field.type.baseName}.decode(message[$index]! as List)'; indent.format( field.type.isNullable ? ''' -pigeonList[$index] != null +message[$index] != null \t\t? $nonNullValue \t\t: null''' : nonNullValue, @@ -537,11 +537,11 @@ pigeonList[$index] != null trailingNewline: false); } else if (customEnumNames.contains(field.type.baseName)) { final String nonNullValue = - '${field.type.baseName}.values[pigeonList[$index]! as int]'; + '${field.type.baseName}.values[message[$index]! as int]'; indent.format( field.type.isNullable ? ''' -pigeonList[$index] != null +message[$index] != null \t\t? $nonNullValue \t\t: null''' : nonNullValue, @@ -552,29 +552,26 @@ pigeonList[$index] != null final String castCall = _makeGenericCastCall(field.type); final String castCallPrefix = field.type.isNullable ? '?' : '!'; indent.add( - '(pigeonList[$index] as $genericType?)$castCallPrefix$castCall', + '(message[$index] as $genericType?)$castCallPrefix$castCall', ); } else { final String genericdType = _addGenericTypesNullable(field.type); if (field.type.isNullable) { indent.add( - 'pigeonList[$index] as $genericdType', + 'message[$index] as $genericdType', ); } else { indent.add( - 'pigeonList[$index]! as $genericdType', + 'message[$index]! as $genericdType', ); } } } indent.write( - 'static ${klass.name} decode(Object message) ', + 'static ${klass.name} decode(List message) ', ); indent.scoped('{', '}', () { - indent.writeln( - 'final List pigeonList = message as List;', - ); indent.write('return ${klass.name}'); indent.scoped('(', ');', () { for (int index = 0; index < klass.fields.length; index += 1) { diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart index 7cb73be22cd0..ec75a8ea169d 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart @@ -44,36 +44,35 @@ void main() { test('test request decode with values', () { final NullFieldsSearchRequest request = - NullFieldsSearchRequest.decode({ - 'query': 'query', - 'identifier': 1, - }); + NullFieldsSearchRequest.decode([ + 'query', + 1, + ]); expect(request.query, 'query'); }); test('test request decode with null', () { final NullFieldsSearchRequest request = - NullFieldsSearchRequest.decode({ - 'query': null, - 'identifier': 1, - }); + NullFieldsSearchRequest.decode([ + null, + 1, + ]); expect(request.query, isNull); }); test('test reply decode with values', () { - final NullFieldsSearchReply reply = - NullFieldsSearchReply.decode({ - 'result': 'result', - 'error': 'error', - 'indices': [1, 2, 3], - 'request': { - 'query': 'query', - 'identifier': 1, - }, - 'type': NullFieldsSearchReplyType.success.index, - }); + final NullFieldsSearchReply reply = NullFieldsSearchReply.decode([ + 'result', + 'error', + [1, 2, 3], + [ + 'query', + 1, + ], + NullFieldsSearchReplyType.success.index, + ]); expect(reply.result, 'result'); expect(reply.error, 'error'); @@ -83,14 +82,13 @@ void main() { }); test('test reply decode with nulls', () { - final NullFieldsSearchReply reply = - NullFieldsSearchReply.decode({ - 'result': null, - 'error': null, - 'indices': null, - 'request': null, - 'type': null, - }); + final NullFieldsSearchReply reply = NullFieldsSearchReply.decode([ + null, + null, + null, + null, + null, + ]); expect(reply.result, isNull); expect(reply.error, isNull); @@ -103,20 +101,20 @@ void main() { final NullFieldsSearchRequest request = NullFieldsSearchRequest(query: 'query', identifier: 1); - expect(request.encode(), { - 'query': 'query', - 'identifier': 1, - }); + expect(request.encode(), [ + 'query', + 1, + ]); }); test('test request encode with null', () { final NullFieldsSearchRequest request = NullFieldsSearchRequest(identifier: 1); - expect(request.encode(), { - 'query': null, - 'identifier': 1, - }); + expect(request.encode(), [ + null, + 1, + ]); }); test('test reply encode with values', () { @@ -128,27 +126,27 @@ void main() { type: NullFieldsSearchReplyType.success, ); - expect(reply.encode(), { - 'result': 'result', - 'error': 'error', - 'indices': [1, 2, 3], - 'request': { - 'query': 'query', - 'identifier': 1, - }, - 'type': NullFieldsSearchReplyType.success.index, - }); + expect(reply.encode(), [ + 'result', + 'error', + [1, 2, 3], + [ + 'query', + 1, + ], + NullFieldsSearchReplyType.success.index, + ]); }); test('test reply encode with nulls', () { final NullFieldsSearchReply reply = NullFieldsSearchReply(); - expect(reply.encode(), { - 'result': null, - 'error': null, - 'indices': null, - 'request': null, - 'type': null, - }); + expect(reply.encode(), [ + null, + null, + null, + null, + null, + ]); }); } diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart index 4d944a4cf95f..3377e469483f 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart @@ -28,7 +28,7 @@ void main() { final FlutterSearchReply reply = FlutterSearchReply() ..result = 'foo' ..error = 'bar'; - final Object encoded = reply.encode(); + final List encoded = reply.encode(); final FlutterSearchReply decoded = FlutterSearchReply.decode(encoded); expect(reply.result, decoded.result); expect(reply.error, decoded.error); @@ -38,7 +38,7 @@ void main() { final FlutterSearchReply reply = FlutterSearchReply() ..result = 'foo' ..error = null; - final Object encoded = reply.encode(); + final List encoded = reply.encode(); final FlutterSearchReply decoded = FlutterSearchReply.decode(encoded); expect(reply.result, decoded.result); expect(reply.error, decoded.error); diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart index 582b29e1f08f..956034b4f355 100644 --- a/packages/pigeon/test/dart_generator_test.dart +++ b/packages/pigeon/test/dart_generator_test.dart @@ -187,13 +187,13 @@ void main() { expect( code, contains( - "pigeonMap['nested'] = nested?.encode()", + 'pigeonList.add(nested?.encode())', ), ); expect( code.replaceAll('\n', ' ').replaceAll(' ', ''), contains( - "nested: pigeonMap['nested'] != null ? Input.decode(pigeonMap['nested']!) : null", + 'nested: message[0] != null ? Input.decode(message[0]! as List) : null', ), ); }); @@ -229,13 +229,13 @@ void main() { expect( code, contains( - "pigeonMap['nested'] = nested.encode()", + 'pigeonList.add(nested.encode())', ), ); expect( code.replaceAll('\n', ' ').replaceAll(' ', ''), contains( - "nested: Input.decode(pigeonMap['nested']!)", + 'nested: Input.decode(message[0]! as List)', ), ); }); @@ -417,8 +417,8 @@ void main() { final StringBuffer sink = StringBuffer(); generateDart(const DartOptions(), root, sink); final String code = sink.toString(); - expect(code, contains("pigeonMap['enum1'] = enum1?.index;")); - expect(code, contains("? Enum.values[pigeonMap['enum1']! as int]")); + expect(code, contains('pigeonList.add(enum1?.index);')); + expect(code, contains('? Enum.values[message[0]! as int]')); expect(code, contains('EnumClass doSomething(EnumClass arg0);')); }); @@ -484,8 +484,8 @@ void main() { final StringBuffer sink = StringBuffer(); generateDart(const DartOptions(), root, sink); final String code = sink.toString(); - expect(code, contains("pigeonMap['enum1'] = enum1.index;")); - expect(code, contains("enum1: Enum.values[pigeonMap['enum1']! as int]")); + expect(code, contains('pigeonList.add(enum1.index);')); + expect(code, contains('enum1: Enum.values[message[0]! as int]')); }); test('host void argument', () { From eca71a24bb75f61c9211b372019a017019330ac3 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 2 Nov 2022 10:42:14 -0700 Subject: [PATCH 05/55] Begin swift serial, change error shape --- packages/pigeon/lib/dart_generator.dart | 17 +++-- packages/pigeon/lib/pigeon_lib.dart | 3 +- packages/pigeon/lib/swift_generator.dart | 72 +++++++++---------- .../ios/RunnerTests/AsyncHandlersTest.swift | 17 +++-- .../ios/RunnerTests/MultipleArityTests.swift | 8 +-- .../ios/RunnerTests/PrimitiveTests.swift | 42 +++++------ .../ios/RunnerTests/RunnerTests.swift | 14 ++-- packages/pigeon/test/dart_generator_test.dart | 16 ++--- .../pigeon/test/swift_generator_test.dart | 12 ++-- 9 files changed, 99 insertions(+), 102 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index fd229860bad6..cc2ddc7df1e0 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -226,32 +226,31 @@ final BinaryMessenger? _binaryMessenger; }); final String returnType = _makeGenericTypeArguments(func.returnType); final String castCall = _makeGenericCastCall(func.returnType); - const String accessor = "replyMap['${Keys.result}']"; + const String accessor = 'replyList[0]'; final String nullHandler = func.returnType.isNullable ? (castCall.isEmpty ? '' : '?') : '!'; final String returnStatement = func.returnType.isVoid ? 'return;' : 'return ($accessor as $returnType?)$nullHandler$castCall;'; indent.format(''' -final Map? replyMap =\n\t\tawait channel.send($sendArgument) as Map?; -if (replyMap == null) { +final List? replyList =\n\t\tawait channel.send($sendArgument) as List?; +if (replyList == null) { \tthrow PlatformException( \t\tcode: 'channel-error', \t\tmessage: 'Unable to establish connection on channel.', \t); -} else if (replyMap['error'] != null) { -\tfinal Map error = (replyMap['${Keys.error}'] as Map?)!; +} else if (replyList.length > 1) { \tthrow PlatformException( -\t\tcode: (error['${Keys.errorCode}'] as String?)!, -\t\tmessage: error['${Keys.errorMessage}'] as String?, -\t\tdetails: error['${Keys.errorDetails}'], +\t\tcode: (replyList[0] as String?)!, +\t\tmessage: replyList[1] as String?, +\t\tdetails: replyList[2], \t);'''); // On iOS we can return nil from functions to accommodate error // handling. Returning a nil value and not returning an error is an // exception. if (!func.returnType.isNullable && !func.returnType.isVoid) { indent.format(''' -} else if (replyMap['${Keys.result}'] == null) { +} else if (replyList[0] == null) { \tthrow PlatformException( \t\tcode: 'null-error', \t\tmessage: 'Host platform returned null value for non-null return value.', diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 2c04ed3f6746..8706b7282830 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -254,7 +254,8 @@ class PigeonOptions { : null, swiftOut: map['swiftOut'] as String?, swiftOptions: map.containsKey('swiftOptions') - ? SwiftOptions.fromMap((map['swiftOptions'] as Map?)!) + ? SwiftOptions.fromList( + (map['swiftOptions'] as Map?)!) : null, kotlinOut: map['kotlinOut'] as String?, kotlinOptions: map.containsKey('kotlinOptions') diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 1ffca346255d..c660fa5aa736 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -24,15 +24,15 @@ class SwiftOptions { final Iterable? copyrightHeader; /// Creates a [SwiftOptions] from a Map representation where: - /// `x = SwiftOptions.fromMap(x.toMap())`. - static SwiftOptions fromMap(Map map) { + /// `x = SwiftOptions.fromList(x.toMap())`. + static SwiftOptions fromList(Map map) { return SwiftOptions( copyrightHeader: map['copyrightHeader'] as Iterable?, ); } /// Converts a [SwiftOptions] to a Map representation where: - /// `x = SwiftOptions.fromMap(x.toMap())`. + /// `x = SwiftOptions.fromList(x.toMap())`. Map toMap() { final Map result = { if (copyrightHeader != null) 'copyrightHeader': copyrightHeader!, @@ -43,7 +43,7 @@ class SwiftOptions { /// Overrides any non-null parameters from [options] into this to make a new /// [SwiftOptions]. SwiftOptions merge(SwiftOptions options) { - return SwiftOptions.fromMap(mergeMaps(toMap(), options.toMap())); + return SwiftOptions.fromList(mergeMaps(toMap(), options.toMap())); } } @@ -75,7 +75,7 @@ void _writeCodec(Indent indent, Api api, Root root) { indent.write('case ${customClass.enumeration}:'); indent.scoped('', '', () { indent.write( - 'return ${customClass.name}.fromMap(self.readValue() as! [String: Any])'); + 'return ${customClass.name}.fromList(self.readValue() as! [Any])'); }); } indent.write('default:'); @@ -98,7 +98,7 @@ void _writeCodec(Indent indent, Api api, Root root) { indent.add('if let value = value as? ${customClass.name} '); indent.scoped('{', '} else ', () { indent.writeln('super.writeByte(${customClass.enumeration})'); - indent.writeln('super.writeValue(value.toMap())'); + indent.writeln('super.writeValue(value.toList())'); }, addTrailingNewline: false); } indent.scoped('{', '}', () { @@ -471,7 +471,7 @@ import FlutterMacOS indent.write('enum ${anEnum.name}: Int '); indent.scoped('{', '}', () { // We use explicit indexing here as use of the ordinal() method is - // discouraged. The toMap and fromMap API matches class API to allow + // discouraged. The toList and fromList API matches class API to allow // the same code to work with enums and classes, but this // can also be done directly in the host and flutter APIs. int index = 0; @@ -493,8 +493,8 @@ import FlutterMacOS indent.addln(defaultNil); } - void writeToMap() { - indent.write('func toMap() -> [String: Any?] '); + void writeToList() { + indent.write('func toList() -> [Any?] '); indent.scoped('{', '}', () { indent.write('return '); indent.scoped('[', ']', () { @@ -505,7 +505,7 @@ import FlutterMacOS final String nullsafe = field.type.isNullable ? '?' : ''; if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { - toWriteValue = '$fieldName$nullsafe.toMap()'; + toWriteValue = '$fieldName$nullsafe.toList()'; } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { toWriteValue = '$fieldName$nullsafe.rawValue'; @@ -515,59 +515,61 @@ import FlutterMacOS final String comma = klass.fields.last == field ? '' : ','; - indent.writeln('"${field.name}": $toWriteValue$comma'); + indent.writeln('$toWriteValue$comma'); } }); }); } - void writeFromMap() { + void writeFromList() { final String className = klass.name; - indent - .write('static func fromMap(_ map: [String: Any?]) -> $className? '); + indent.write('static func fromList(_ list: [Any?]) -> $className? '); indent.scoped('{', '}', () { - for (final NamedType field in klass.fields) { + klass.fields + .toList() + .asMap() + .forEach((int index, final NamedType field) { final HostDatatype hostDatatype = getHostDatatype(field); - final String mapValue = 'map["${field.name}"]'; + final String listValue = 'list[$index]'; final String fieldType = _swiftTypeForDartType(field.type); if (field.type.isNullable) { if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { indent.writeln('var ${field.name}: $fieldType? = nil'); - indent.write( - 'if let ${field.name}Map = $mapValue as? [String: Any?] '); + indent.write('if let ${field.name}List = $listValue as? [Any?] '); indent.scoped('{', '}', () { indent.writeln( - '${field.name} = $fieldType.fromMap(${field.name}Map)'); + '${field.name} = $fieldType.fromList(${field.name}List)'); }); } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { indent.writeln('var ${field.name}: $fieldType? = nil'); - indent.write('if let ${field.name}RawValue = $mapValue as? Int '); + indent + .write('if let ${field.name}RawValue = $listValue as? Int '); indent.scoped('{', '}', () { indent.writeln( '${field.name} = $fieldType(rawValue: ${field.name}RawValue)'); }); } else { - indent.writeln('let ${field.name} = $mapValue as? $fieldType '); + indent.writeln('let ${field.name} = $listValue as? $fieldType '); } } else { if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { indent.writeln( - 'let ${field.name} = $fieldType.fromMap($mapValue as! [String: Any?])!'); + 'let ${field.name} = $fieldType.fromList($listValue as! [Any?])!'); } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { indent.writeln( - 'let ${field.name} = $fieldType(rawValue: $mapValue as! Int)!'); + 'let ${field.name} = $fieldType(rawValue: $listValue as! Int)!'); } else { - indent.writeln('let ${field.name} = $mapValue as! $fieldType'); + indent.writeln('let ${field.name} = $listValue as! $fieldType'); } } - } + }); indent.writeln(''); indent.write('return '); @@ -592,8 +594,8 @@ import FlutterMacOS klass.fields.forEach(writeField); indent.writeln(''); - writeFromMap(); - writeToMap(); + writeFromList(); + writeToList(); }); } @@ -606,24 +608,20 @@ import FlutterMacOS } void writeWrapResult() { - indent.write('private func wrapResult(_ result: Any?) -> [String: Any?] '); + indent.write('private func wrapResult(_ result: Any?) -> [Any?] '); indent.scoped('{', '}', () { - indent.writeln('return ["result": result]'); + indent.writeln('return [result]'); }); } void writeWrapError() { - indent.write( - 'private func wrapError(_ error: FlutterError) -> [String: Any?] '); + indent.write('private func wrapError(_ error: FlutterError) -> [Any?] '); indent.scoped('{', '}', () { indent.write('return '); indent.scoped('[', ']', () { - indent.write('"error": '); - indent.scoped('[', ']', () { - indent.writeln('"${Keys.errorCode}": error.code,'); - indent.writeln('"${Keys.errorMessage}": error.message,'); - indent.writeln('"${Keys.errorDetails}": error.details'); - }); + indent.writeln('error.code,'); + indent.writeln('error.message,'); + indent.writeln('error.details'); }); }); } diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/AsyncHandlersTest.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/AsyncHandlersTest.swift index d7b2cb853f09..0d60f019d116 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/AsyncHandlersTest.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/AsyncHandlersTest.swift @@ -43,9 +43,12 @@ class AsyncHandlersTest: XCTestCase { let expectation = XCTestExpectation(description: "voidvoid callback") binaryMessenger.handlers[channelName]?(nil) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] - XCTAssertNil(outputMap?["result"]) - XCTAssertNil(outputMap?["error"]) + let outputList = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertNotNil(outputList) + XCTAssertNil(outputList?.first) + if (outputList != nil) { + XCTAssertFalse(outputList!.count > 1) + } expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -64,9 +67,11 @@ class AsyncHandlersTest: XCTestCase { let expectation = XCTestExpectation(description: "calculate callback") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] - let output = outputMap?["result"] as? Value - XCTAssertEqual(output?.number, 2) + let outputList = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertNotNil(outputList) + let output = outputList!.first as? Int + XCTAssertNotNil(output) + XCTAssertEqual(output, 2) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/MultipleArityTests.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/MultipleArityTests.swift index 23f3e34cc5f7..c0c5587b2bb5 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/MultipleArityTests.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/MultipleArityTests.swift @@ -24,12 +24,12 @@ class MultipleArityTests: XCTestCase { let expectation = XCTestExpectation(description: "subtraction") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] - XCTAssertNotNil(outputMap) + let outputList = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertNotNil(outputList) - let output = outputMap!["result"] as? Int32 + let output = outputList![0] as? Int32 XCTAssertEqual(3, output) - XCTAssertNil(outputMap?["error"]) + XCTAssertNil(outputList?[0]) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift index d825b0052eef..1782e95b47aa 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift @@ -30,12 +30,12 @@ class PrimitiveTests: XCTestCase { let expectation = XCTestExpectation(description: "anInt") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] - XCTAssertNotNil(outputMap) + let outputList = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertNotNil(outputList) - let output = outputMap!["result"] as? Int32 + let output = outputList!.first as? Int32 XCTAssertEqual(1, output) - XCTAssertNil(outputMap?["error"]) + XCTAssertFalse(outputList!.count > 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -64,12 +64,12 @@ class PrimitiveTests: XCTestCase { let expectation = XCTestExpectation(description: "aBool") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] - XCTAssertNotNil(outputMap) + let outputList = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertNotNil(outputList) - let output = outputMap!["result"] as? Bool + let output = outputList!.first as? Bool XCTAssertEqual(true, output) - XCTAssertNil(outputMap?["error"]) + XCTAssertFalse(outputList!.count > 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -98,12 +98,12 @@ class PrimitiveTests: XCTestCase { let expectation = XCTestExpectation(description: "aDouble") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] - XCTAssertNotNil(outputMap) + let outputList = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertNotNil(outputList) - let output = outputMap!["result"] as? Double + let output = outputList!.first as? Double XCTAssertEqual(1.0, output) - XCTAssertNil(outputMap?["error"]) + XCTAssertFalse(outputList!.count > 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -133,12 +133,12 @@ class PrimitiveTests: XCTestCase { let expectation = XCTestExpectation(description: "aString") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] - XCTAssertNotNil(outputMap) + let outputList = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertNotNil(outputList) - let output = outputMap!["result"] as? String + let output = outputList!.first as? String XCTAssertEqual("hello", output) - XCTAssertNil(outputMap?["error"]) + XCTAssertFalse(outputList!.count > 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -168,12 +168,12 @@ class PrimitiveTests: XCTestCase { let expectation = XCTestExpectation(description: "aList") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] - XCTAssertNotNil(outputMap) + let outputList = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertNotNil(outputList) - let output = outputMap!["result"] as? [Int] + let output = outputList!.first as? [Int] XCTAssertEqual([1, 2, 3], output) - XCTAssertNil(outputMap?["error"]) + XCTAssertFalse(outputList!.count > 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -206,7 +206,7 @@ class PrimitiveTests: XCTestCase { let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] XCTAssertNotNil(outputMap) - let output = outputMap!["result"] as? [String: Int] + let output = outputMap!.first as? [String: Int] XCTAssertEqual(["hello": 1, "world": 2], output) XCTAssertNil(outputMap?["error"]) expectation.fulfill() diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/RunnerTests.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/RunnerTests.swift index cf55e4fa5443..d9d03159cfce 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/RunnerTests.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/RunnerTests.swift @@ -7,24 +7,24 @@ import XCTest class RunnerTests: XCTestCase { - func testToMapAndBack() throws { + func testToListAndBack() throws { let reply = MessageSearchReply(result: "foobar") - let dict = reply.toMap() - let copy = MessageSearchReply.fromMap(dict) + let dict = reply.toList() + let copy = MessageSearchReply.fromList(dict) XCTAssertEqual(reply.result, copy?.result) } func testHandlesNull() throws { let reply = MessageSearchReply() - let dict = reply.toMap() - let copy = MessageSearchReply.fromMap(dict) + let dict = reply.toList() + let copy = MessageSearchReply.fromList(dict) XCTAssertNil(copy?.result) } func testHandlesNullFirst() throws { let reply = MessageSearchReply(error: "foobar") - let dict = reply.toMap() - let copy = MessageSearchReply.fromMap(dict) + let dict = reply.toList() + let copy = MessageSearchReply.fromList(dict) XCTAssertEqual(reply.error, copy?.error) } } diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart index 956034b4f355..2f549bfad135 100644 --- a/packages/pigeon/test/dart_generator_test.dart +++ b/packages/pigeon/test/dart_generator_test.dart @@ -896,10 +896,8 @@ void main() { generateDart(const DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future> doit(')); - expect( - code, - contains( - "return (replyMap['result'] as List?)!.cast();")); + expect(code, + contains('return (replyList[0] as List?)!.cast();')); }); test('flutter generics argument non void return', () { @@ -960,7 +958,7 @@ void main() { generateDart(const DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future doit()')); - expect(code, contains("return (replyMap['result'] as int?);")); + expect(code, contains('return (replyList[0] as int?);')); }); test('return nullable collection host', () { @@ -985,10 +983,8 @@ void main() { generateDart(const DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future?> doit()')); - expect( - code, - contains( - "return (replyMap['result'] as List?)?.cast();")); + expect(code, + contains('return (replyList[0] as List?)?.cast();')); }); test('return nullable async host', () { @@ -1012,7 +1008,7 @@ void main() { generateDart(const DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future doit()')); - expect(code, contains("return (replyMap['result'] as int?);")); + expect(code, contains('return (replyList[0] as int?);')); }); test('return nullable flutter', () { diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index ab0af5b52bc7..1bf023485e00 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -30,9 +30,8 @@ void main() { final String code = sink.toString(); expect(code, contains('struct Foobar')); expect(code, contains('var field1: Int32? = nil')); - expect(code, - contains('static func fromMap(_ map: [String: Any?]) -> Foobar?')); - expect(code, contains('func toMap() -> [String: Any?]')); + expect(code, contains('static func fromList(_ list: [Any?]) -> Foobar?')); + expect(code, contains('func toList() -> [Any?]')); }); test('gen one enum', () { @@ -436,10 +435,9 @@ void main() { expect(code, contains('struct Outer')); expect(code, contains('struct Nested')); expect(code, contains('var nested: Nested? = nil')); - expect( - code, contains('static func fromMap(_ map: [String: Any?]) -> Outer?')); - expect(code, contains('nested = Nested.fromMap(nestedMap)')); - expect(code, contains('func toMap() -> [String: Any?]')); + expect(code, contains('static func fromList(_ list: [Any?]) -> Outer?')); + expect(code, contains('nested = Nested.fromList(nestedList)')); + expect(code, contains('func toList() -> [Any?]')); }); test('gen one async Host Api', () { From d439f901c1bd355f417c3a6725926578afc69877 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 4 Nov 2022 13:57:26 -0700 Subject: [PATCH 06/55] update tests for swift and dart --- packages/pigeon/lib/dart_generator.dart | 4 +-- .../mock_handler_tester/test/widget_test.dart | 4 +-- .../test/multiple_arity_test.dart | 3 +- .../test/null_safe_test.dart | 19 ++++++------ .../test/test_util.dart | 2 +- .../ios/RunnerTests/AsyncHandlersTest.swift | 31 +++++++------------ .../ios/RunnerTests/EnumTests.swift | 6 ++-- .../ios/RunnerTests/MultipleArityTests.swift | 2 +- .../ios/RunnerTests/PrimitiveTests.swift | 10 +++--- packages/pigeon/test/dart_generator_test.dart | 6 ++-- 10 files changed, 38 insertions(+), 49 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index cc2ddc7df1e0..6cb5adc5c662 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -341,7 +341,7 @@ void _writeFlutterApi( _addGenericTypesNullable(func.returnType); final bool isAsync = func.isAsynchronous; final String emptyReturnStatement = isMockHandler - ? 'return {};' + ? 'return [];' : func.returnType.isVoid ? 'return;' : 'return null;'; @@ -394,7 +394,7 @@ void _writeFlutterApi( } const String returnExpression = 'output'; final String returnStatement = isMockHandler - ? "return {'${Keys.result}': $returnExpression};" + ? 'return [$returnExpression];' : 'return $returnExpression;'; indent.writeln(returnStatement); } diff --git a/packages/pigeon/mock_handler_tester/test/widget_test.dart b/packages/pigeon/mock_handler_tester/test/widget_test.dart index 4ffded10d4d7..c2af9669442a 100644 --- a/packages/pigeon/mock_handler_tester/test/widget_test.dart +++ b/packages/pigeon/mock_handler_tester/test/widget_test.dart @@ -85,7 +85,7 @@ void main() { await const BasicMessageChannel( 'dev.flutter.pigeon.MessageApi.search', StandardMessageCodec(), - ).send([null]) as Map?; + ).send([null]) as List?; expect(true, isFalse); // should not reach here } catch (error) { expect(error, isAssertionError); @@ -98,7 +98,5 @@ void main() { } expect(mock.log, ['initialize']); }, - // TODO(ianh): skip can be removed after first stable release in 2021 - skip: Platform.environment['CHANNEL'] == 'stable', ); } diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/multiple_arity_test.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/multiple_arity_test.dart index b0ea0b5dfaeb..95b38ea59471 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/multiple_arity_test.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/multiple_arity_test.dart @@ -21,8 +21,7 @@ void main() { final List args = input as List; final int x = (args[0] as int?)!; final int y = (args[1] as int?)!; - return MultipleArityHostApi.codec - .encodeMessage({'result': x - y}); + return MultipleArityHostApi.codec.encodeMessage([x - y]); }); final MultipleArityHostApi api = diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart index 3377e469483f..b060027144a4 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart @@ -49,13 +49,13 @@ void main() { final FlutterSearchReply reply = FlutterSearchReply()..result = 'ho'; final BinaryMessenger mockMessenger = MockBinaryMessenger(); final Completer completer = Completer(); - completer - .complete(Api.codec.encodeMessage({'result': reply})); + completer.complete(Api.codec.encodeMessage([reply])); final Future sendResult = completer.future; when(mockMessenger.send('dev.flutter.pigeon.Api.search', any)) .thenAnswer((Invocation realInvocation) => sendResult); final Api api = Api(binaryMessenger: mockMessenger); final FlutterSearchReply readReply = await api.search(request); + // final Object? replyDecoded = readReply.encode(); expect(readReply, isNotNull); expect(reply.result, readReply.result); }); @@ -93,7 +93,7 @@ void main() { const String channel = 'dev.flutter.pigeon.Api.anInt'; when(mockMessenger.send(channel, any)) .thenAnswer((Invocation realInvocation) async { - return Api.codec.encodeMessage({'result': null}); + return Api.codec.encodeMessage([null]); }); final Api api = Api(binaryMessenger: mockMessenger); expect(() async => api.anInt(1), @@ -105,7 +105,7 @@ void main() { const String channel = 'dev.flutter.pigeon.NullableArgHostApi.doit'; when(mockMessenger.send(channel, any)) .thenAnswer((Invocation realInvocation) async { - return Api.codec.encodeMessage({'result': 123}); + return Api.codec.encodeMessage([123]); }); final NullableArgHostApi api = NullableArgHostApi(binaryMessenger: mockMessenger); @@ -118,9 +118,9 @@ void main() { 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit'; when(mockMessenger.send(channel, any)) .thenAnswer((Invocation realInvocation) async { - return Api.codec.encodeMessage({ - 'result': ['123'] - }); + return Api.codec.encodeMessage([ + ['123'] + ]); }); final NullableCollectionArgHostApi api = NullableCollectionArgHostApi(binaryMessenger: mockMessenger); @@ -182,8 +182,7 @@ void main() { const String channel = 'dev.flutter.pigeon.NullableReturnHostApi.doit'; when(mockMessenger.send(channel, any)) .thenAnswer((Invocation realInvocation) async { - return NullableReturnHostApi.codec - .encodeMessage({'result': null}); + return NullableReturnHostApi.codec.encodeMessage([null]); }); final NullableReturnHostApi api = NullableReturnHostApi(binaryMessenger: mockMessenger); @@ -197,7 +196,7 @@ void main() { when(mockMessenger.send(channel, any)) .thenAnswer((Invocation realInvocation) async { return NullableCollectionReturnHostApi.codec - .encodeMessage({'result': null}); + .encodeMessage([null]); }); final NullableCollectionReturnHostApi api = NullableCollectionReturnHostApi(binaryMessenger: mockMessenger); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/test_util.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/test_util.dart index ec695fc79a3f..a776c00f9d9a 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/test_util.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/test_util.dart @@ -15,6 +15,6 @@ void echoOneArgument( final Object input = codec.decodeMessage(realInvocation.positionalArguments[1])!; final List args = input as List; - return codec.encodeMessage({'result': args[0]!}); + return codec.encodeMessage([args[0]!]); }); } diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/AsyncHandlersTest.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/AsyncHandlersTest.swift index 0d60f019d116..69d8d0513855 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/AsyncHandlersTest.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/AsyncHandlersTest.swift @@ -1,30 +1,29 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - import XCTest @testable import Runner class MockApi2Host: Api2Host { var output: Int32? - + func calculate(value: Value, completion: @escaping (Value) -> Void) { completion(Value(number: output)) } - + func voidVoid(completion: @escaping () -> Void) { completion() } } class AsyncHandlersTest: XCTestCase { - + func testAsyncHost2Flutter() throws { let binaryMessenger = MockBinaryMessenger(codec: Api2FlutterCodec.shared) binaryMessenger.result = Value(number: 2) let api2Flutter = Api2Flutter(binaryMessenger: binaryMessenger) let input = Value(number: 1) - + let expectation = XCTestExpectation(description: "calculate callback") api2Flutter.calculate(value: input) { output in XCTAssertEqual(output.number, 2) @@ -32,7 +31,7 @@ class AsyncHandlersTest: XCTestCase { } wait(for: [expectation], timeout: 1.0) } - + func testAsyncFlutter2HostVoidVoid() throws { let binaryMessenger = MockBinaryMessenger(codec: Api2HostCodec.shared) let mockApi2Host = MockApi2Host() @@ -40,20 +39,16 @@ class AsyncHandlersTest: XCTestCase { Api2HostSetup.setUp(binaryMessenger: binaryMessenger, api: mockApi2Host) let channelName = "dev.flutter.pigeon.Api2Host.voidVoid" XCTAssertNotNil(binaryMessenger.handlers[channelName]) - + let expectation = XCTestExpectation(description: "voidvoid callback") binaryMessenger.handlers[channelName]?(nil) { data in let outputList = binaryMessenger.codec.decode(data) as? [Any] - XCTAssertNotNil(outputList) - XCTAssertNil(outputList?.first) - if (outputList != nil) { - XCTAssertFalse(outputList!.count > 1) - } + XCTAssertNil(outputList?.first) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) } - + func testAsyncFlutter2Host() throws { let binaryMessenger = MockBinaryMessenger(codec: Api2HostCodec.shared) let mockApi2Host = MockApi2Host() @@ -61,17 +56,15 @@ class AsyncHandlersTest: XCTestCase { Api2HostSetup.setUp(binaryMessenger: binaryMessenger, api: mockApi2Host) let channelName = "dev.flutter.pigeon.Api2Host.calculate" XCTAssertNotNil(binaryMessenger.handlers[channelName]) - + let input = Value(number: 1) let inputEncoded = binaryMessenger.codec.encode([input]) - + let expectation = XCTestExpectation(description: "calculate callback") binaryMessenger.handlers[channelName]?(inputEncoded) { data in let outputList = binaryMessenger.codec.decode(data) as? [Any] - XCTAssertNotNil(outputList) - let output = outputList!.first as? Int - XCTAssertNotNil(output) - XCTAssertEqual(output, 2) + let output = outputList?.first as? Value + XCTAssertEqual(output?.number, 2) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/EnumTests.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/EnumTests.swift index 3f6cc51a8114..45aa693870fd 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/EnumTests.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/EnumTests.swift @@ -30,12 +30,12 @@ class EnumTests: XCTestCase { let expectation = XCTestExpectation(description: "echo") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] + let outputMap = binaryMessenger.codec.decode(data) as? [Any] XCTAssertNotNil(outputMap) - let output = outputMap?["result"] as? DataWithEnum + let output = outputMap?.first as? DataWithEnum XCTAssertEqual(output, input) - XCTAssertNil(outputMap?["error"]) + XCTAssertTrue(outputMap?.count == 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/MultipleArityTests.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/MultipleArityTests.swift index c0c5587b2bb5..201aaa6a10c9 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/MultipleArityTests.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/MultipleArityTests.swift @@ -29,7 +29,7 @@ class MultipleArityTests: XCTestCase { let output = outputList![0] as? Int32 XCTAssertEqual(3, output) - XCTAssertNil(outputList?[0]) + XCTAssertTrue(outputList?.count == 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift index 1782e95b47aa..d2228752f28b 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift @@ -203,12 +203,12 @@ class PrimitiveTests: XCTestCase { let expectation = XCTestExpectation(description: "aMap") binaryMessenger.handlers[channelName]?(inputEncoded) { data in - let outputMap = binaryMessenger.codec.decode(data) as? [String: Any] + let output = binaryMessenger.codec.decode(data) as? [Any] + XCTAssertTrue(output?.count == 1) + + let outputMap = output?.first as? [String: Int] XCTAssertNotNil(outputMap) - - let output = outputMap!.first as? [String: Int] - XCTAssertEqual(["hello": 1, "world": 2], output) - XCTAssertNil(outputMap?["error"]) + XCTAssertEqual(["hello": 1, "world": 2], outputMap) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart index 2f549bfad135..f21806908d3d 100644 --- a/packages/pigeon/test/dart_generator_test.dart +++ b/packages/pigeon/test/dart_generator_test.dart @@ -574,7 +574,7 @@ void main() { expect(mainCode, isNot(contains('abstract class ApiMock'))); expect(mainCode, isNot(contains('.ApiMock.doSomething'))); expect(mainCode, isNot(contains("'${Keys.result}': output"))); - expect(mainCode, isNot(contains('return {};'))); + expect(mainCode, isNot(contains('return [];'))); generateTestDart( const DartOptions(), root, @@ -587,8 +587,8 @@ void main() { expect(testCode, isNot(contains('class Api {'))); expect(testCode, contains('abstract class ApiMock')); expect(testCode, isNot(contains('.ApiMock.doSomething'))); - expect(testCode, contains("'${Keys.result}': output")); - expect(testCode, contains('return {};')); + expect(testCode, contains('output')); + expect(testCode, contains('return [];')); }); test('gen one async Flutter Api', () { From ae34fd47806a094540b2615e40150bd58c04f9dd Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Sat, 5 Nov 2022 00:27:51 -0700 Subject: [PATCH 07/55] true > false --- .../ios/RunnerTests/PrimitiveTests.swift | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift index d2228752f28b..d5b1dc6f82f3 100644 --- a/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift +++ b/packages/pigeon/platform_tests/ios_swift_unit_tests/ios/RunnerTests/PrimitiveTests.swift @@ -35,7 +35,7 @@ class PrimitiveTests: XCTestCase { let output = outputList!.first as? Int32 XCTAssertEqual(1, output) - XCTAssertFalse(outputList!.count > 1) + XCTAssertTrue(outputList!.count == 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -69,7 +69,7 @@ class PrimitiveTests: XCTestCase { let output = outputList!.first as? Bool XCTAssertEqual(true, output) - XCTAssertFalse(outputList!.count > 1) + XCTAssertTrue(outputList!.count == 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -103,7 +103,7 @@ class PrimitiveTests: XCTestCase { let output = outputList!.first as? Double XCTAssertEqual(1.0, output) - XCTAssertFalse(outputList!.count > 1) + XCTAssertTrue(outputList!.count == 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -138,7 +138,7 @@ class PrimitiveTests: XCTestCase { let output = outputList!.first as? String XCTAssertEqual("hello", output) - XCTAssertFalse(outputList!.count > 1) + XCTAssertTrue(outputList!.count == 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) @@ -173,7 +173,7 @@ class PrimitiveTests: XCTestCase { let output = outputList!.first as? [Int] XCTAssertEqual([1, 2, 3], output) - XCTAssertFalse(outputList!.count > 1) + XCTAssertTrue(outputList!.count == 1) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) From c1f3f22d41d8423fd7b48c9b2a5cfee4bec5915b Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Sat, 5 Nov 2022 01:31:17 -0700 Subject: [PATCH 08/55] Return to Object --- packages/pigeon/lib/dart_generator.dart | 5 +++-- .../flutter_null_safe_unit_tests/test/null_safe_test.dart | 5 ++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 6cb5adc5c662..336869926997 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -496,7 +496,7 @@ void generateDart(DartOptions opt, Root root, StringSink sink) { } void writeEncode() { - indent.write('List encode() '); + indent.write('Object encode() '); indent.scoped('{', '}', () { indent.writeln( 'final List pigeonList = [];', @@ -568,9 +568,10 @@ message[$index] != null } indent.write( - 'static ${klass.name} decode(List message) ', + 'static ${klass.name} decode(Object message) ', ); indent.scoped('{', '}', () { + indent.writeln('message as List;'); indent.write('return ${klass.name}'); indent.scoped('(', ');', () { for (int index = 0; index < klass.fields.length; index += 1) { diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart index b060027144a4..317bea9394a9 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.dart @@ -28,7 +28,7 @@ void main() { final FlutterSearchReply reply = FlutterSearchReply() ..result = 'foo' ..error = 'bar'; - final List encoded = reply.encode(); + final List encoded = reply.encode() as List; final FlutterSearchReply decoded = FlutterSearchReply.decode(encoded); expect(reply.result, decoded.result); expect(reply.error, decoded.error); @@ -38,7 +38,7 @@ void main() { final FlutterSearchReply reply = FlutterSearchReply() ..result = 'foo' ..error = null; - final List encoded = reply.encode(); + final List encoded = reply.encode() as List; final FlutterSearchReply decoded = FlutterSearchReply.decode(encoded); expect(reply.result, decoded.result); expect(reply.error, decoded.error); @@ -55,7 +55,6 @@ void main() { .thenAnswer((Invocation realInvocation) => sendResult); final Api api = Api(binaryMessenger: mockMessenger); final FlutterSearchReply readReply = await api.search(request); - // final Object? replyDecoded = readReply.encode(); expect(readReply, isNotNull); expect(reply.result, readReply.result); }); From f8cd1c19d1bdef60f8af50115ff79563b2e0143e Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Sat, 5 Nov 2022 13:41:40 -0700 Subject: [PATCH 09/55] correctly nest lists in dart and tests --- packages/pigeon/lib/dart_generator.dart | 18 ++-- .../test/null_fields_test.dart | 84 ++++++++++++------- packages/pigeon/test/dart_generator_test.dart | 8 +- 3 files changed, 66 insertions(+), 44 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 336869926997..38e4a1b668ff 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -516,7 +516,7 @@ void generateDart(DartOptions opt, Root root, StringSink sink) { indent.addln('${field.name});'); } } - indent.writeln('return pigeonList;'); + indent.writeln('return [pigeonList];'); }); } @@ -524,11 +524,11 @@ void generateDart(DartOptions opt, Root root, StringSink sink) { void writeValueDecode(NamedType field, int index) { if (customClassNames.contains(field.type.baseName)) { final String nonNullValue = - '${field.type.baseName}.decode(message[$index]! as List)'; + '${field.type.baseName}.decode(result[$index]! as List)'; indent.format( field.type.isNullable ? ''' -message[$index] != null +result[$index] != null \t\t? $nonNullValue \t\t: null''' : nonNullValue, @@ -536,11 +536,11 @@ message[$index] != null trailingNewline: false); } else if (customEnumNames.contains(field.type.baseName)) { final String nonNullValue = - '${field.type.baseName}.values[message[$index]! as int]'; + '${field.type.baseName}.values[result[$index]! as int]'; indent.format( field.type.isNullable ? ''' -message[$index] != null +result[$index] != null \t\t? $nonNullValue \t\t: null''' : nonNullValue, @@ -551,17 +551,17 @@ message[$index] != null final String castCall = _makeGenericCastCall(field.type); final String castCallPrefix = field.type.isNullable ? '?' : '!'; indent.add( - '(message[$index] as $genericType?)$castCallPrefix$castCall', + '(result[$index] as $genericType?)$castCallPrefix$castCall', ); } else { final String genericdType = _addGenericTypesNullable(field.type); if (field.type.isNullable) { indent.add( - 'message[$index] as $genericdType', + 'result[$index] as $genericdType', ); } else { indent.add( - 'message[$index]! as $genericdType', + 'result[$index]! as $genericdType', ); } } @@ -572,6 +572,8 @@ message[$index] != null ); indent.scoped('{', '}', () { indent.writeln('message as List;'); + indent.writeln( + 'final List result = message.first! as List;'); indent.write('return ${klass.name}'); indent.scoped('(', ');', () { for (int index = 0; index < klass.fields.length; index += 1) { diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart index ec75a8ea169d..a5bdc062980e 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart @@ -45,8 +45,10 @@ void main() { test('test request decode with values', () { final NullFieldsSearchRequest request = NullFieldsSearchRequest.decode([ - 'query', - 1, + [ + 'query', + 1, + ] ]); expect(request.query, 'query'); @@ -55,8 +57,10 @@ void main() { test('test request decode with null', () { final NullFieldsSearchRequest request = NullFieldsSearchRequest.decode([ - null, - 1, + [ + null, + 1, + ] ]); expect(request.query, isNull); @@ -64,14 +68,18 @@ void main() { test('test reply decode with values', () { final NullFieldsSearchReply reply = NullFieldsSearchReply.decode([ - 'result', - 'error', - [1, 2, 3], [ - 'query', - 1, - ], - NullFieldsSearchReplyType.success.index, + 'result', + 'error', + [1, 2, 3], + [ + [ + 'query', + 1, + ] + ], + NullFieldsSearchReplyType.success.index, + ] ]); expect(reply.result, 'result'); @@ -83,11 +91,13 @@ void main() { test('test reply decode with nulls', () { final NullFieldsSearchReply reply = NullFieldsSearchReply.decode([ - null, - null, - null, - null, - null, + [ + null, + null, + null, + null, + null, + ] ]); expect(reply.result, isNull); @@ -102,8 +112,10 @@ void main() { NullFieldsSearchRequest(query: 'query', identifier: 1); expect(request.encode(), [ - 'query', - 1, + [ + 'query', + 1, + ] ]); }); @@ -112,8 +124,10 @@ void main() { NullFieldsSearchRequest(identifier: 1); expect(request.encode(), [ - null, - 1, + [ + null, + 1, + ] ]); }); @@ -127,14 +141,18 @@ void main() { ); expect(reply.encode(), [ - 'result', - 'error', - [1, 2, 3], [ - 'query', - 1, - ], - NullFieldsSearchReplyType.success.index, + 'result', + 'error', + [1, 2, 3], + [ + [ + 'query', + 1, + ] + ], + NullFieldsSearchReplyType.success.index, + ] ]); }); @@ -142,11 +160,13 @@ void main() { final NullFieldsSearchReply reply = NullFieldsSearchReply(); expect(reply.encode(), [ - null, - null, - null, - null, - null, + [ + null, + null, + null, + null, + null, + ] ]); }); } diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart index f21806908d3d..45afc6c53c98 100644 --- a/packages/pigeon/test/dart_generator_test.dart +++ b/packages/pigeon/test/dart_generator_test.dart @@ -193,7 +193,7 @@ void main() { expect( code.replaceAll('\n', ' ').replaceAll(' ', ''), contains( - 'nested: message[0] != null ? Input.decode(message[0]! as List) : null', + 'nested: result[0] != null ? Input.decode(result[0]! as List) : null', ), ); }); @@ -235,7 +235,7 @@ void main() { expect( code.replaceAll('\n', ' ').replaceAll(' ', ''), contains( - 'nested: Input.decode(message[0]! as List)', + 'nested: Input.decode(result[0]! as List)', ), ); }); @@ -418,7 +418,7 @@ void main() { generateDart(const DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('pigeonList.add(enum1?.index);')); - expect(code, contains('? Enum.values[message[0]! as int]')); + expect(code, contains('? Enum.values[result[0]! as int]')); expect(code, contains('EnumClass doSomething(EnumClass arg0);')); }); @@ -485,7 +485,7 @@ void main() { generateDart(const DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('pigeonList.add(enum1.index);')); - expect(code, contains('enum1: Enum.values[message[0]! as int]')); + expect(code, contains('enum1: Enum.values[result[0]! as int]')); }); test('host void argument', () { From c415c4c307068f63e79e0226b0487afc8712a790 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 7 Nov 2022 15:14:25 -0800 Subject: [PATCH 10/55] Kotlin gen and tests updated to lists --- packages/pigeon/lib/kotlin_generator.dart | 94 +++++++++---------- .../AllDatatypesTest.kt | 13 ++- .../AsyncHandlersTest.kt | 6 +- .../pigeon/test/kotlin_generator_test.dart | 22 ++--- 4 files changed, 66 insertions(+), 69 deletions(-) diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index d049f860b4ab..711fcc792f1d 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -85,10 +85,9 @@ void _writeCodec(Indent indent, Api api, Root root) { for (final EnumeratedClass customClass in codecClasses) { indent.write('${customClass.enumeration}.toByte() -> '); indent.scoped('{', '}', () { - indent.write( - 'return (readValue(buffer) as? Map)?.let '); + indent.write('return (readValue(buffer) as? List)?.let '); indent.scoped('{', '}', () { - indent.writeln('${customClass.name}.fromMap(it)'); + indent.writeln('${customClass.name}.fromList(it)'); }); }); } @@ -105,7 +104,7 @@ void _writeCodec(Indent indent, Api api, Root root) { indent.write('is ${customClass.name} -> '); indent.scoped('{', '}', () { indent.writeln('stream.write(${customClass.enumeration})'); - indent.writeln('writeValue(stream, value.toMap())'); + indent.writeln('writeValue(stream, value.toList())'); }); } indent.writeln('else -> super.writeValue(stream, value)'); @@ -214,7 +213,7 @@ void _writeHostApi(Indent indent, Api api, Root root) { indent.write('channel.setMessageHandler '); indent.scoped('{ $messageVarName, reply ->', '}', () { - indent.writeln('val wrapped = hashMapOf()'); + indent.writeln('val wrapped = mutableListOf()'); indent.write('try '); indent.scoped('{', '}', () { @@ -244,15 +243,14 @@ void _writeHostApi(Indent indent, Api api, Root root) { } } else if (method.returnType.isVoid) { indent.writeln(call); - indent.writeln('wrapped["${Keys.result}"] = null'); + indent.writeln('wrapped.add(null)'); } else { - indent.writeln('wrapped["${Keys.result}"] = $call'); + indent.writeln('wrapped.add($call)'); } }, addTrailingNewline: false); indent.add(' catch (exception: Error) '); indent.scoped('{', '', () { - indent.writeln( - 'wrapped["${Keys.error}"] = wrapError(exception)'); + indent.writeln('wrapped.add(wrapError(exception))'); if (method.isAsynchronous) { indent.writeln('reply.reply(wrapped)'); } @@ -479,7 +477,7 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.write('enum class ${anEnum.name}(val raw: Int) '); indent.scoped('{', '}', () { // We use explicit indexing here as use of the ordinal() method is - // discouraged. The toMap and fromMap API matches class API to allow + // discouraged. The toList and fromList API matches class API to allow // the same code to work with enums and classes, but this // can also be done directly in the host and flutter APIs. int index = 0; @@ -514,48 +512,49 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.add(defaultNil); } - void writeToMap() { - indent.write('fun toMap(): Map '); + void writeToList() { + indent.write('fun toList(): MutableList> '); indent.scoped('{', '}', () { - indent.writeln('val map = mutableMapOf()'); + indent.writeln('val list = mutableListOf()'); for (final NamedType field in klass.fields) { final HostDatatype hostDatatype = getHostDatatype(field); String toWriteValue = ''; final String fieldName = field.name; - final String prefix = field.type.isNullable ? 'it' : fieldName; if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { - toWriteValue = '$prefix.toMap()'; + toWriteValue = '$fieldName?.toList()'; } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { - toWriteValue = '$prefix.raw'; + toWriteValue = '$fieldName?.raw'; } else { - toWriteValue = prefix; + toWriteValue = fieldName; } if (field.type.isNullable) { - indent.writeln( - '$fieldName?.let { map["${field.name}"] = $toWriteValue }'); + indent.writeln('list.add($toWriteValue)'); } else { - indent.writeln('map["${field.name}"] = $toWriteValue'); + indent.writeln('list.add($toWriteValue)'); } } - - indent.writeln('return map'); + indent.writeln('return mutableListOf>(list)'); }); } - void writeFromMap() { + void writeFromList() { final String className = klass.name; indent.write('companion object '); indent.scoped('{', '}', () { indent.writeln('@Suppress("UNCHECKED_CAST")'); - indent.write('fun fromMap(map: Map): $className '); + indent.write('fun fromList(result: List): $className '); indent.scoped('{', '}', () { - for (final NamedType field in klass.fields) { + indent.writeln('val list = result.first() as List'); + klass.fields + .toList() + .asMap() + .forEach((int index, final NamedType field) { final HostDatatype hostDatatype = getHostDatatype(field); // The StandardMessageCodec can give us [Integer, Long] for @@ -563,45 +562,45 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { // longs in Pigeon with Kotlin. final bool isInt = field.type.baseName == 'int'; - final String mapValue = 'map["${field.name}"]'; + final String listValue = 'list[$index]'; final String fieldType = _kotlinTypeForDartType(field.type); if (field.type.isNullable) { if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { indent.write('val ${field.name}: $fieldType? = '); - indent.add('($mapValue as? Map)?.let '); + indent.add('($listValue as? List)?.let '); indent.scoped('{', '}', () { - indent.writeln('$fieldType.fromMap(it)'); + indent.writeln('$fieldType.fromList(it)'); }); } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { indent.write('val ${field.name}: $fieldType? = '); - indent.add('($mapValue as? Int)?.let '); + indent.add('($listValue as? Int)?.let '); indent.scoped('{', '}', () { indent.writeln('$fieldType.ofRaw(it)'); }); } else if (isInt) { - indent.write('val ${field.name} = $mapValue'); + indent.write('val ${field.name} = $listValue'); indent.addln( '.let { if (it is Int) it.toLong() else it as? Long }'); } else { - indent.writeln('val ${field.name} = $mapValue as? $fieldType'); + indent.writeln('val ${field.name} = $listValue as? $fieldType'); } } else { if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { indent.writeln( - 'val ${field.name} = $fieldType.fromMap($mapValue as Map)'); + 'val ${field.name} = $fieldType.fromList($listValue as List)'); } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { indent.write( - 'val ${field.name} = $fieldType.ofRaw($mapValue as Int)!!'); + 'val ${field.name} = $fieldType.ofRaw($listValue as Int)!!'); } else { - indent.writeln('val ${field.name} = $mapValue as $fieldType'); + indent.writeln('val ${field.name} = $listValue as $fieldType'); } } - } + }); indent.writeln(''); indent.write('return $className('); @@ -634,8 +633,8 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { }); indent.scoped(') {', '}', () { - writeFromMap(); - writeToMap(); + writeFromList(); + writeToList(); }); } @@ -648,26 +647,21 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { } void writeWrapResult() { - indent.write('private fun wrapResult(result: Any?): Map '); + indent.write('private fun wrapResult(result: Any?): List '); indent.scoped('{', '}', () { - indent.writeln('return hashMapOf("result" to result)'); + indent.writeln('return listOf(result)'); }); } void writeWrapError() { - indent.write( - 'private fun wrapError(exception: Throwable): Map '); + indent.write('private fun wrapError(exception: Throwable): List '); indent.scoped('{', '}', () { indent.write('return '); - indent.scoped('hashMapOf(', ')', () { - indent.write('"error" to '); - indent.scoped('hashMapOf(', ')', () { - indent.writeln( - '"${Keys.errorCode}" to exception.javaClass.simpleName,'); - indent.writeln('"${Keys.errorMessage}" to exception.toString(),'); - indent.writeln( - '"${Keys.errorDetails}" to "Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception)'); - }); + indent.scoped('listOf(', ')', () { + indent.writeln('exception.javaClass.simpleName,'); + indent.writeln('exception.toString(),'); + indent.writeln( + '"Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception)'); }); }); } diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AllDatatypesTest.kt b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AllDatatypesTest.kt index 87a94ca51fb9..36e3d68975bb 100644 --- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AllDatatypesTest.kt +++ b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AllDatatypesTest.kt @@ -101,11 +101,16 @@ internal class AllDatatypesTest: TestCase() { @Test fun testIntegerToLong() { val everything = Everything(anInt = 123L) - val map = everything.toMap() - assertTrue(map.containsKey("anInt")) + val list = everything.toList() + assertNotNull(list) + val result = list.first() + assertNotNull(result) + assertNull(result.first()) + assertNotNull(result[1]) + assertTrue(result[1] == 123L) - val map2 = hashMapOf("anInt" to 123) - val everything2 = Everything.fromMap(map2) + val list2 = listOf(listOf(null, 123, null, null, null, null, null, null, null, null, null, null, null)) + val everything2 = Everything.fromList(list2) assertEquals(everything.anInt, everything2.anInt) } diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AsyncHandlersTest.kt b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AsyncHandlersTest.kt index 04937c021e40..4d4bfd7597ec 100644 --- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AsyncHandlersTest.kt +++ b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/AsyncHandlersTest.kt @@ -70,10 +70,10 @@ internal class AsyncHandlersTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as MutableList? assertNotNull(wrapped) wrapped?.let { - assertEquals(output, wrapped["result"]) + assertEquals(output, wrapped.first()) } } @@ -104,7 +104,7 @@ internal class AsyncHandlersTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as MutableList? assertNull(wrapped) } diff --git a/packages/pigeon/test/kotlin_generator_test.dart b/packages/pigeon/test/kotlin_generator_test.dart index c9c8c6fa5208..cece31c2508a 100644 --- a/packages/pigeon/test/kotlin_generator_test.dart +++ b/packages/pigeon/test/kotlin_generator_test.dart @@ -31,8 +31,8 @@ void main() { final String code = sink.toString(); expect(code, contains('data class Foobar (')); expect(code, contains('val field1: Long? = null')); - expect(code, contains('fun fromMap(map: Map): Foobar')); - expect(code, contains('fun toMap(): Map')); + expect(code, contains('fun fromList(result: List): Foobar')); + expect(code, contains('fun toList(): MutableList>')); }); test('gen one enum', () { @@ -350,8 +350,8 @@ void main() { generateKotlin(kotlinOptions, root, sink); final String code = sink.toString(); expect(code, contains('fun doSomething(): Output')); - expect(code, contains('wrapped["result"] = api.doSomething()')); - expect(code, contains('wrapped["error"] = wrapError(exception)')); + expect(code, contains('wrapped.add(api.doSomething())')); + expect(code, contains('wrapped.add(wrapError(exception))')); expect(code, contains('reply(wrapped)')); }); @@ -461,13 +461,11 @@ void main() { expect(code, contains('data class Outer')); expect(code, contains('data class Nested')); expect(code, contains('val nested: Nested? = null')); - expect(code, contains('fun fromMap(map: Map): Outer')); + expect(code, contains('fun fromList(result: List): Outer')); expect( - code, - contains( - 'val nested: Nested? = (map["nested"] as? Map)?.let')); - expect(code, contains('Nested.fromMap(it)')); - expect(code, contains('fun toMap(): Map')); + code, contains('val nested: Nested? = (list[0] as? List)?.let')); + expect(code, contains('Nested.fromList(it)')); + expect(code, contains('fun toList(): MutableList>')); }); test('gen one async Host Api', () { @@ -754,7 +752,7 @@ void main() { generateKotlin(kotlinOptions, root, sink); final String code = sink.toString(); expect(code, contains('fun doit(): List')); - expect(code, contains('wrapped["result"] = api.doit()')); + expect(code, contains('wrapped.add(api.doit())')); expect(code, contains('reply.reply(wrapped)')); }); @@ -818,7 +816,7 @@ void main() { code, contains( 'val yArg = args[1].let { if (it is Int) it.toLong() else it as Long }')); - expect(code, contains('wrapped["result"] = api.add(xArg, yArg)')); + expect(code, contains('wrapped.add(api.add(xArg, yArg))')); expect(code, contains('reply.reply(wrapped)')); }); From 5168014349fdd65a162acb8cc7f5d3b03eb82a1f Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 10 Nov 2022 21:25:16 -0800 Subject: [PATCH 11/55] Java and Tests updated to new serials --- packages/pigeon/lib/java_generator.dart | 73 ++++++----- .../android_unit_tests/AllDatatypesTest.java | 20 +-- .../example/android_unit_tests/AsyncTest.java | 11 +- .../example/android_unit_tests/EnumTest.java | 6 +- .../example/android_unit_tests/ListTest.java | 4 +- .../android_unit_tests/MultipleArityTest.java | 4 +- .../android_unit_tests/NullFieldsTest.java | 114 +++++++++++------- .../NullableReturnsTest.java | 8 +- .../android_unit_tests/PigeonTest.java | 27 ++--- .../android_unit_tests/PrimitiveTest.java | 13 +- packages/pigeon/test/java_generator_test.dart | 19 ++- 11 files changed, 171 insertions(+), 128 deletions(-) diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index 70ebb5e4a885..b8d24feb6733 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -115,7 +115,7 @@ void _writeCodec(Indent indent, Api api, Root root) { indent.write('case (byte)${customClass.enumeration}: '); indent.writeScoped('', '', () { indent.writeln( - 'return ${customClass.name}.fromMap((Map) readValue(buffer));'); + 'return ${customClass.name}.fromList((ArrayList) readValue(buffer));'); }); } indent.write('default:'); @@ -133,7 +133,7 @@ void _writeCodec(Indent indent, Api api, Root root) { indent.scoped('{', '} else ', () { indent.writeln('stream.write(${customClass.enumeration});'); indent.writeln( - 'writeValue(stream, ((${customClass.name}) value).toMap());'); + 'writeValue(stream, ((${customClass.name}) value).toList());'); }); } indent.scoped('{', '}', () { @@ -217,7 +217,7 @@ void _writeHostApi(Indent indent, Api api, Root root) { final String returnType = method.returnType.isVoid ? 'Void' : _javaTypeForDartType(method.returnType); - indent.writeln('Map wrapped = new HashMap<>();'); + indent.writeln('ArrayList wrapped = new ArrayList<>();'); indent.write('try '); indent.scoped('{', '}', () { final List methodArgument = []; @@ -260,11 +260,14 @@ void _writeHostApi(Indent indent, Api api, Root root) { indent.format(''' Result<$returnType> $resultName = new Result<$returnType>() { \tpublic void success($returnType result) { -\t\twrapped.put("${Keys.result}", $resultValue); +\t\twrapped.add($resultValue); \t\treply.reply(wrapped); \t} \tpublic void error(Throwable error) { -\t\twrapped.put("${Keys.error}", wrapError(error)); +\t\tArrayList wrappedError = wrapError(error); +\t\twrapped.add(wrappedError.get(0)); +\t\twrapped.add(wrappedError.get(1)); +\t\twrapped.add(wrappedError.get(2)); \t\treply.reply(wrapped); \t} }; @@ -277,16 +280,19 @@ Result<$returnType> $resultName = new Result<$returnType>() { indent.writeln('$call;'); } else if (method.returnType.isVoid) { indent.writeln('$call;'); - indent.writeln('wrapped.put("${Keys.result}", null);'); + indent.writeln('wrapped.add(null);'); } else { indent.writeln('$returnType output = $call;'); - indent.writeln('wrapped.put("${Keys.result}", output);'); + indent.writeln('wrapped.add(output);'); } }); indent.write('catch (Error | RuntimeException exception) '); indent.scoped('{', '}', () { - indent - .writeln('wrapped.put("${Keys.error}", wrapError(exception));'); + indent.writeln( + 'ArrayList wrappedError = wrapError(exception);'); + indent.writeln('wrapped.add(wrappedError.get(0));'); + indent.writeln('wrapped.add(wrappedError.get(1));'); + indent.writeln('wrapped.add(wrappedError.get(2));'); if (method.isAsynchronous) { indent.writeln('reply.reply(wrapped);'); } @@ -513,7 +519,7 @@ String _castObject( return '($varName == null) ? null : (($varName instanceof Integer) ? (Integer)$varName : (${hostDatatype.datatype})$varName)'; } else if (!hostDatatype.isBuiltin && classes.map((Class x) => x.name).contains(field.type.baseName)) { - return '($varName == null) ? null : ${hostDatatype.datatype}.fromMap((Map)$varName)'; + return '($varName == null) ? null : ${hostDatatype.datatype}.fromList((ArrayList)$varName)'; } else { return '(${hostDatatype.datatype})$varName'; } @@ -615,10 +621,11 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { }); } - void writeToMap() { - indent.write('@NonNull Map toMap() '); + void writeToList() { + indent.write('@NonNull ArrayList toList() '); indent.scoped('{', '}', () { - indent.writeln('Map toMapResult = new HashMap<>();'); + indent.writeln( + 'ArrayList toListResult = new ArrayList();'); for (final NamedType field in klass.fields) { final HostDatatype hostDatatype = getFieldHostDatatype( field, @@ -629,29 +636,37 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { final String fieldName = field.name; if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { - toWriteValue = '($fieldName == null) ? null : $fieldName.toMap()'; + toWriteValue = '($fieldName == null) ? null : $fieldName.toList()'; } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { toWriteValue = '$fieldName == null ? null : $fieldName.index'; } else { toWriteValue = field.name; } - indent.writeln('toMapResult.put("${field.name}", $toWriteValue);'); + indent.writeln('toListResult.add($toWriteValue);'); } - indent.writeln('return toMapResult;'); + indent.writeln( + 'ArrayList wrapped = new ArrayList();'); + indent.writeln('wrapped.add(toListResult);'); + indent.writeln('return wrapped;'); }); } - void writeFromMap() { + void writeFromList() { indent.write( - 'static @NonNull ${klass.name} fromMap(@NonNull Map map) '); + 'static @NonNull ${klass.name} fromList(@NonNull ArrayList list) '); indent.scoped('{', '}', () { const String result = 'pigeonResult'; indent.writeln('${klass.name} $result = new ${klass.name}();'); - for (final NamedType field in klass.fields) { + indent.writeln('ArrayList unwrapped = list.get(0);'); + indent.writeln(''); + klass.fields + .toList() + .asMap() + .forEach((int index, final NamedType field) { final String fieldVariable = field.name; final String setter = _makeSetter(field); - indent.writeln('Object $fieldVariable = map.get("${field.name}");'); + indent.writeln('Object $fieldVariable = unwrapped.get($index);'); if (rootEnumNameSet.contains(field.type.baseName)) { indent.writeln( '$result.$setter(${_intToEnum(fieldVariable, field.type.baseName)});'); @@ -659,7 +674,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { indent.writeln( '$result.$setter(${_castObject(field, root.classes, root.enums, fieldVariable)});'); } - } + }); indent.writeln('return $result;'); }); } @@ -719,8 +734,8 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { } writeBuilder(); - writeToMap(); - writeFromMap(); + writeToList(); + writeFromList(); }); } @@ -742,12 +757,12 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { void writeWrapError() { indent.format(''' -@NonNull private static Map wrapError(@NonNull Throwable exception) { -\tMap errorMap = new HashMap<>(); -\terrorMap.put("${Keys.errorMessage}", exception.toString()); -\terrorMap.put("${Keys.errorCode}", exception.getClass().getSimpleName()); -\terrorMap.put("${Keys.errorDetails}", "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); -\treturn errorMap; +@NonNull private static ArrayList wrapError(@NonNull Throwable exception) { +\tArrayList errorList = new ArrayList<>(); +\terrorList.add(exception.toString()); +\terrorList.add(exception.getClass().getSimpleName()); +\terrorList.add("Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); +\treturn errorList; }'''); } diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AllDatatypesTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AllDatatypesTest.java index 6cef5dd50993..45c2371f132e 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AllDatatypesTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AllDatatypesTest.java @@ -26,8 +26,8 @@ public void nullValues() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) FlutterEverything.getCodec().decodeMessage(message); + ArrayList args = + (ArrayList) FlutterEverything.getCodec().decodeMessage(message); ByteBuffer replyData = FlutterEverything.getCodec().encodeMessage(args.get(0)); replyData.position(0); reply.reply(replyData); @@ -100,8 +100,8 @@ public void hasValues() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) FlutterEverything.getCodec().decodeMessage(message); + ArrayList args = + (ArrayList) FlutterEverything.getCodec().decodeMessage(message); ByteBuffer replyData = FlutterEverything.getCodec().encodeMessage(args.get(0)); replyData.position(0); reply.reply(replyData); @@ -139,10 +139,14 @@ public void hasValues() { public void integerToLong() { Everything everything = new Everything(); everything.setAnInt(123L); - Map map = everything.toMap(); - assertTrue(map.containsKey("anInt")); - map.put("anInt", 123); - Everything readEverything = Everything.fromMap(map); + ArrayList list = everything.toList(); + assertNotNull(list); + ArrayList unwrapped = list.get(0); + assertNotNull(unwrapped); + assertNull(unwrapped.get(0)); + assertNotNull(unwrapped.get(1)); + // list.add(1, 123); + Everything readEverything = Everything.fromList(list); assertEquals(readEverything.getAnInt(), everything.getAnInt()); } } diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AsyncTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AsyncTest.java index 4ae20621adbf..7201f53066fa 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AsyncTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/AsyncTest.java @@ -11,6 +11,7 @@ import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MessageCodec; import java.nio.ByteBuffer; +import java.util.ArrayList; import java.util.Map; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -60,8 +61,8 @@ public void asyncSuccess() { (bytes) -> { bytes.rewind(); @SuppressWarnings("unchecked") - Map wrapped = (Map) codec.decodeMessage(bytes); - assertTrue(wrapped.containsKey("result")); + ArrayList wrapped = (ArrayList) codec.decodeMessage(bytes); + assertTrue(wrapped.size() == 1); didCall[0] = true; }); assertTrue(didCall[0]); @@ -87,10 +88,10 @@ public void asyncError() { (bytes) -> { bytes.rewind(); @SuppressWarnings("unchecked") - Map wrapped = (Map) codec.decodeMessage(bytes); - assertTrue(wrapped.containsKey("error")); + ArrayList wrapped = (ArrayList) codec.decodeMessage(bytes); + assertTrue(wrapped.size() > 1); assertEquals( - "java.lang.Exception: error", ((Map) wrapped.get("error")).get("message")); + "java.lang.Exception: error", (String) wrapped.get(0)); didCall[0] = true; }); assertTrue(didCall[0]); diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/EnumTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/EnumTest.java index 84b5b5d32889..15730bfff0ce 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/EnumTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/EnumTest.java @@ -6,7 +6,7 @@ import static org.junit.Assert.*; -import java.util.Map; +import java.util.ArrayList; import org.junit.Test; public class EnumTest { @@ -14,8 +14,8 @@ public class EnumTest { public void nullValue() { Enum.DataWithEnum value = new Enum.DataWithEnum(); value.setState(null); - Map map = value.toMap(); - Enum.DataWithEnum readValue = Enum.DataWithEnum.fromMap(map); + ArrayList list = value.toList(); + Enum.DataWithEnum readValue = Enum.DataWithEnum.fromList(list); assertEquals(value.getState(), readValue.getState()); } } diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/ListTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/ListTest.java index fdf916a5350a..4f95ccbdf909 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/ListTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/ListTest.java @@ -28,8 +28,8 @@ public void listInList() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) EchoApi.getCodec().decodeMessage(message); + ArrayList args = + (ArrayList) EchoApi.getCodec().decodeMessage(message); ByteBuffer replyData = EchoApi.getCodec().encodeMessage(args.get(0)); replyData.position(0); reply.reply(replyData); diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/MultipleArityTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/MultipleArityTest.java index e336d11042c4..e11ea3a5bf90 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/MultipleArityTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/MultipleArityTest.java @@ -22,8 +22,8 @@ public void subtract() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) + ArrayList args = + (ArrayList) AllDatatypes.FlutterEverything.getCodec().decodeMessage(message); Long arg0 = (Long) args.get(0); Long arg1 = (Long) args.get(1); diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullFieldsTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullFieldsTest.java index c1df044ca533..39dd36892647 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullFieldsTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullFieldsTest.java @@ -7,6 +7,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -63,38 +64,48 @@ public void builderReplyWithNulls() { @Test public void requestFromMapWithValues() { - HashMap map = new HashMap<>(); - map.put("query", "hello"); - map.put("identifier", 1L); - - NullFields.NullFieldsSearchRequest request = NullFields.NullFieldsSearchRequest.fromMap(map); + ArrayList list = new ArrayList(); + list.add("hello"); + list.add(1L); + ArrayList wrapped = new ArrayList(); + wrapped.add(list); + NullFields.NullFieldsSearchRequest request = NullFields.NullFieldsSearchRequest.fromList(wrapped); assertEquals(request.getQuery(), "hello"); } @Test public void requestFromMapWithNulls() { - HashMap map = new HashMap<>(); - map.put("query", null); - map.put("identifier", 1L); + ArrayList list = new ArrayList(); + list.add(null); + list.add(1L); - NullFields.NullFieldsSearchRequest request = NullFields.NullFieldsSearchRequest.fromMap(map); + ArrayList wrapped = new ArrayList(); + wrapped.add(list); + NullFields.NullFieldsSearchRequest request = NullFields.NullFieldsSearchRequest.fromList(wrapped); assertNull(request.getQuery()); } @Test public void replyFromMapWithValues() { - HashMap requestMap = new HashMap<>(); - requestMap.put("query", "hello"); - requestMap.put("identifier", 1L); - - HashMap map = new HashMap<>(); - map.put("result", "result"); - map.put("error", "error"); - map.put("indices", Arrays.asList(1L, 2L, 3L)); - map.put("request", requestMap); - map.put("type", NullFields.NullFieldsSearchReplyType.SUCCESS.ordinal()); - - NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromMap(map); + ArrayList requestList = new ArrayList(); + + requestList.add("hello"); + requestList.add(1L); + + ArrayList wrappedRequestList = new ArrayList(); + wrappedRequestList.add(requestList); + + ArrayList list = new ArrayList(); + + list.add("result"); + list.add("error"); + list.add(Arrays.asList(1L, 2L, 3L)); + list.add(wrappedRequestList); + list.add(NullFields.NullFieldsSearchReplyType.SUCCESS.ordinal()); + ArrayList wrapped = new ArrayList(); + wrapped.add(list); + + NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromList(wrapped); assertEquals(reply.getResult(), "result"); assertEquals(reply.getError(), "error"); assertEquals(reply.getIndices(), Arrays.asList(1L, 2L, 3L)); @@ -104,14 +115,18 @@ public void replyFromMapWithValues() { @Test public void replyFromMapWithNulls() { - HashMap map = new HashMap<>(); - map.put("result", null); - map.put("error", null); - map.put("indices", null); - map.put("request", null); - map.put("type", null); - - NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromMap(map); + ArrayList list = new ArrayList(); + + list.add(null); + list.add(null); + list.add(null); + list.add(null); + list.add(null); + + ArrayList wrapped = new ArrayList(); + wrapped.add(list); + + NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromList(wrapped); assertNull(reply.getResult()); assertNull(reply.getError()); assertNull(reply.getIndices()); @@ -127,8 +142,10 @@ public void requestToMapWithValues() { .setIdentifier(1L) .build(); - Map map = request.toMap(); - assertEquals(map.get("query"), "hello"); + ArrayList list = request.toList(); + @SuppressWarnings("unchecked") + ArrayList unwrapped = list.get(0); + assertEquals(unwrapped.get(0), "hello"); } @Test @@ -136,8 +153,10 @@ public void requestToMapWithNulls() { NullFields.NullFieldsSearchRequest request = new NullFields.NullFieldsSearchRequest.Builder().setQuery(null).setIdentifier(1L).build(); - Map map = request.toMap(); - assertNull(map.get("query")); + ArrayList list = request.toList(); + @SuppressWarnings("unchecked") + ArrayList unwrapped = list.get(0); + assertNull(unwrapped.get(0)); } @Test @@ -155,12 +174,14 @@ public void replyToMapWithValues() { .setType(NullFields.NullFieldsSearchReplyType.SUCCESS) .build(); - Map map = reply.toMap(); - assertEquals(map.get("result"), "result"); - assertEquals(map.get("error"), "error"); - assertEquals(map.get("indices"), Arrays.asList(1L, 2L, 3L)); - assertEquals(map.get("request"), reply.getRequest().toMap()); - assertEquals(map.get("type"), NullFields.NullFieldsSearchReplyType.SUCCESS.ordinal()); + ArrayList wrapped = reply.toList(); + @SuppressWarnings("unchecked") + ArrayList unwrapped = wrapped.get(0); + assertEquals(unwrapped.get(0), "result"); + assertEquals(unwrapped.get(1), "error"); + assertEquals(unwrapped.get(2), Arrays.asList(1L, 2L, 3L)); + assertEquals(unwrapped.get(3), reply.getRequest().toList()); + assertEquals(unwrapped.get(4), NullFields.NullFieldsSearchReplyType.SUCCESS.ordinal()); } @Test @@ -174,11 +195,14 @@ public void replyToMapWithNulls() { .setType(null) .build(); - Map map = reply.toMap(); - assertNull(map.get("result")); - assertNull(map.get("error")); - assertNull(map.get("indices")); - assertNull(map.get("request")); - assertNull(map.get("type")); + ArrayList wrapped = reply.toList(); + @SuppressWarnings("unchecked") + ArrayList unwrapped = wrapped.get(0); + + assertNull(unwrapped.get(0)); + assertNull(unwrapped.get(1)); + assertNull(unwrapped.get(2)); + assertNull(unwrapped.get(3)); + assertNull(unwrapped.get(4)); } } diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullableReturnsTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullableReturnsTest.java index 1f791713098d..a4d27e9ef7de 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullableReturnsTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/NullableReturnsTest.java @@ -40,8 +40,8 @@ public void nullArgHostApi() { (bytes) -> { bytes.rewind(); @SuppressWarnings("unchecked") - Map wrapped = (Map) codec.decodeMessage(bytes); - assertTrue(wrapped.containsKey("result")); + ArrayList wrapped = (ArrayList) codec.decodeMessage(bytes); + assertTrue(wrapped.size() == 1); }); } @@ -53,8 +53,8 @@ public void nullArgFlutterApi() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) + ArrayList args = + (ArrayList) NullableReturns.NullableArgFlutterApi.getCodec().decodeMessage(message); assertNull(args.get(0)); ByteBuffer replyData = diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PigeonTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PigeonTest.java index cf7f90a2562f..bef9cda6e160 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PigeonTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PigeonTest.java @@ -18,25 +18,25 @@ public class PigeonTest { @Test - public void toMapAndBack() { + public void toListAndBack() { Pigeon.AndroidSetRequest request = new Pigeon.AndroidSetRequest(); request.setValue(1234l); request.setState(Pigeon.AndroidLoadingState.COMPLETE); - Map map = request.toMap(); - Pigeon.AndroidSetRequest readRequest = Pigeon.AndroidSetRequest.fromMap(map); + ArrayList list = request.toList(); + Pigeon.AndroidSetRequest readRequest = Pigeon.AndroidSetRequest.fromList(list); assertEquals(request.getValue(), readRequest.getValue()); assertEquals(request.getState(), readRequest.getState()); } @Test - public void toMapAndBackNested() { + public void toListAndBackNested() { Pigeon.AndroidNestedRequest nested = new Pigeon.AndroidNestedRequest(); Pigeon.AndroidSetRequest request = new Pigeon.AndroidSetRequest(); request.setValue(1234l); request.setState(Pigeon.AndroidLoadingState.COMPLETE); nested.setRequest(request); - Map map = nested.toMap(); - Pigeon.AndroidNestedRequest readNested = Pigeon.AndroidNestedRequest.fromMap(map); + ArrayList list = nested.toList(); + Pigeon.AndroidNestedRequest readNested = Pigeon.AndroidNestedRequest.fromList(list); assertEquals(nested.getRequest().getValue(), readNested.getRequest().getValue()); assertEquals(nested.getRequest().getState(), readNested.getRequest().getState()); } @@ -70,11 +70,10 @@ public void errorMessage() { (bytes) -> { bytes.rewind(); @SuppressWarnings("unchecked") - Map wrapped = (Map) codec.decodeMessage(bytes); - assertTrue(wrapped.containsKey("error")); - Map error = (Map) wrapped.get("error"); - assertTrue(error.containsKey("details")); - String details = (String) error.get("details"); + ArrayList error = (ArrayList) codec.decodeMessage(bytes); + assertNotNull(error.get(0)); + assertNotNull(error.get(1)); + String details = (String) error.get(2); assertTrue(details.contains("Cause:")); assertTrue(details.contains("Stacktrace:")); }); @@ -101,9 +100,9 @@ public void callsVoidMethod() { (bytes) -> { bytes.rewind(); @SuppressWarnings("unchecked") - Map wrapped = (Map) codec.decodeMessage(bytes); - assertTrue(wrapped.containsKey("result")); - assertNull(wrapped.get("result")); + ArrayList wrapped = (ArrayList) codec.decodeMessage(bytes); + assertTrue(wrapped.size() == 1); + assertNull(wrapped.get(0)); }); ArgumentCaptor receivedRequest = ArgumentCaptor.forClass(Pigeon.AndroidSetRequest.class); diff --git a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PrimitiveTest.java b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PrimitiveTest.java index d1f3fb130ac4..4c9c2a5d316c 100644 --- a/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PrimitiveTest.java +++ b/packages/pigeon/platform_tests/android_unit_tests/android/app/src/test/java/com/example/android_unit_tests/PrimitiveTest.java @@ -28,8 +28,8 @@ private static BinaryMessenger makeMockBinaryMessenger() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) PrimitiveFlutterApi.getCodec().decodeMessage(message); + ArrayList args = + (ArrayList) PrimitiveFlutterApi.getCodec().decodeMessage(message); Object arg = args.get(0); if (arg instanceof Long) { Long longArg = (Long) arg; @@ -88,7 +88,8 @@ public void primitiveIntHostApi() { verify(binaryMessenger) .setMessageHandler(eq("dev.flutter.pigeon.PrimitiveHostApi.anInt"), handler.capture()); MessageCodec codec = PrimitiveHostApi.getCodec(); - ByteBuffer message = codec.encodeMessage(new ArrayList(Arrays.asList((Integer) 1))); + @SuppressWarnings("unchecked") + ByteBuffer message = codec.encodeMessage(new ArrayList(Arrays.asList((Integer) 1))); message.rewind(); handler .getValue() @@ -97,9 +98,9 @@ public void primitiveIntHostApi() { (bytes) -> { bytes.rewind(); @SuppressWarnings("unchecked") - Map wrapped = (Map) codec.decodeMessage(bytes); - assertTrue(wrapped.containsKey("result")); - assertEquals(1L, ((Long) wrapped.get("result")).longValue()); + ArrayList wrapped = (ArrayList) codec.decodeMessage(bytes); + assertTrue(wrapped.size() > 0); + assertEquals(1L, ((Long) wrapped.get(0)).longValue()); }); } diff --git a/packages/pigeon/test/java_generator_test.dart b/packages/pigeon/test/java_generator_test.dart index d3822c5ad65f..da6fd6b6c0a8 100644 --- a/packages/pigeon/test/java_generator_test.dart +++ b/packages/pigeon/test/java_generator_test.dart @@ -36,7 +36,7 @@ void main() { expect( code, contains( - '@NonNull private static Map wrapError(@NonNull Throwable exception)')); + '@NonNull private static ArrayList wrapError(@NonNull Throwable exception)')); }); test('gen one enum', () { @@ -89,7 +89,7 @@ void main() { generateJava(javaOptions, root, sink); final String code = sink.toString(); expect(code, contains('package com.google.foobar;')); - expect(code, contains('Map toMap()')); + expect(code, contains('ArrayList toList()')); }); test('gen one host api', () { @@ -453,10 +453,11 @@ void main() { expect(code, contains('public static class Outer')); expect(code, contains('public static class Nested')); expect(code, contains('private @Nullable Nested nested;')); - expect(code, - contains('(nested == null) ? null : Nested.fromMap((Map)nested)')); - expect(code, - contains('put("nested", (nested == null) ? null : nested.toMap());')); + expect( + code, + contains( + '(nested == null) ? null : Nested.fromList((ArrayList)nested)')); + expect(code, contains('add((nested == null) ? null : nested.toList());')); }); test('gen one async Host Api', () { @@ -591,10 +592,8 @@ void main() { expect(code, contains('private Enum1(final int index) {')); expect(code, contains(' this.index = index;')); - expect( - code, - contains( - 'toMapResult.put("enum1", enum1 == null ? null : enum1.index);')); + expect(code, + contains('toListResult.add(enum1 == null ? null : enum1.index);')); expect( code, contains( From b5340e907be2fedb2818e6dcd5e2427113d0d0fe Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 15 Nov 2022 21:53:45 -0800 Subject: [PATCH 12/55] Stuart check this pr (start of objc changes) --- packages/pigeon/lib/objc_generator.dart | 83 ++++++++++--------- .../ios/RunnerTests/AllDatatypesTest.m | 28 ++++--- 2 files changed, 60 insertions(+), 51 deletions(-) diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index bc6077add9f3..70cd71ad54a5 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -281,7 +281,7 @@ void _writeCodec( indent.write('case ${customClass.enumeration}: '); indent.writeScoped('', '', () { indent.writeln( - 'return [${_className(options.prefix, customClass.name)} fromMap:[self readValue]];'); + 'return [${_className(options.prefix, customClass.name)} fromList:[self readValue]];'); }); } indent.write('default:'); @@ -302,7 +302,7 @@ void _writeCodec( 'if ([value isKindOfClass:[${_className(options.prefix, customClass.name)} class]]) '); indent.scoped('{', '} else ', () { indent.writeln('[self writeByte:${customClass.enumeration}];'); - indent.writeln('[self writeValue:[value toMap]];'); + indent.writeln('[self writeValue:[value toList]];'); }); } indent.scoped('{', '}', () { @@ -608,23 +608,23 @@ void generateObjcHeader(ObjcOptions options, Root root, StringSink sink) { indent.writeln('NS_ASSUME_NONNULL_END'); } -String _dictGetter( - List classNames, String dict, NamedType field, String? prefix) { +String _listGetter(List classNames, String list, NamedType field, + int index, String? prefix) { if (classNames.contains(field.type.baseName)) { String className = field.type.baseName; if (prefix != null) { className = '$prefix$className'; } - return '[$className nullableFromMap:GetNullableObject($dict, @"${field.name}")]'; + return '[$className fromList:[$list objectAtIndex:$index ]]'; } else { - return 'GetNullableObject($dict, @"${field.name}")'; + return '$list[$index]'; } } String _dictValue( List classNames, List enumNames, NamedType field) { if (classNames.contains(field.type.baseName)) { - return '(self.${field.name} ? [self.${field.name} toMap] : [NSNull null])'; + return '(self.${field.name} ? [self.${field.name} toList] : [NSNull null])'; } else if (enumNames.contains(field.type.baseName)) { return '@(self.${field.name})'; } else { @@ -849,7 +849,7 @@ void _writeFlutterApiSource( indent.writeln('messageChannelWithName:@"${makeChannelName(api, func)}"'); indent.writeln('binaryMessenger:self.binaryMessenger'); indent.write('codec:${_getCodecGetterName(options.prefix, api.name)}()'); - indent.write('];'); + indent.addln('];'); indent.dec(); indent.dec(); indent.write('[channel sendMessage:$sendArgument reply:^(id reply) '); @@ -902,19 +902,19 @@ void generateObjcSource(ObjcOptions options, Root root, StringSink sink) { void writeHelperFunctions() { indent.format(''' -static NSDictionary *wrapResult(id result, FlutterError *error) { -\tNSDictionary *errorDict = (NSDictionary *)[NSNull null]; +static NSMutableArray *wrapResult(id result, FlutterError *error) { +\tNSMutableArray *resultList = [[NSMutableArray alloc] init]; \tif (error) { -\t\terrorDict = @{ -\t\t\t\t@"${Keys.errorCode}": (error.code ?: [NSNull null]), -\t\t\t\t@"${Keys.errorMessage}": (error.message ?: [NSNull null]), -\t\t\t\t@"${Keys.errorDetails}": (error.details ?: [NSNull null]), -\t\t\t\t}; + +\t\t[resultList addObject:(error.code ?: [NSNull null])]; +\t\t[resultList addObject:(error.message ?: [NSNull null])]; +\t\t[resultList addObject:(error.details ?: [NSNull null])]; + +\t} else { +\t\t[resultList addObject:(result ?: [NSNull null])]; \t} -\treturn @{ -\t\t\t@"${Keys.result}": (result ?: [NSNull null]), -\t\t\t@"${Keys.error}": errorDict, -\t\t\t}; + +\treturn resultList; }'''); indent.format(''' static id GetNullableObject(NSDictionary* dict, id key) { @@ -931,10 +931,10 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { void writeDataClassExtension(Class klass) { final String className = _className(options.prefix, klass.name); indent.writeln('@interface $className ()'); - indent.writeln('+ ($className *)fromMap:(NSDictionary *)dict;'); + indent.writeln('+ ($className *)fromList:(NSMutableArray *)list;'); indent.writeln( - '+ (nullable $className *)nullableFromMap:(NSDictionary *)dict;'); - indent.writeln('- (NSDictionary *)toMap;'); + '+ (nullable $className *)nullableFromList:(NSMutableArray *)list;'); + indent.writeln('- (NSMutableArray *)toList;'); indent.writeln('@end'); } @@ -953,47 +953,52 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { }); } - void writeFromMap() { - indent.write('+ ($className *)fromMap:(NSDictionary *)dict '); + void writeFromList() { + indent.write('+ ($className *)fromList:(NSMutableArray *)list '); indent.scoped('{', '}', () { const String resultName = 'pigeonResult'; indent.writeln('$className *$resultName = [[$className alloc] init];'); - for (final NamedType field in klass.fields) { + klass.fields + .toList() + .asMap() + .forEach((int index, final NamedType field) { if (enumNames.contains(field.type.baseName)) { indent.writeln( - '$resultName.${field.name} = [${_dictGetter(classNames, 'dict', field, options.prefix)} integerValue];'); + '$resultName.${field.name} = [${_listGetter(classNames, 'list', field, index, options.prefix)} integerValue];'); } else { indent.writeln( - '$resultName.${field.name} = ${_dictGetter(classNames, 'dict', field, options.prefix)};'); + '$resultName.${field.name} = ${_listGetter(classNames, 'list', field, index, options.prefix)};'); if (!field.type.isNullable) { indent .writeln('NSAssert($resultName.${field.name} != nil, @"");'); } } - } + }); indent.writeln('return $resultName;'); }); indent.writeln( - '+ (nullable $className *)nullableFromMap:(NSDictionary *)dict { return (dict) ? [$className fromMap:dict] : nil; }'); + '+ (nullable $className *)nullableFromList:(NSMutableArray *)list { return (list) ? [$className fromList:list] : nil; }'); } - void writeToMap() { - indent.write('- (NSDictionary *)toMap '); + void writeToList() { + indent.write('- (NSMutableArray *)toList '); indent.scoped('{', '}', () { - indent.write('return'); - indent.scoped(' @{', '};', () { - for (final NamedType field in klass.fields) { - indent.writeln( - '@"${field.name}" : ${_dictValue(classNames, enumNames, field)},'); - } + indent.writeln('NSMutableArray *list = [[NSMutableArray alloc] init];'); + klass.fields + .toList() + .asMap() + .forEach((int index, final NamedType field) { + indent.writeln( + '[list addObject:${_dictValue(classNames, enumNames, field)}];'); }); + indent.writeln('return list;'); }); } indent.writeln('@implementation $className'); writeInitializer(); - writeFromMap(); - writeToMap(); + writeFromList(); + writeToList(); indent.writeln('@end'); } diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m index be861b970291..42da80f2d649 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m @@ -21,17 +21,17 @@ - (void)testAllNull { FlutterEverything *api = [[FlutterEverything alloc] initWithBinaryMessenger:binaryMessenger]; XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [api echoEverything:everything - completion:^(Everything *_Nonnull result, NSError *_Nullable error) { - XCTAssertNil(result.aBool); - XCTAssertNil(result.anInt); - XCTAssertNil(result.aDouble); - XCTAssertNil(result.aString); - XCTAssertNil(result.aByteArray); - XCTAssertNil(result.a4ByteArray); - XCTAssertNil(result.a8ByteArray); - XCTAssertNil(result.aFloatArray); - XCTAssertNil(result.aList); - XCTAssertNil(result.aMap); + completion:^(NSMutableArray *result) { + XCTAssertNil(result[0]); + XCTAssertNil(result[1]); + XCTAssertNil(result[2]); + XCTAssertNil(result[3]); + XCTAssertNil(result[4]); + XCTAssertNil(result[5]); + XCTAssertNil(result[6]); + XCTAssertNil(result[7]); + XCTAssertNil(result[8]); + XCTAssertNil(result[9]); [expectation fulfill]; }]; [self waitForExpectations:@[ expectation ] timeout:1.0]; @@ -39,6 +39,8 @@ - (void)testAllNull { - (void)testAllEquals { Everything *everything = [[Everything alloc] init]; + NSMutableArray *list = [[NSMutableArray alloc] init]; + Everything *newEverything = [[Everything fromList: list] init]; everything.aBool = @NO; everything.anInt = @(1); everything.aDouble = @(2.0); @@ -59,7 +61,9 @@ - (void)testAllEquals { FlutterEverything *api = [[FlutterEverything alloc] initWithBinaryMessenger:binaryMessenger]; XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [api echoEverything:everything - completion:^(Everything *_Nonnull result, NSError *_Nullable error) { + completion:^(NSMutableArray *result) { + NSMutableArray *trueResult = result[0]; + Everything *newEverything = [[Everything fromList: trueResult] init]; XCTAssertEqual(result.aBool, everything.aBool); XCTAssertEqual(result.anInt, everything.anInt); XCTAssertEqual(result.aDouble, everything.aDouble); From 38232cd7df024fa3fcfbbe67de30c6865d8a62b5 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 17 Nov 2022 00:20:09 -0800 Subject: [PATCH 13/55] obj c tests for serial --- .../ios/RunnerTests/AllDatatypesTest.m | 30 +++++++++---------- .../ios/RunnerTests/AsyncHandlersTest.m | 28 +++++++++-------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m index 42da80f2d649..e9c5ea45c9a0 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m @@ -21,17 +21,19 @@ - (void)testAllNull { FlutterEverything *api = [[FlutterEverything alloc] initWithBinaryMessenger:binaryMessenger]; XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [api echoEverything:everything - completion:^(NSMutableArray *result) { - XCTAssertNil(result[0]); - XCTAssertNil(result[1]); - XCTAssertNil(result[2]); - XCTAssertNil(result[3]); - XCTAssertNil(result[4]); - XCTAssertNil(result[5]); - XCTAssertNil(result[6]); - XCTAssertNil(result[7]); - XCTAssertNil(result[8]); - XCTAssertNil(result[9]); + completion:^(Everything *_Nonnull result, NSError *_Nullable error) { + XCTAssertNil(error); + XCTAssertNotNil(result); + XCTAssert([result.aBool isEqual:[NSNull null]]); + XCTAssert([result.anInt isEqual:[NSNull null]]); + XCTAssert([result.aDouble isEqual:[NSNull null]]); + XCTAssert([result.aString isEqual:[NSNull null]]); + XCTAssert([result.aByteArray isEqual:[NSNull null]]); + XCTAssert([result.a4ByteArray isEqual:[NSNull null]]); + XCTAssert([result.a8ByteArray isEqual:[NSNull null]]); + XCTAssert([result.aFloatArray isEqual:[NSNull null]]); + XCTAssert([result.aList isEqual:[NSNull null]]); + XCTAssert([result.aMap isEqual:[NSNull null]]); [expectation fulfill]; }]; [self waitForExpectations:@[ expectation ] timeout:1.0]; @@ -39,8 +41,6 @@ - (void)testAllNull { - (void)testAllEquals { Everything *everything = [[Everything alloc] init]; - NSMutableArray *list = [[NSMutableArray alloc] init]; - Everything *newEverything = [[Everything fromList: list] init]; everything.aBool = @NO; everything.anInt = @(1); everything.aDouble = @(2.0); @@ -61,9 +61,7 @@ - (void)testAllEquals { FlutterEverything *api = [[FlutterEverything alloc] initWithBinaryMessenger:binaryMessenger]; XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [api echoEverything:everything - completion:^(NSMutableArray *result) { - NSMutableArray *trueResult = result[0]; - Everything *newEverything = [[Everything fromList: trueResult] init]; + completion:^(Everything *_Nonnull result, NSError *_Nullable error) { XCTAssertEqual(result.aBool, everything.aBool); XCTAssertEqual(result.anInt, everything.anInt); XCTAssertEqual(result.aDouble, everything.aDouble); diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AsyncHandlersTest.m b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AsyncHandlersTest.m index 90d3fdd64621..27f08b75a27d 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AsyncHandlersTest.m +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AsyncHandlersTest.m @@ -9,8 +9,8 @@ /////////////////////////////////////////////////////////////////////////////////////////// @interface Value () -+ (Value *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; ++ (Value *)fromList:(NSArray *)list; +- (NSArray *)toList; @end /////////////////////////////////////////////////////////////////////////////////////////// @@ -73,9 +73,9 @@ - (void)testAsyncFlutter2HostVoidVoid { XCTestExpectation *expectation = [self expectationWithDescription:@"voidvoid callback"]; binaryMessenger.handlers[channelName](nil, ^(NSData *data) { - NSDictionary *outputMap = [binaryMessenger.codec decode:data]; - XCTAssertEqualObjects(outputMap[@"result"], [NSNull null]); - XCTAssertEqualObjects(outputMap[@"error"], [NSNull null]); + NSArray *outputList = [binaryMessenger.codec decode:data]; + XCTAssertEqualObjects(outputList[0], [NSNull null]); +// XCTAssertEqualObjects(outputMap[@"error"], [NSNull null]); [expectation fulfill]; }); [self waitForExpectationsWithTimeout:1.0 handler:nil]; @@ -92,9 +92,9 @@ - (void)testAsyncFlutter2HostVoidVoidError { XCTestExpectation *expectation = [self expectationWithDescription:@"voidvoid callback"]; binaryMessenger.handlers[channelName](nil, ^(NSData *data) { - NSDictionary *outputMap = [binaryMessenger.codec decode:data]; - XCTAssertNotNil(outputMap[@"error"]); - XCTAssertEqualObjects(outputMap[@"error"][@"code"], mockApi2Host.voidVoidError.code); + NSArray *outputList = [binaryMessenger.codec decode:data]; + XCTAssertNotNil(outputList); + XCTAssertEqualObjects(outputList[0], mockApi2Host.voidVoidError.code); [expectation fulfill]; }); [self waitForExpectationsWithTimeout:1.0 handler:nil]; @@ -114,8 +114,8 @@ - (void)testAsyncFlutter2Host { NSData *inputEncoded = [binaryMessenger.codec encode:@[ input ]]; XCTestExpectation *expectation = [self expectationWithDescription:@"calculate callback"]; binaryMessenger.handlers[channelName](inputEncoded, ^(NSData *data) { - NSDictionary *outputMap = [binaryMessenger.codec decode:data]; - Value *output = outputMap[@"result"]; + NSArray *outputList = [binaryMessenger.codec decode:data]; + Value *output = outputList[0]; XCTAssertEqual(output.number.intValue, 2); [expectation fulfill]; }); @@ -132,11 +132,13 @@ - (void)testAsyncFlutter2HostError { Value *input = [[Value alloc] init]; input.number = @(1); - NSData *inputEncoded = [binaryMessenger.codec encode:@[ [input toMap] ]]; + NSData *inputEncoded = [binaryMessenger.codec encode:@[ [input toList] ]]; XCTestExpectation *expectation = [self expectationWithDescription:@"calculate callback"]; binaryMessenger.handlers[channelName](inputEncoded, ^(NSData *data) { - NSDictionary *outputMap = [binaryMessenger.codec decode:data]; - XCTAssertNotNil(outputMap[@"error"]); + NSArray *outputList = [binaryMessenger.codec decode:data]; + XCTAssertNotNil(outputList); + XCTAssertEqualObjects(outputList[0], @"hey"); + XCTAssertEqualObjects(outputList[1], @"ho"); [expectation fulfill]; }); [self waitForExpectationsWithTimeout:1.0 handler:nil]; From 980a72a5cab4729e020e956d4ef4d7468f0d5b96 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 17 Nov 2022 10:56:21 -0800 Subject: [PATCH 14/55] update unit tests to match new generated outputs --- packages/pigeon/test/kotlin_generator_test.dart | 6 +++--- packages/pigeon/test/objc_generator_test.dart | 17 ++++++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/pigeon/test/kotlin_generator_test.dart b/packages/pigeon/test/kotlin_generator_test.dart index 4314b3b895bc..688c1bd9d3cf 100644 --- a/packages/pigeon/test/kotlin_generator_test.dart +++ b/packages/pigeon/test/kotlin_generator_test.dart @@ -129,13 +129,13 @@ void main() { expect(code, contains(''' if (api != null) { channel.setMessageHandler { message, reply -> - val wrapped = hashMapOf() + val wrapped = mutableListOf() try { val args = message as List val inputArg = args[0] as Input - wrapped["result"] = api.doSomething(inputArg) + wrapped.add(api.doSomething(inputArg)) } catch (exception: Error) { - wrapped["error"] = wrapError(exception) + wrapped.add(wrapError(exception)) } reply.reply(wrapped) } diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index efd177cbd961..073edbedc882 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -107,10 +107,7 @@ void main() { final String code = sink.toString(); expect(code, contains('#import "foo.h"')); expect(code, contains('@implementation Foobar')); - expect( - code, - contains( - 'pigeonResult.enum1 = [GetNullableObject(dict, @"enum1") integerValue];')); + expect(code, contains('pigeonResult.enum1 = [list[1] integerValue];')); }); test('primitive enum host', () { @@ -347,8 +344,7 @@ void main() { generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('@implementation Foobar')); - expect(code, - contains('pigeonResult.aBool = GetNullableObject(dict, @"aBool");')); + expect(code, contains('pigeonResult.aBool = list[0];')); }); test('nested class header', () { @@ -390,8 +386,11 @@ void main() { expect( code, contains( - 'pigeonResult.nested = [Input nullableFromMap:GetNullableObject(dict, @"nested")];')); - expect(code, matches('[self.nested toMap].*@"nested"')); + 'pigeonResult.nested = [Input fromList:[list objectAtIndex:0 ]];')); + expect( + code, + contains( + '[list addObject:(self.nested ? [self.nested toList] : [NSNull null])]')); }); test('prefix class header', () { @@ -489,7 +488,7 @@ void main() { final StringBuffer sink = StringBuffer(); generateObjcSource(const ObjcOptions(prefix: 'ABC'), root, sink); final String code = sink.toString(); - expect(code, contains('ABCInput fromMap')); + expect(code, contains('ABCInput fromList')); expect(code, matches(r'ABCInput.*=.*args.*0.*\;')); expect(code, contains('void ABCApiSetup(')); }); From 899732dbc8d373015f84ac85c8c7b1b754cf6e4f Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 17 Nov 2022 20:54:58 -0800 Subject: [PATCH 15/55] finish objc tests --- packages/pigeon/lib/objc_generator.dart | 12 +- .../ios/RunnerTests/NullFieldsTest.m | 122 +++++++++--------- .../ios/RunnerTests/RunnerTests.m | 18 +-- packages/pigeon/test/objc_generator_test.dart | 7 +- 4 files changed, 85 insertions(+), 74 deletions(-) diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 70cd71ad54a5..1e4bea429bce 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -615,7 +615,7 @@ String _listGetter(List classNames, String list, NamedType field, if (prefix != null) { className = '$prefix$className'; } - return '[$className fromList:[$list objectAtIndex:$index ]]'; + return '[$className fromList:($list[$index] == [NSNull null] ? nil : $list[$index])]'; } else { return '$list[$index]'; } @@ -958,13 +958,21 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { indent.scoped('{', '}', () { const String resultName = 'pigeonResult'; indent.writeln('$className *$resultName = [[$className alloc] init];'); + final int len = klass.fields.length; + indent.scoped('if (list == nil) {', '}', () { + indent.writeln('list = [[NSMutableArray alloc] init];'); + indent.write('for (int i = 0; i < $len; i++) '); + indent.scoped('{', '}', () { + indent.writeln('[list addObject: [NSNull null]];'); + }); + }); klass.fields .toList() .asMap() .forEach((int index, final NamedType field) { if (enumNames.contains(field.type.baseName)) { indent.writeln( - '$resultName.${field.name} = [${_listGetter(classNames, 'list', field, index, options.prefix)} integerValue];'); + '$resultName.${field.name} = [(${_listGetter(classNames, 'list', field, index, options.prefix)} == [NSNull null] ? 0 : ${_listGetter(classNames, 'list', field, index, options.prefix)}) integerValue];'); } else { indent.writeln( '$resultName.${field.name} = ${_listGetter(classNames, 'list', field, index, options.prefix)};'); diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/NullFieldsTest.m b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/NullFieldsTest.m index a7e1ac6afa7a..46ec70c40673 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/NullFieldsTest.m +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/NullFieldsTest.m @@ -9,14 +9,14 @@ /////////////////////////////////////////////////////////////////////////////////////////// @interface NullFieldsSearchRequest () -+ (NullFieldsSearchRequest *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; ++ (NullFieldsSearchRequest *)fromList:(NSArray *)list; +- (NSArray *)toList; @end /////////////////////////////////////////////////////////////////////////////////////////// @interface NullFieldsSearchReply () -+ (NullFieldsSearchReply *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; ++ (NullFieldsSearchReply *)fromList:(NSArray *)list; +- (NSArray *)toList; @end /////////////////////////////////////////////////////////////////////////////////////////// @@ -63,38 +63,38 @@ - (void)testMakeReplyWithNulls { XCTAssertEqual(NullFieldsSearchReplyTypeSuccess, reply.type); } -- (void)testRequestFromMapWithValues { - NSDictionary *map = @{ - @"query" : @"hello", - @"identifier" : @1, - }; - NullFieldsSearchRequest *request = [NullFieldsSearchRequest fromMap:map]; +- (void)testRequestFromListWithValues { + NSArray *list = @[ + @"hello", + @1, + ]; + NullFieldsSearchRequest *request = [NullFieldsSearchRequest fromList:list]; XCTAssertEqualObjects(@"hello", request.query); } -- (void)testRequestFromMapWithNulls { - NSDictionary *map = @{ - @"query" : [NSNull null], - @"identifier" : @1, - }; - NullFieldsSearchRequest *request = [NullFieldsSearchRequest fromMap:map]; - XCTAssertNil(request.query); +- (void)testRequestFromListWithNulls { + NSArray *list = @[ + [NSNull null], + @1, + ]; + NullFieldsSearchRequest *request = [NullFieldsSearchRequest fromList:list]; + XCTAssertEqualObjects(request.query, [NSNull null]); } -- (void)testReplyFromMapWithValues { - NSDictionary *map = @{ - @"result" : @"result", - @"error" : @"error", - @"indices" : @[ @1, @2, @3 ], - @"request" : @{ - @"query" : @"hello", - @"identifier" : @1, - }, - @"type" : @0, - }; +- (void)testReplyFromListWithValues { + NSArray *list = @[ + @"result", + @"error", + @[ @1, @2, @3 ], + @[ + @"hello", + @1, + ], + @0, + ]; NSArray *indices = @[ @1, @2, @3 ]; - NullFieldsSearchReply *reply = [NullFieldsSearchReply fromMap:map]; + NullFieldsSearchReply *reply = [NullFieldsSearchReply fromList:list]; XCTAssertEqualObjects(@"result", reply.result); XCTAssertEqualObjects(@"error", reply.error); XCTAssertEqualObjects(indices, reply.indices); @@ -102,62 +102,62 @@ - (void)testReplyFromMapWithValues { XCTAssertEqual(NullFieldsSearchReplyTypeSuccess, reply.type); } -- (void)testReplyFromMapWithNulls { - NSDictionary *map = @{ - @"result" : [NSNull null], - @"error" : [NSNull null], - @"indices" : [NSNull null], - @"request" : [NSNull null], - @"type" : [NSNull null], - }; - NullFieldsSearchReply *reply = [NullFieldsSearchReply fromMap:map]; - XCTAssertNil(reply.result); - XCTAssertNil(reply.error); - XCTAssertNil(reply.indices); - XCTAssertNil(reply.request.query); +- (void)testReplyFromListWithNulls { + NSArray *list = @[ + [NSNull null], + [NSNull null], + [NSNull null], + [NSNull null], + [NSNull null], + ]; + NullFieldsSearchReply *reply = [NullFieldsSearchReply fromList:list]; + XCTAssertEqualObjects(reply.result, [NSNull null]); + XCTAssertEqualObjects(reply.error, [NSNull null]); + XCTAssertEqualObjects(reply.indices, [NSNull null]); + XCTAssertEqualObjects(reply.request.query, [NSNull null]); XCTAssertEqual(NullFieldsSearchReplyTypeSuccess, reply.type); } -- (void)testRequestToMapWithValuess { +- (void)testRequestToListWithValuess { NullFieldsSearchRequest *request = [NullFieldsSearchRequest makeWithQuery:@"hello" identifier:@1]; - NSDictionary *dict = [request toMap]; - XCTAssertEqual(@"hello", dict[@"query"]); + NSArray *list = [request toList]; + XCTAssertEqual(@"hello", list[0]); } -- (void)testRequestToMapWithNulls { +- (void)testRequestToListWithNulls { NullFieldsSearchRequest *request = [NullFieldsSearchRequest makeWithQuery:nil identifier:@1]; - NSDictionary *dict = [request toMap]; - XCTAssertEqual([NSNull null], dict[@"query"]); + NSArray *list = [request toList]; + XCTAssertEqual([NSNull null], list[0]); } -- (void)testReplyToMapWithValuess { +- (void)testReplyToListWithValuess { NullFieldsSearchReply *reply = [NullFieldsSearchReply makeWithResult:@"result" error:@"error" indices:@[ @1, @2, @3 ] request:[NullFieldsSearchRequest makeWithQuery:@"hello" identifier:@1] type:NullFieldsSearchReplyTypeSuccess]; - NSDictionary *dict = [reply toMap]; + NSArray *list = [reply toList]; NSArray *indices = @[ @1, @2, @3 ]; - XCTAssertEqualObjects(@"result", dict[@"result"]); - XCTAssertEqualObjects(@"error", dict[@"error"]); - XCTAssertEqualObjects(indices, dict[@"indices"]); - XCTAssertEqualObjects(@"hello", dict[@"request"][@"query"]); - XCTAssertEqualObjects(@0, dict[@"type"]); + XCTAssertEqualObjects(@"result", list[0]); + XCTAssertEqualObjects(@"error", list[1]); + XCTAssertEqualObjects(indices, list[2]); + XCTAssertEqualObjects(@"hello", list[3][0]); + XCTAssertEqualObjects(@0, list[4]); } -- (void)testReplyToMapWithNulls { +- (void)testReplyToListWithNulls { NullFieldsSearchReply *reply = [NullFieldsSearchReply makeWithResult:nil error:nil indices:nil request:nil type:NullFieldsSearchReplyTypeSuccess]; - NSDictionary *dict = [reply toMap]; - XCTAssertEqual([NSNull null], dict[@"result"]); - XCTAssertEqual([NSNull null], dict[@"error"]); - XCTAssertEqual([NSNull null], dict[@"indices"]); - XCTAssertEqual([NSNull null], dict[@"request"]); + NSArray *list = [reply toList]; + XCTAssertEqual([NSNull null], list[0]); + XCTAssertEqual([NSNull null], list[1]); + XCTAssertEqual([NSNull null], list[2]); + XCTAssertEqual([NSNull null], list[3]); } @end diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/RunnerTests.m b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/RunnerTests.m index 8ee719e41ba6..8c648f846c33 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/RunnerTests.m +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/RunnerTests.m @@ -6,8 +6,8 @@ #import "message.gen.h" @interface ACMessageSearchReply () -+ (ACMessageSearchReply *)fromMap:(NSDictionary *)dict; -- (NSDictionary *)toMap; ++ (ACMessageSearchReply *)fromList:(NSArray *)list; +- (NSArray *)toList; @end @interface RunnerTests : XCTestCase @@ -19,24 +19,24 @@ @implementation RunnerTests - (void)testToMapAndBack { ACMessageSearchReply *reply = [[ACMessageSearchReply alloc] init]; reply.result = @"foobar"; - NSDictionary *dict = [reply toMap]; - ACMessageSearchReply *copy = [ACMessageSearchReply fromMap:dict]; + NSArray *list = [reply toList]; + ACMessageSearchReply *copy = [ACMessageSearchReply fromList:list]; XCTAssertEqual(reply.result, copy.result); } - (void)testHandlesNull { ACMessageSearchReply *reply = [[ACMessageSearchReply alloc] init]; reply.result = nil; - NSDictionary *dict = [reply toMap]; - ACMessageSearchReply *copy = [ACMessageSearchReply fromMap:dict]; - XCTAssertNil(copy.result); + NSArray *list = [reply toList]; + ACMessageSearchReply *copy = [ACMessageSearchReply fromList:list]; + XCTAssertEqualObjects(copy.result, [NSNull null]); } - (void)testHandlesNullFirst { ACMessageSearchReply *reply = [[ACMessageSearchReply alloc] init]; reply.error = @"foobar"; - NSDictionary *dict = [reply toMap]; - ACMessageSearchReply *copy = [ACMessageSearchReply fromMap:dict]; + NSArray *list = [reply toList]; + ACMessageSearchReply *copy = [ACMessageSearchReply fromList:list]; XCTAssertEqual(reply.error, copy.error); } diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index 073edbedc882..d0625d673d68 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -107,7 +107,10 @@ void main() { final String code = sink.toString(); expect(code, contains('#import "foo.h"')); expect(code, contains('@implementation Foobar')); - expect(code, contains('pigeonResult.enum1 = [list[1] integerValue];')); + expect( + code, + contains( + 'pigeonResult.enum1 = [(list[1] == [NSNull null] ? 0 : list[1]) integerValue];')); }); test('primitive enum host', () { @@ -386,7 +389,7 @@ void main() { expect( code, contains( - 'pigeonResult.nested = [Input fromList:[list objectAtIndex:0 ]];')); + 'pigeonResult.nested = [Input fromList:(list[0] == [NSNull null] ? nil : list[0])];')); expect( code, contains( From 71b533024f2123148f4a10ed7d2a0266bc84a479 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 22 Nov 2022 17:49:17 -0800 Subject: [PATCH 16/55] More kt tests --- .../android_kotlin_unit_tests/EnumTest.kt | 6 ++-- .../MultipleArityTests.kt | 4 +-- .../NullableReturnsTest.kt | 4 +-- .../PrimitiveTest.kt | 36 +++++++++---------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EnumTest.kt b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EnumTest.kt index 1246e2fcd920..7440efe2e995 100644 --- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EnumTest.kt +++ b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/EnumTest.kt @@ -36,11 +36,11 @@ internal class EnumTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertTrue(wrapped.containsKey("result")) - assertEquals(input, wrapped["result"]) + assertNotNull(wrapped[0]) + assertEquals(input, wrapped[0]) } } diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/MultipleArityTests.kt b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/MultipleArityTests.kt index 0144ce1d65e4..afd2f419f4e6 100644 --- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/MultipleArityTests.kt +++ b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/MultipleArityTests.kt @@ -36,10 +36,10 @@ class MultipleArityTests: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(inputX - inputY, wrapped["result"]) + assertEquals(inputX - inputY, wrapped[0]) } } } diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NullableReturnsTest.kt b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NullableReturnsTest.kt index 2b8fd2e3b1c7..b2f6a3c8e152 100644 --- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NullableReturnsTest.kt +++ b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/NullableReturnsTest.kt @@ -34,10 +34,10 @@ class NullableReturnsTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(output, wrapped["result"]) + assertEquals(output, wrapped[0]) } } diff --git a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/PrimitiveTest.kt b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/PrimitiveTest.kt index e4a86b40d959..6721c0e92756 100644 --- a/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/PrimitiveTest.kt +++ b/packages/pigeon/platform_tests/android_kotlin_unit_tests/android/app/src/test/java/com/example/android_kotlin_unit_tests/PrimitiveTest.kt @@ -36,10 +36,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(input.toLong(), wrapped["result"]) + assertEquals(input.toLong(), wrapped[0]) } } @@ -84,10 +84,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(input, wrapped["result"]) + assertEquals(input, wrapped[0]) } } @@ -132,10 +132,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(input, wrapped["result"]) + assertEquals(input, wrapped[0]) } } @@ -164,10 +164,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(input, wrapped["result"]) + assertEquals(input, wrapped[0]) } } @@ -212,10 +212,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(input, wrapped["result"]) + assertEquals(input, wrapped[0]) } } @@ -260,10 +260,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(input, wrapped["result"]) + assertEquals(input, wrapped[0]) } } @@ -308,10 +308,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertTrue(input.contentEquals(wrapped["result"] as IntArray)) + assertTrue(input.contentEquals(wrapped[0] as IntArray)) } } @@ -356,10 +356,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(input, wrapped["result"]) + assertEquals(input, wrapped[0]) } } @@ -404,10 +404,10 @@ class PrimitiveTest: TestCase() { handlerSlot.captured.onMessage(message) { it?.rewind() @Suppress("UNCHECKED_CAST") - val wrapped = codec.decodeMessage(it) as HashMap? + val wrapped = codec.decodeMessage(it) as List? assertNotNull(wrapped) wrapped?.let { - assertEquals(input, wrapped["result"]) + assertEquals(input, wrapped[0]) } } From c755b4a8589d34e29422740abc58ee3e14a41eae Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 22 Nov 2022 18:37:45 -0800 Subject: [PATCH 17/55] c++ generator and unit tests --- packages/pigeon/lib/cpp_generator.dart | 135 +++++++++---------- packages/pigeon/test/cpp_generator_test.dart | 16 +-- 2 files changed, 71 insertions(+), 80 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 9c369a512585..444694a53a4c 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -108,7 +108,7 @@ void _writeCodecSource(Indent indent, Api api, Root root) { indent.write('case ${customClass.enumeration}:'); indent.writeScoped('', '', () { indent.writeln( - 'return flutter::CustomEncodableValue(${customClass.name}(std::get(ReadValue(stream))));'); + 'return flutter::CustomEncodableValue(${customClass.name}(std::get(ReadValue(stream))));'); }); } indent.write('default:'); @@ -131,7 +131,7 @@ void _writeCodecSource(Indent indent, Api api, Root root) { indent.scoped('{', '}', () { indent.writeln('stream->WriteByte(${customClass.enumeration});'); indent.writeln( - 'WriteValue(std::any_cast<${customClass.name}>(*custom_value).ToEncodableMap(), stream);'); + 'WriteValue(std::any_cast<${customClass.name}>(*custom_value).List(), stream);'); indent.writeln('return;'); }); } @@ -232,8 +232,8 @@ void _writeDataClassDeclaration(Indent indent, Class klass, Root root, }); indent.scoped(' private:', '', () { - indent.writeln('${klass.name}(flutter::EncodableMap map);'); - indent.writeln('flutter::EncodableMap ToEncodableMap() const;'); + indent.writeln('${klass.name}(flutter::EncodableList list);'); + indent.writeln('flutter::EncodableList ToEncodableList() const;'); for (final Class friend in root.classes) { if (friend != klass && friend.fields.any( @@ -317,42 +317,46 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { } // Serialization. - indent.write('flutter::EncodableMap ${klass.name}::ToEncodableMap() const '); + indent + .write('flutter::EncodableList ${klass.name}::ToEncodableList() const '); indent.scoped('{', '}', () { - indent.scoped('return flutter::EncodableMap{', '};', () { - for (final NamedType field in klass.fields) { - final HostDatatype hostDatatype = getFieldHostDatatype( - field, - root.classes, - root.enums, - (TypeDeclaration x) => _baseCppTypeForBuiltinDartType(x)); - - final String instanceVariable = _makeInstanceVariableName(field); + indent.scoped('return flutter::EncodableList{', '};', () { + indent.writeScoped('flutter::EncodableList{', '};', () { + for (final NamedType field in klass.fields) { + final HostDatatype hostDatatype = getFieldHostDatatype( + field, + root.classes, + root.enums, + (TypeDeclaration x) => _baseCppTypeForBuiltinDartType(x)); + + final String instanceVariable = _makeInstanceVariableName(field); + + // final String encodableKey = 'flutter::EncodableValue("${field.name}")'; + String encodableValue = ''; + if (!hostDatatype.isBuiltin && + rootClassNameSet.contains(field.type.baseName)) { + final String operator = field.type.isNullable ? '->' : '.'; + encodableValue = '$instanceVariable${operator}ToEncodableList()'; + } else if (!hostDatatype.isBuiltin && + rootEnumNameSet.contains(field.type.baseName)) { + final String nonNullValue = field.type.isNullable + ? '(*$instanceVariable)' + : instanceVariable; + encodableValue = 'flutter::EncodableValue((int)$nonNullValue)'; + } else { + final String operator = field.type.isNullable ? '*' : ''; + encodableValue = + 'flutter::EncodableValue($operator$instanceVariable)'; + } - final String encodableKey = 'flutter::EncodableValue("${field.name}")'; - String encodableValue = ''; - if (!hostDatatype.isBuiltin && - rootClassNameSet.contains(field.type.baseName)) { - final String operator = field.type.isNullable ? '->' : '.'; - encodableValue = '$instanceVariable${operator}ToEncodableMap()'; - } else if (!hostDatatype.isBuiltin && - rootEnumNameSet.contains(field.type.baseName)) { - final String nonNullValue = - field.type.isNullable ? '(*$instanceVariable)' : instanceVariable; - encodableValue = 'flutter::EncodableValue((int)$nonNullValue)'; - } else { - final String operator = field.type.isNullable ? '*' : ''; - encodableValue = - 'flutter::EncodableValue($operator$instanceVariable)'; - } + if (field.type.isNullable) { + encodableValue = + '$instanceVariable ? $encodableValue : flutter::EncodableValue()'; + } - if (field.type.isNullable) { - encodableValue = - '$instanceVariable ? $encodableValue : flutter::EncodableValue()'; + indent.writeln('{$encodableValue},'); } - - indent.writeln('{$encodableKey, $encodableValue},'); - } + }); }); }); indent.addln(''); @@ -362,16 +366,16 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { indent.addln(''); // Deserialization. - indent.write('${klass.name}::${klass.name}(flutter::EncodableMap map) '); + indent.write('${klass.name}::${klass.name}(flutter::EncodableList wrapped) '); indent.scoped('{', '}', () { - for (final NamedType field in klass.fields) { + indent.writeln('flutter::EncodeableList list = wrapped.front();'); + klass.fields.toList().asMap().forEach((int index, final NamedType field) { final String instanceVariableName = _makeInstanceVariableName(field); final String pointerFieldName = '${_pointerPrefix}_${_makeVariableName(field)}'; final String encodableFieldName = '${_encodablePrefix}_${_makeVariableName(field)}'; - indent.writeln( - 'auto& $encodableFieldName = map.at(flutter::EncodableValue("${field.name}"));'); + indent.writeln('auto& $encodableFieldName = list[$index];'); if (rootEnumNameSet.contains(field.type.baseName)) { indent.writeln( 'if (const int32_t* $pointerFieldName = std::get_if(&$encodableFieldName))\t$instanceVariableName = (${field.type.baseName})*$pointerFieldName;'); @@ -392,7 +396,7 @@ else if (const int64_t* ${pointerFieldName}_64 = std::get_if(&$encodabl .map((Class x) => x.name) .contains(field.type.baseName)) { indent.write( - 'if (const flutter::EncodableMap* $pointerFieldName = std::get_if(&$encodableFieldName)) '); + 'if (const flutter::EncodableList* $pointerFieldName = std::get_if(&$encodableFieldName)) '); //might need to change reference indent.scoped('{', '}', () { indent.writeln( '$instanceVariableName = ${hostDatatype.datatype}(*$pointerFieldName);'); @@ -405,7 +409,7 @@ else if (const int64_t* ${pointerFieldName}_64 = std::get_if(&$encodabl }); } } - } + }); }); indent.addln(''); } @@ -471,9 +475,9 @@ void _writeHostApiHeader(Indent indent, Api api, Root root) { indent.writeln( 'static void SetUp(flutter::BinaryMessenger* binary_messenger, ${api.name}* api);'); indent.writeln( - 'static flutter::EncodableMap WrapError(std::string_view error_message);'); + 'static flutter::EncodableList WrapError(std::string_view error_message);'); indent.writeln( - 'static flutter::EncodableMap WrapError(const FlutterError& error);'); + 'static flutter::EncodableList WrapError(const FlutterError& error);'); }); indent.scoped(' protected:', '', () { indent.writeln('${api.name}() = default;'); @@ -514,7 +518,7 @@ const flutter::StandardMessageCodec& ${api.name}::GetCodec() { indent.write( 'channel->SetMessageHandler([api](const flutter::EncodableValue& message, const flutter::MessageReply& reply) '); indent.scoped('{', '});', () { - indent.writeln('flutter::EncodableMap wrapped;'); + indent.writeln('flutter::EncodableList wrapped;'); indent.write('try '); indent.scoped('{', '}', () { final List methodArgument = []; @@ -588,7 +592,7 @@ const flutter::StandardMessageCodec& ${api.name}::GetCodec() { indent.write('if ($encodableArgName.IsNull()) '); indent.scoped('{', '}', () { indent.writeln( - 'wrapped.emplace(flutter::EncodableValue("${Keys.error}"), WrapError("$argName unexpectedly null."));'); + 'wrapped = WrapError("$argName unexpectedly null.");'); indent.writeln('reply(wrapped);'); indent.writeln('return;'); }); @@ -605,14 +609,10 @@ const flutter::StandardMessageCodec& ${api.name}::GetCodec() { final String errorGetter; final String prefix = (reply != '') ? '\t' : ''; - const String resultKey = - 'flutter::EncodableValue("${Keys.result}")'; - const String errorKey = - 'flutter::EncodableValue("${Keys.error}")'; const String nullValue = 'flutter::EncodableValue()'; if (returnType.isVoid) { elseBody = - '$prefix\twrapped.emplace($resultKey, $nullValue);${indent.newline}'; + '$prefix\twrapped.emplace($nullValue);${indent.newline}'; ifCondition = 'output.has_value()'; errorGetter = 'value'; } else { @@ -631,19 +631,19 @@ const flutter::StandardMessageCodec& ${api.name}::GetCodec() { elseBody = ''' $prefix\tauto output_optional = $extractedValue; $prefix\tif (output_optional) { -$prefix\t\twrapped.emplace($resultKey, $wrapperType(std::move(output_optional).value())); +$prefix\t\twrapped.emplace($wrapperType(std::move(output_optional).value())); $prefix\t} else { -$prefix\t\twrapped.emplace($resultKey, $nullValue); +$prefix\t\twrapped.emplace($nullValue); $prefix\t}${indent.newline}'''; } else { elseBody = - '$prefix\twrapped.emplace($resultKey, $wrapperType($extractedValue));${indent.newline}'; + '$prefix\twrapped.emplace($wrapperType($extractedValue));${indent.newline}'; } ifCondition = 'output.has_error()'; errorGetter = 'error'; } return '${prefix}if ($ifCondition) {${indent.newline}' - '$prefix\twrapped.emplace($errorKey, WrapError(output.$errorGetter()));${indent.newline}' + '$prefix\twrapped = WrapError(output.$errorGetter());${indent.newline}' '$prefix$reply' '$prefix} else {${indent.newline}' '$elseBody' @@ -675,8 +675,7 @@ $prefix\t}${indent.newline}'''; }); indent.write('catch (const std::exception& exception) '); indent.scoped('{', '}', () { - indent.writeln( - 'wrapped.emplace(flutter::EncodableValue("${Keys.error}"), WrapError(exception.what()));'); + indent.writeln('wrapped = WrapError(exception.what());'); if (method.isAsynchronous) { indent.writeln('reply(wrapped);'); } @@ -821,7 +820,7 @@ else if (const int64_t* ${pointerVariable}_64 = std::get_if(&args)) \t$output = *${pointerVariable}_64;'''); } else if (!isBuiltin) { indent.write( - 'if (const flutter::EncodableMap* $pointerVariable = std::get_if(&args)) '); + 'if (const flutter::EncodableList* $pointerVariable = std::get_if(&args)) '); indent.scoped('{', '}', () { indent.writeln('$output = $returnTypeName(*$pointerVariable);'); }); @@ -1150,18 +1149,18 @@ void generateCppSource(CppOptions options, Root root, StringSink sink) { indent.addln(''); indent.format(''' -flutter::EncodableMap ${api.name}::WrapError(std::string_view error_message) { -\treturn flutter::EncodableMap({ -\t\t{flutter::EncodableValue("${Keys.errorMessage}"), flutter::EncodableValue(std::string(error_message))}, -\t\t{flutter::EncodableValue("${Keys.errorCode}"), flutter::EncodableValue("Error")}, -\t\t{flutter::EncodableValue("${Keys.errorDetails}"), flutter::EncodableValue()} +flutter::EncodableList ${api.name}::WrapError(std::string_view error_message) { +\treturn flutter::EncodableList({ +\t\t{flutter::EncodableValue(std::string(error_message))}, +\t\t{flutter::EncodableValue("Error")}, +\t\t{flutter::EncodableValue()} \t}); } -flutter::EncodableMap ${api.name}::WrapError(const FlutterError& error) { -\treturn flutter::EncodableMap({ -\t\t{flutter::EncodableValue("${Keys.errorMessage}"), flutter::EncodableValue(error.message())}, -\t\t{flutter::EncodableValue("${Keys.errorCode}"), flutter::EncodableValue(error.code())}, -\t\t{flutter::EncodableValue("${Keys.errorDetails}"), error.details()} +flutter::EncodableList ${api.name}::WrapError(const FlutterError& error) { +\treturn flutter::EncodableList({ +\t\t{flutter::EncodableValue(error.message())}, +\t\t{flutter::EncodableValue(error.code())}, +\t\t{error.details()} \t}); }'''); indent.addln(''); diff --git a/packages/pigeon/test/cpp_generator_test.dart b/packages/pigeon/test/cpp_generator_test.dart index cdf3876df79d..c7718a1092af 100644 --- a/packages/pigeon/test/cpp_generator_test.dart +++ b/packages/pigeon/test/cpp_generator_test.dart @@ -457,13 +457,11 @@ void main() { // Serialization handles optionals. expect( code, - contains('{flutter::EncodableValue("nullableBool"), ' - 'nullable_bool_ ? flutter::EncodableValue(*nullable_bool_) ' + contains('{nullable_bool_ ? flutter::EncodableValue(*nullable_bool_) ' ': flutter::EncodableValue()}')); expect( code, - contains('{flutter::EncodableValue("nullableNested"), ' - 'nullable_nested_ ? nullable_nested_->ToEncodableMap() ' + contains('{nullable_nested_ ? nullable_nested_->ToEncodableList() ' ': flutter::EncodableValue()}')); } }); @@ -560,14 +558,8 @@ void main() { expect(code, contains('non_nullable_string_ = value_arg;')); expect(code, contains('non_nullable_nested_ = value_arg;')); // Serialization uses the value directly. - expect( - code, - contains('{flutter::EncodableValue("nonNullableBool"), ' - 'flutter::EncodableValue(non_nullable_bool_)}')); - expect( - code, - contains('{flutter::EncodableValue("nonNullableNested"), ' - 'non_nullable_nested_.ToEncodableMap()}')); + expect(code, contains('{flutter::EncodableValue(non_nullable_bool_)}')); + expect(code, contains('{non_nullable_nested_.ToEncodableList()}')); } }); From e6b2552926f939bc171c47221d6a1eaf45aa72da Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 22 Nov 2022 21:04:42 -0800 Subject: [PATCH 18/55] analyze, format, changelog --- packages/pigeon/CHANGELOG.md | 4 ++++ packages/pigeon/lib/generator_tools.dart | 2 +- .../mock_handler_tester/test/widget_test.dart | 2 -- .../AllDatatypesTest.java | 7 ++----- .../AsyncTest.java | 4 +--- .../ListTest.java | 3 +-- .../MultipleArityTest.java | 3 +-- .../NullFieldsTest.java | 20 +++++++++---------- .../NullableReturnsTest.java | 1 - .../PigeonTest.java | 1 - .../PrimitiveTest.java | 3 +-- .../ios/RunnerTests/AllDatatypesTest.m | 4 ++-- .../ios/RunnerTests/AsyncHandlersTest.m | 4 ++-- packages/pigeon/pubspec.yaml | 2 +- 14 files changed, 26 insertions(+), 34 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 5cb782703f4b..f4636ed6fa0a 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.7 + +* Updates serialisation to use lists instead of maps. + ## 4.2.6 * Fixes bug with parsing documentation comments that start with '/'. diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index 23641d39d81c..7916bda072e7 100644 --- a/packages/pigeon/lib/generator_tools.dart +++ b/packages/pigeon/lib/generator_tools.dart @@ -9,7 +9,7 @@ import 'dart:mirrors'; import 'ast.dart'; /// The current version of pigeon. This must match the version in pubspec.yaml. -const String pigeonVersion = '4.2.6'; +const String pigeonVersion = '4.2.7'; /// Read all the content from [stdin] to a String. String readStdin() { diff --git a/packages/pigeon/mock_handler_tester/test/widget_test.dart b/packages/pigeon/mock_handler_tester/test/widget_test.dart index c2af9669442a..0973bfe778db 100644 --- a/packages/pigeon/mock_handler_tester/test/widget_test.dart +++ b/packages/pigeon/mock_handler_tester/test/widget_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:io'; - import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java index 2316edc35783..aa32bbfba354 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java @@ -13,7 +13,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.Map; import org.junit.Test; public class AllDatatypesTest { @@ -26,8 +25,7 @@ public void nullValues() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) FlutterEverything.getCodec().decodeMessage(message); + ArrayList args = (ArrayList) FlutterEverything.getCodec().decodeMessage(message); ByteBuffer replyData = FlutterEverything.getCodec().encodeMessage(args.get(0)); replyData.position(0); reply.reply(replyData); @@ -100,8 +98,7 @@ public void hasValues() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) FlutterEverything.getCodec().decodeMessage(message); + ArrayList args = (ArrayList) FlutterEverything.getCodec().decodeMessage(message); ByteBuffer replyData = FlutterEverything.getCodec().encodeMessage(args.get(0)); replyData.position(0); reply.reply(replyData); diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AsyncTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AsyncTest.java index 14477b16f6bd..786aef3bf9bb 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AsyncTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AsyncTest.java @@ -12,7 +12,6 @@ import io.flutter.plugin.common.MessageCodec; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.Map; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -90,8 +89,7 @@ public void asyncError() { @SuppressWarnings("unchecked") ArrayList wrapped = (ArrayList) codec.decodeMessage(bytes); assertTrue(wrapped.size() > 1); - assertEquals( - "java.lang.Exception: error", (String) wrapped.get(0)); + assertEquals("java.lang.Exception: error", (String) wrapped.get(0)); didCall[0] = true; }); assertTrue(didCall[0]); diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/ListTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/ListTest.java index 3a454f343e2c..a1345a00a1b3 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/ListTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/ListTest.java @@ -28,8 +28,7 @@ public void listInList() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) EchoApi.getCodec().decodeMessage(message); + ArrayList args = (ArrayList) EchoApi.getCodec().decodeMessage(message); ByteBuffer replyData = EchoApi.getCodec().encodeMessage(args.get(0)); replyData.position(0); reply.reply(replyData); diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/MultipleArityTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/MultipleArityTest.java index bfd54cc7e03b..e46bb32ee106 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/MultipleArityTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/MultipleArityTest.java @@ -23,8 +23,7 @@ public void subtract() { BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); ArrayList args = - (ArrayList) - AllDatatypes.FlutterEverything.getCodec().decodeMessage(message); + (ArrayList) AllDatatypes.FlutterEverything.getCodec().decodeMessage(message); Long arg0 = (Long) args.get(0); Long arg1 = (Long) args.get(1); ByteBuffer replyData = diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java index 5591470806a6..39084f3a3aba 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java @@ -9,8 +9,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; import org.junit.Test; public class NullFieldsTest { @@ -69,7 +67,8 @@ public void requestFromMapWithValues() { list.add(1L); ArrayList wrapped = new ArrayList(); wrapped.add(list); - NullFields.NullFieldsSearchRequest request = NullFields.NullFieldsSearchRequest.fromList(wrapped); + NullFields.NullFieldsSearchRequest request = + NullFields.NullFieldsSearchRequest.fromList(wrapped); assertEquals(request.getQuery(), "hello"); } @@ -81,7 +80,8 @@ public void requestFromMapWithNulls() { ArrayList wrapped = new ArrayList(); wrapped.add(list); - NullFields.NullFieldsSearchRequest request = NullFields.NullFieldsSearchRequest.fromList(wrapped); + NullFields.NullFieldsSearchRequest request = + NullFields.NullFieldsSearchRequest.fromList(wrapped); assertNull(request.getQuery()); } @@ -174,9 +174,9 @@ public void replyToMapWithValues() { .setType(NullFields.NullFieldsSearchReplyType.SUCCESS) .build(); - ArrayList wrapped = reply.toList(); - @SuppressWarnings("unchecked") - ArrayList unwrapped = wrapped.get(0); + ArrayList wrapped = reply.toList(); + @SuppressWarnings("unchecked") + ArrayList unwrapped = wrapped.get(0); assertEquals(unwrapped.get(0), "result"); assertEquals(unwrapped.get(1), "error"); assertEquals(unwrapped.get(2), Arrays.asList(1L, 2L, 3L)); @@ -195,9 +195,9 @@ public void replyToMapWithNulls() { .setType(null) .build(); - ArrayList wrapped = reply.toList(); - @SuppressWarnings("unchecked") - ArrayList unwrapped = wrapped.get(0); + ArrayList wrapped = reply.toList(); + @SuppressWarnings("unchecked") + ArrayList unwrapped = wrapped.get(0); assertNull(unwrapped.get(0)); assertNull(unwrapped.get(1)); diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullableReturnsTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullableReturnsTest.java index fcfd4c1a5bae..041a83baebf3 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullableReturnsTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullableReturnsTest.java @@ -11,7 +11,6 @@ import io.flutter.plugin.common.MessageCodec; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.Map; import org.junit.Test; import org.mockito.ArgumentCaptor; diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java index bb3a8c12480e..509b61f17e7a 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java @@ -12,7 +12,6 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; -import java.util.Map; import org.junit.Test; import org.mockito.ArgumentCaptor; diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PrimitiveTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PrimitiveTest.java index 88982b68a129..772b86993e6c 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PrimitiveTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PrimitiveTest.java @@ -28,8 +28,7 @@ private static BinaryMessenger makeMockBinaryMessenger() { ByteBuffer message = invocation.getArgument(1); BinaryMessenger.BinaryReply reply = invocation.getArgument(2); message.position(0); - ArrayList args = - (ArrayList) PrimitiveFlutterApi.getCodec().decodeMessage(message); + ArrayList args = (ArrayList) PrimitiveFlutterApi.getCodec().decodeMessage(message); Object arg = args.get(0); if (arg instanceof Long) { Long longArg = (Long) arg; diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m index e9c5ea45c9a0..932f976dfd81 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AllDatatypesTest.m @@ -22,8 +22,8 @@ - (void)testAllNull { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [api echoEverything:everything completion:^(Everything *_Nonnull result, NSError *_Nullable error) { - XCTAssertNil(error); - XCTAssertNotNil(result); + XCTAssertNil(error); + XCTAssertNotNil(result); XCTAssert([result.aBool isEqual:[NSNull null]]); XCTAssert([result.anInt isEqual:[NSNull null]]); XCTAssert([result.aDouble isEqual:[NSNull null]]); diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AsyncHandlersTest.m b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AsyncHandlersTest.m index 27f08b75a27d..ac1466f7f289 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AsyncHandlersTest.m +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/RunnerTests/AsyncHandlersTest.m @@ -75,7 +75,7 @@ - (void)testAsyncFlutter2HostVoidVoid { binaryMessenger.handlers[channelName](nil, ^(NSData *data) { NSArray *outputList = [binaryMessenger.codec decode:data]; XCTAssertEqualObjects(outputList[0], [NSNull null]); -// XCTAssertEqualObjects(outputMap[@"error"], [NSNull null]); + // XCTAssertEqualObjects(outputMap[@"error"], [NSNull null]); [expectation fulfill]; }); [self waitForExpectationsWithTimeout:1.0 handler:nil]; @@ -138,7 +138,7 @@ - (void)testAsyncFlutter2HostError { NSArray *outputList = [binaryMessenger.codec decode:data]; XCTAssertNotNil(outputList); XCTAssertEqualObjects(outputList[0], @"hey"); - XCTAssertEqualObjects(outputList[1], @"ho"); + XCTAssertEqualObjects(outputList[1], @"ho"); [expectation fulfill]; }); [self waitForExpectationsWithTimeout:1.0 handler:nil]; diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index 639d3e153fbc..baa21d22da49 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: 4.2.6 # This must match the version in lib/generator_tools.dart +version: 4.2.7 # This must match the version in lib/generator_tools.dart environment: sdk: ">=2.12.0 <3.0.0" From f785b169c207c3af2f4bf787fc9b5a544882629f Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 22 Nov 2022 21:15:22 -0800 Subject: [PATCH 19/55] test file updates for ci --- .../mock_handler_tester/test/message.dart | 240 +++++++------ .../pigeon/mock_handler_tester/test/test.dart | 89 ++--- .../lib/all_datatypes.dart | 157 ++++----- .../lib/multiple_arity.gen.dart | 57 ++-- .../lib/non_null_fields.gen.dart | 153 ++++----- .../lib/null_fields.gen.dart | 132 ++++---- .../lib/null_safe_pigeon.dart | 178 +++++----- .../lib/nullable_returns.gen.dart | 189 ++++------- .../lib/primitive.dart | 320 +++++++----------- .../ios/Flutter/AppFrameworkInfo.plist | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 10 +- .../ios_unit_tests/ios/Runner/Info.plist | 2 + 12 files changed, 680 insertions(+), 849 deletions(-) diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index 3e86aca2e5bd..66f5ceb1f344 100644 --- a/packages/pigeon/mock_handler_tester/test/message.dart +++ b/packages/pigeon/mock_handler_tester/test/message.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -11,12 +11,22 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; +/// This comment is to test enum documentation comments. +/// +/// This comment also tests multiple line comments. +/// +/// //////////////////////// +/// This comment also tests comments that start with '/' +/// //////////////////////// enum MessageRequestState { pending, success, failure, } +/// This comment is to test class documentation comments. +/// +/// This comment also tests multiple line comments. class MessageSearchRequest { MessageSearchRequest({ this.query, @@ -24,28 +34,33 @@ class MessageSearchRequest { this.aBool, }); + /// This comment is to test field documentation comments. String? query; + /// This comment is to test field documentation comments. int? anInt; + /// This comment is to test field documentation comments. bool? aBool; Object encode() { - final Map pigeonMap = {}; - pigeonMap['query'] = query; - pigeonMap['anInt'] = anInt; - pigeonMap['aBool'] = aBool; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(query); + pigeonList.add(anInt); + pigeonList.add(aBool); + return [pigeonList]; } static MessageSearchRequest decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return MessageSearchRequest( - query: pigeonMap['query'] as String?, - anInt: pigeonMap['anInt'] as int?, - aBool: pigeonMap['aBool'] as bool?, + query: result[0] as String?, + anInt: result[1] as int?, + aBool: result[2] as bool?, ); } } +/// This comment is to test class documentation comments. class MessageSearchReply { MessageSearchReply({ this.result, @@ -53,54 +68,63 @@ class MessageSearchReply { this.state, }); + /// This comment is to test field documentation comments. + /// + /// This comment also tests multiple line comments. String? result; + /// This comment is to test field documentation comments. String? error; + /// This comment is to test field documentation comments. MessageRequestState? state; Object encode() { - final Map pigeonMap = {}; - pigeonMap['result'] = result; - pigeonMap['error'] = error; - pigeonMap['state'] = state?.index; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(result); + pigeonList.add(error); + pigeonList.add(state?.index); + return [pigeonList]; } static MessageSearchReply decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return MessageSearchReply( - result: pigeonMap['result'] as String?, - error: pigeonMap['error'] as String?, - state: pigeonMap['state'] != null - ? MessageRequestState.values[pigeonMap['state']! as int] + result: result[0] as String?, + error: result[1] as String?, + state: result[2] != null + ? MessageRequestState.values[result[2]! as int] : null, ); } } +/// This comment is to test class documentation comments. class MessageNested { MessageNested({ this.request, }); + /// This comment is to test field documentation comments. MessageSearchRequest? request; Object encode() { - final Map pigeonMap = {}; - pigeonMap['request'] = request?.encode(); - return pigeonMap; + final List pigeonList = []; + pigeonList.add(request?.encode()); + return [pigeonList]; } static MessageNested decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return MessageNested( - request: pigeonMap['request'] != null - ? MessageSearchRequest.decode(pigeonMap['request']!) + request: result[0] != null + ? MessageSearchRequest.decode(result[0]! as List) : null, ); } } -class _MessageApiCodec extends StandardMessageCodec { +class _MessageApiCodec extends StandardMessageCodec{ const _MessageApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -114,88 +138,87 @@ class _MessageApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return MessageSearchReply.decode(readValue(buffer)!); - - case 129: - return MessageSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return MessageSearchReply.decode(readValue(buffer)! as List); + + case 129: + return MessageSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } +/// This comment is to test api documentation comments. +/// +/// This comment also tests multiple line comments. class MessageApi { /// Constructor for [MessageApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + MessageApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageApiCodec(); + /// This comment is to test documentation comments. + /// + /// This comment also tests multiple line comments. Future initialize() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { return; } } + /// This comment is to test method documentation comments. Future search(MessageSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_request]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_request]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as MessageSearchReply?)!; + return (replyList[0] as MessageSearchReply?)!; } } } -class _MessageNestedApiCodec extends StandardMessageCodec { +class _MessageNestedApiCodec extends StandardMessageCodec{ const _MessageNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -212,67 +235,66 @@ class _MessageNestedApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return MessageNested.decode(readValue(buffer)!); - - case 129: - return MessageSearchReply.decode(readValue(buffer)!); - - case 130: - return MessageSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return MessageNested.decode(readValue(buffer)! as List); + + case 129: + return MessageSearchReply.decode(readValue(buffer)! as List); + + case 130: + return MessageSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } +/// This comment is to test api documentation comments. class MessageNestedApi { /// Constructor for [MessageNestedApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageNestedApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + MessageNestedApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageNestedApiCodec(); + /// This comment is to test method documentation comments. + /// + /// This comment also tests multiple line comments. Future search(MessageNested arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_nested]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_nested]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as MessageSearchReply?)!; + return (replyList[0] as MessageSearchReply?)!; } } } -class _MessageFlutterSearchApiCodec extends StandardMessageCodec { +class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ const _MessageFlutterSearchApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -286,43 +308,39 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return MessageSearchReply.decode(readValue(buffer)!); - - case 129: - return MessageSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return MessageSearchReply.decode(readValue(buffer)! as List); + + case 129: + return MessageSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - +/// This comment is to test api documentation comments. abstract class MessageFlutterSearchApi { static const MessageCodec codec = _MessageFlutterSearchApiCodec(); + /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); - static void setup(MessageFlutterSearchApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(MessageFlutterSearchApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = - (args[0] as MessageSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/mock_handler_tester/test/test.dart b/packages/pigeon/mock_handler_tester/test/test.dart index b8adae42c4d9..e105f18518ae 100644 --- a/packages/pigeon/mock_handler_tester/test/test.dart +++ b/packages/pigeon/mock_handler_tester/test/test.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 @@ -14,7 +14,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'message.dart'; -class _TestHostApiCodec extends StandardMessageCodec { +class _TestHostApiCodec extends StandardMessageCodec{ const _TestHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -28,66 +28,67 @@ class _TestHostApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return MessageSearchReply.decode(readValue(buffer)!); - - case 129: - return MessageSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return MessageSearchReply.decode(readValue(buffer)! as List); + + case 129: + return MessageSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - +/// This comment is to test api documentation comments. +/// +/// This comment also tests multiple line comments. abstract class TestHostApi { static const MessageCodec codec = _TestHostApiCodec(); + /// This comment is to test documentation comments. + /// + /// This comment also tests multiple line comments. void initialize(); + /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); static void setup(TestHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { // ignore message api.initialize(); - return {}; + return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = - (args[0] as MessageSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); - return {'result': output}; + return [output]; }); } } } } -class _TestNestedApiCodec extends StandardMessageCodec { +class _TestNestedApiCodec extends StandardMessageCodec{ const _TestNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -104,46 +105,46 @@ class _TestNestedApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return MessageNested.decode(readValue(buffer)!); - - case 129: - return MessageSearchReply.decode(readValue(buffer)!); - - case 130: - return MessageSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return MessageNested.decode(readValue(buffer)! as List); + + case 129: + return MessageSearchReply.decode(readValue(buffer)! as List); + + case 130: + return MessageSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - +/// This comment is to test api documentation comments. abstract class TestNestedApi { static const MessageCodec codec = _TestNestedApiCodec(); + /// This comment is to test method documentation comments. + /// + /// This comment also tests multiple line comments. MessageSearchReply search(MessageNested nested); static void setup(TestNestedApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); final List args = (message as List?)!; final MessageNested? arg_nested = (args[0] as MessageNested?); - assert(arg_nested != null, - 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); + assert(arg_nested != null, 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); final MessageSearchReply output = api.search(arg_nested!); - return {'result': output}; + return [output]; }); } } diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart index c3f9fe3a1220..2ffbed9fe1b6 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -43,48 +43,45 @@ class Everything { Map? mapWithObject; Object encode() { - final Map pigeonMap = {}; - pigeonMap['aBool'] = aBool; - pigeonMap['anInt'] = anInt; - pigeonMap['aDouble'] = aDouble; - pigeonMap['aString'] = aString; - pigeonMap['aByteArray'] = aByteArray; - pigeonMap['a4ByteArray'] = a4ByteArray; - pigeonMap['a8ByteArray'] = a8ByteArray; - pigeonMap['aFloatArray'] = aFloatArray; - pigeonMap['aList'] = aList; - pigeonMap['aMap'] = aMap; - pigeonMap['nestedList'] = nestedList; - pigeonMap['mapWithAnnotations'] = mapWithAnnotations; - pigeonMap['mapWithObject'] = mapWithObject; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(aBool); + pigeonList.add(anInt); + pigeonList.add(aDouble); + pigeonList.add(aString); + pigeonList.add(aByteArray); + pigeonList.add(a4ByteArray); + pigeonList.add(a8ByteArray); + pigeonList.add(aFloatArray); + pigeonList.add(aList); + pigeonList.add(aMap); + pigeonList.add(nestedList); + pigeonList.add(mapWithAnnotations); + pigeonList.add(mapWithObject); + return [pigeonList]; } static Everything decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return Everything( - aBool: pigeonMap['aBool'] as bool?, - anInt: pigeonMap['anInt'] as int?, - aDouble: pigeonMap['aDouble'] as double?, - aString: pigeonMap['aString'] as String?, - aByteArray: pigeonMap['aByteArray'] as Uint8List?, - a4ByteArray: pigeonMap['a4ByteArray'] as Int32List?, - a8ByteArray: pigeonMap['a8ByteArray'] as Int64List?, - aFloatArray: pigeonMap['aFloatArray'] as Float64List?, - aList: pigeonMap['aList'] as List?, - aMap: pigeonMap['aMap'] as Map?, - nestedList: - (pigeonMap['nestedList'] as List?)?.cast?>(), - mapWithAnnotations: - (pigeonMap['mapWithAnnotations'] as Map?) - ?.cast(), - mapWithObject: (pigeonMap['mapWithObject'] as Map?) - ?.cast(), + aBool: result[0] as bool?, + anInt: result[1] as int?, + aDouble: result[2] as double?, + aString: result[3] as String?, + aByteArray: result[4] as Uint8List?, + a4ByteArray: result[5] as Int32List?, + a8ByteArray: result[6] as Int64List?, + aFloatArray: result[7] as Float64List?, + aList: result[8] as List?, + aMap: result[9] as Map?, + nestedList: (result[10] as List?)?.cast?>(), + mapWithAnnotations: (result[11] as Map?)?.cast(), + mapWithObject: (result[12] as Map?)?.cast(), ); } } -class _HostEverythingCodec extends StandardMessageCodec { +class _HostEverythingCodec extends StandardMessageCodec{ const _HostEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -95,15 +92,15 @@ class _HostEverythingCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return Everything.decode(readValue(buffer)!); - - default: + case 128: + return Everything.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } @@ -112,73 +109,65 @@ class HostEverything { /// Constructor for [HostEverything]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - HostEverything({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + HostEverything({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _HostEverythingCodec(); Future giveMeEverything() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as Everything?)!; + return (replyList[0] as Everything?)!; } } Future echo(Everything arg_everything) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.echo', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_everything]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.HostEverything.echo', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_everything]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as Everything?)!; + return (replyList[0] as Everything?)!; } } } -class _FlutterEverythingCodec extends StandardMessageCodec { +class _FlutterEverythingCodec extends StandardMessageCodec{ const _FlutterEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -189,30 +178,27 @@ class _FlutterEverythingCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return Everything.decode(readValue(buffer)!); - - default: + case 128: + return Everything.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - abstract class FlutterEverything { static const MessageCodec codec = _FlutterEverythingCodec(); Everything giveMeEverything(); Everything echo(Everything everything); - static void setup(FlutterEverything? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(FlutterEverything? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -225,18 +211,15 @@ abstract class FlutterEverything { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.echo', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.echo', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); final List args = (message as List?)!; final Everything? arg_everything = (args[0] as Everything?); - assert(arg_everything != null, - 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); + assert(arg_everything != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); final Everything output = api.echo(arg_everything!); return output; }); 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 33f8c04a02ab..f17a5a43e0ea 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 @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -11,78 +11,61 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; -class _MultipleArityHostApiCodec extends StandardMessageCodec { - const _MultipleArityHostApiCodec(); -} class MultipleArityHostApi { /// Constructor for [MultipleArityHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MultipleArityHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + MultipleArityHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = _MultipleArityHostApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); Future subtract(int arg_x, int arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MultipleArityHostApi.subtract', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_x, arg_y]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.MultipleArityHostApi.subtract', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_x, arg_y]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as int?)!; + return (replyList[0] as int?)!; } } } -class _MultipleArityFlutterApiCodec extends StandardMessageCodec { - const _MultipleArityFlutterApiCodec(); -} - abstract class MultipleArityFlutterApi { - static const MessageCodec codec = _MultipleArityFlutterApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); int subtract(int x, int y); - static void setup(MultipleArityFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(MultipleArityFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); - assert(arg_x != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + assert(arg_x != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int? arg_y = (args[1] as int?); - assert(arg_y != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + assert(arg_y != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int output = api.subtract(arg_x!, arg_y!); return output; }); 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 0ef5ab0b3d53..050dba4c1452 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 @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -24,15 +24,16 @@ class NonNullFieldSearchRequest { String query; Object encode() { - final Map pigeonMap = {}; - pigeonMap['query'] = query; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(query); + return [pigeonList]; } static NonNullFieldSearchRequest decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return NonNullFieldSearchRequest( - query: pigeonMap['query']! as String, + query: result[0]! as String, ); } } @@ -47,17 +48,18 @@ class ExtraData { String detailB; Object encode() { - final Map pigeonMap = {}; - pigeonMap['detailA'] = detailA; - pigeonMap['detailB'] = detailB; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(detailA); + pigeonList.add(detailB); + return [pigeonList]; } static ExtraData decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return ExtraData( - detailA: pigeonMap['detailA']! as String, - detailB: pigeonMap['detailB']! as String, + detailA: result[0]! as String, + detailB: result[1]! as String, ); } } @@ -78,28 +80,31 @@ class NonNullFieldSearchReply { ReplyType type; Object encode() { - final Map pigeonMap = {}; - pigeonMap['result'] = result; - pigeonMap['error'] = error; - pigeonMap['indices'] = indices; - pigeonMap['extraData'] = extraData.encode(); - pigeonMap['type'] = type.index; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(result); + pigeonList.add(error); + pigeonList.add(indices); + pigeonList.add(extraData.encode()); + pigeonList.add(type.index); + return [pigeonList]; } static NonNullFieldSearchReply decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return NonNullFieldSearchReply( - result: pigeonMap['result']! as String, - error: pigeonMap['error']! as String, - indices: (pigeonMap['indices'] as List?)!.cast(), - extraData: ExtraData.decode(pigeonMap['extraData']!), - type: ReplyType.values[pigeonMap['type']! as int], + result: result[0]! as String, + error: result[1]! as String, + indices: (result[2] as List?)!.cast(), + extraData: ExtraData.decode(result[3]! as List) +, + type: ReplyType.values[result[4]! as int] +, ); } } -class _NonNullFieldHostApiCodec extends StandardMessageCodec { +class _NonNullFieldHostApiCodec extends StandardMessageCodec{ const _NonNullFieldHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -116,21 +121,21 @@ class _NonNullFieldHostApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return ExtraData.decode(readValue(buffer)!); - - case 129: - return NonNullFieldSearchReply.decode(readValue(buffer)!); - - case 130: - return NonNullFieldSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return ExtraData.decode(readValue(buffer)! as List); + + case 129: + return NonNullFieldSearchReply.decode(readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } @@ -139,45 +144,39 @@ class NonNullFieldHostApi { /// Constructor for [NonNullFieldHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NonNullFieldHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + NonNullFieldHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _NonNullFieldHostApiCodec(); - Future search( - NonNullFieldSearchRequest arg_nested) async { + Future search(NonNullFieldSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_nested]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_nested]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as NonNullFieldSearchReply?)!; + return (replyList[0] as NonNullFieldSearchReply?)!; } } } -class _NonNullFieldFlutterApiCodec extends StandardMessageCodec { +class _NonNullFieldFlutterApiCodec extends StandardMessageCodec{ const _NonNullFieldFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -194,46 +193,40 @@ class _NonNullFieldFlutterApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return ExtraData.decode(readValue(buffer)!); - - case 129: - return NonNullFieldSearchReply.decode(readValue(buffer)!); - - case 130: - return NonNullFieldSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return ExtraData.decode(readValue(buffer)! as List); + + case 129: + return NonNullFieldSearchReply.decode(readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - abstract class NonNullFieldFlutterApi { static const MessageCodec codec = _NonNullFieldFlutterApiCodec(); NonNullFieldSearchReply search(NonNullFieldSearchRequest request); - static void setup(NonNullFieldFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NonNullFieldFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); final List args = (message as List?)!; - final NonNullFieldSearchRequest? arg_request = - (args[0] as NonNullFieldSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); + final NonNullFieldSearchRequest? arg_request = (args[0] as NonNullFieldSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); final NonNullFieldSearchReply output = api.search(arg_request!); return output; }); 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 1e5593abcb33..46a3005ec530 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 @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -26,17 +26,18 @@ class NullFieldsSearchRequest { int identifier; Object encode() { - final Map pigeonMap = {}; - pigeonMap['query'] = query; - pigeonMap['identifier'] = identifier; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(query); + pigeonList.add(identifier); + return [pigeonList]; } static NullFieldsSearchRequest decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return NullFieldsSearchRequest( - query: pigeonMap['query'] as String?, - identifier: pigeonMap['identifier']! as int, + query: result[0] as String?, + identifier: result[1]! as int, ); } } @@ -57,32 +58,33 @@ class NullFieldsSearchReply { NullFieldsSearchReplyType? type; Object encode() { - final Map pigeonMap = {}; - pigeonMap['result'] = result; - pigeonMap['error'] = error; - pigeonMap['indices'] = indices; - pigeonMap['request'] = request?.encode(); - pigeonMap['type'] = type?.index; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(result); + pigeonList.add(error); + pigeonList.add(indices); + pigeonList.add(request?.encode()); + pigeonList.add(type?.index); + return [pigeonList]; } static NullFieldsSearchReply decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return NullFieldsSearchReply( - result: pigeonMap['result'] as String?, - error: pigeonMap['error'] as String?, - indices: (pigeonMap['indices'] as List?)?.cast(), - request: pigeonMap['request'] != null - ? NullFieldsSearchRequest.decode(pigeonMap['request']!) + result: result[0] as String?, + error: result[1] as String?, + indices: (result[2] as List?)?.cast(), + request: result[3] != null + ? NullFieldsSearchRequest.decode(result[3]! as List) : null, - type: pigeonMap['type'] != null - ? NullFieldsSearchReplyType.values[pigeonMap['type']! as int] + type: result[4] != null + ? NullFieldsSearchReplyType.values[result[4]! as int] : null, ); } } -class _NullFieldsHostApiCodec extends StandardMessageCodec { +class _NullFieldsHostApiCodec extends StandardMessageCodec{ const _NullFieldsHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -96,18 +98,18 @@ class _NullFieldsHostApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode(readValue(buffer)!); - - case 129: - return NullFieldsSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return NullFieldsSearchReply.decode(readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } @@ -116,45 +118,39 @@ class NullFieldsHostApi { /// Constructor for [NullFieldsHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullFieldsHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + NullFieldsHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _NullFieldsHostApiCodec(); - Future search( - NullFieldsSearchRequest arg_nested) async { + Future search(NullFieldsSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_nested]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_nested]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as NullFieldsSearchReply?)!; + return (replyList[0] as NullFieldsSearchReply?)!; } } } -class _NullFieldsFlutterApiCodec extends StandardMessageCodec { +class _NullFieldsFlutterApiCodec extends StandardMessageCodec{ const _NullFieldsFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -168,43 +164,37 @@ class _NullFieldsFlutterApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode(readValue(buffer)!); - - case 129: - return NullFieldsSearchRequest.decode(readValue(buffer)!); - - default: + case 128: + return NullFieldsSearchReply.decode(readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - abstract class NullFieldsFlutterApi { static const MessageCodec codec = _NullFieldsFlutterApiCodec(); NullFieldsSearchReply search(NullFieldsSearchRequest request); - static void setup(NullFieldsFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullFieldsFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); final List args = (message as List?)!; - final NullFieldsSearchRequest? arg_request = - (args[0] as NullFieldsSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); + final NullFieldsSearchRequest? arg_request = (args[0] as NullFieldsSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); final NullFieldsSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart index b5e42c90d88f..932faa924d3b 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -19,15 +19,16 @@ class FlutterSearchRequest { String? query; Object encode() { - final Map pigeonMap = {}; - pigeonMap['query'] = query; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(query); + return [pigeonList]; } static FlutterSearchRequest decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return FlutterSearchRequest( - query: pigeonMap['query'] as String?, + query: result[0] as String?, ); } } @@ -42,17 +43,18 @@ class FlutterSearchReply { String? error; Object encode() { - final Map pigeonMap = {}; - pigeonMap['result'] = result; - pigeonMap['error'] = error; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(result); + pigeonList.add(error); + return [pigeonList]; } static FlutterSearchReply decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return FlutterSearchReply( - result: pigeonMap['result'] as String?, - error: pigeonMap['error'] as String?, + result: result[0] as String?, + error: result[1] as String?, ); } } @@ -65,15 +67,16 @@ class FlutterSearchRequests { List? requests; Object encode() { - final Map pigeonMap = {}; - pigeonMap['requests'] = requests; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(requests); + return [pigeonList]; } static FlutterSearchRequests decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return FlutterSearchRequests( - requests: pigeonMap['requests'] as List?, + requests: result[0] as List?, ); } } @@ -86,20 +89,21 @@ class FlutterSearchReplies { List? replies; Object encode() { - final Map pigeonMap = {}; - pigeonMap['replies'] = replies; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(replies); + return [pigeonList]; } static FlutterSearchReplies decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return FlutterSearchReplies( - replies: pigeonMap['replies'] as List?, + replies: result[0] as List?, ); } } -class _ApiCodec extends StandardMessageCodec { +class _ApiCodec extends StandardMessageCodec{ const _ApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -119,24 +123,24 @@ class _ApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return FlutterSearchReplies.decode(readValue(buffer)!); - - case 129: - return FlutterSearchReply.decode(readValue(buffer)!); - - case 130: - return FlutterSearchRequest.decode(readValue(buffer)!); - - case 131: - return FlutterSearchRequests.decode(readValue(buffer)!); - - default: + case 128: + return FlutterSearchReplies.decode(readValue(buffer)! as List); + + case 129: + return FlutterSearchReply.decode(readValue(buffer)! as List); + + case 130: + return FlutterSearchRequest.decode(readValue(buffer)! as List); + + case 131: + return FlutterSearchRequests.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } @@ -146,125 +150,111 @@ class Api { /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. Api({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; - final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _ApiCodec(); Future search(FlutterSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.search', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_request]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.Api.search', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_request]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as FlutterSearchReply?)!; + return (replyList[0] as FlutterSearchReply?)!; } } - Future doSearches( - FlutterSearchRequests arg_request) async { + Future doSearches(FlutterSearchRequests arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.doSearches', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_request]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.Api.doSearches', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_request]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as FlutterSearchReplies?)!; + return (replyList[0] as FlutterSearchReplies?)!; } } Future echo(FlutterSearchRequests arg_requests) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.echo', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_requests]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.Api.echo', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_requests]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as FlutterSearchRequests?)!; + return (replyList[0] as FlutterSearchRequests?)!; } } Future anInt(int arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.anInt', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.Api.anInt', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as int?)!; + return (replyList[0] as int?)!; } } } 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 6d315e6669c7..87cb54ac7a6d 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 @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -11,60 +11,46 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; -class _NullableReturnHostApiCodec extends StandardMessageCodec { - const _NullableReturnHostApiCodec(); -} class NullableReturnHostApi { /// Constructor for [NullableReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableReturnHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + NullableReturnHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = _NullableReturnHostApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); Future doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { - return (replyMap['result'] as int?); + return (replyList[0] as int?); } } } -class _NullableReturnFlutterApiCodec extends StandardMessageCodec { - const _NullableReturnFlutterApiCodec(); -} - abstract class NullableReturnFlutterApi { - static const MessageCodec codec = _NullableReturnFlutterApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); int? doit(); - static void setup(NullableReturnFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullableReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -78,71 +64,56 @@ abstract class NullableReturnFlutterApi { } } -class _NullableArgHostApiCodec extends StandardMessageCodec { - const _NullableArgHostApiCodec(); -} class NullableArgHostApi { /// Constructor for [NullableArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableArgHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + NullableArgHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = _NullableArgHostApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); Future doit(int? arg_x) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableArgHostApi.doit', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_x]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.NullableArgHostApi.doit', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_x]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as int?)!; + return (replyList[0] as int?)!; } } } -class _NullableArgFlutterApiCodec extends StandardMessageCodec { - const _NullableArgFlutterApiCodec(); -} - abstract class NullableArgFlutterApi { - static const MessageCodec codec = _NullableArgFlutterApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); int doit(int? x); - static void setup(NullableArgFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullableArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); final int output = api.doit(arg_x); @@ -153,62 +124,46 @@ abstract class NullableArgFlutterApi { } } -class _NullableCollectionReturnHostApiCodec extends StandardMessageCodec { - const _NullableCollectionReturnHostApiCodec(); -} class NullableCollectionReturnHostApi { /// Constructor for [NullableCollectionReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableCollectionReturnHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + NullableCollectionReturnHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = - _NullableCollectionReturnHostApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); Future?> doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { - return (replyMap['result'] as List?)?.cast(); + return (replyList[0] as List?)?.cast(); } } } -class _NullableCollectionReturnFlutterApiCodec extends StandardMessageCodec { - const _NullableCollectionReturnFlutterApiCodec(); -} - abstract class NullableCollectionReturnFlutterApi { - static const MessageCodec codec = - _NullableCollectionReturnFlutterApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); List? doit(); - static void setup(NullableCollectionReturnFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullableCollectionReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -222,76 +177,58 @@ abstract class NullableCollectionReturnFlutterApi { } } -class _NullableCollectionArgHostApiCodec extends StandardMessageCodec { - const _NullableCollectionArgHostApiCodec(); -} class NullableCollectionArgHostApi { /// Constructor for [NullableCollectionArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableCollectionArgHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + NullableCollectionArgHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = - _NullableCollectionArgHostApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); Future> doit(List? arg_x) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_x]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_x]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as List?)!.cast(); + return (replyList[0] as List?)!.cast(); } } } -class _NullableCollectionArgFlutterApiCodec extends StandardMessageCodec { - const _NullableCollectionArgFlutterApiCodec(); -} - abstract class NullableCollectionArgFlutterApi { - static const MessageCodec codec = - _NullableCollectionArgFlutterApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); List doit(List? x); - static void setup(NullableCollectionArgFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullableCollectionArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); final List args = (message as List?)!; - final List? arg_x = - (args[0] as List?)?.cast(); + final List? arg_x = (args[0] as List?)?.cast(); final List output = api.doit(arg_x); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart index e0a8455144c5..2dffbdd627e7 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.0.2), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -11,290 +11,253 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; -class _PrimitiveHostApiCodec extends StandardMessageCodec { - const _PrimitiveHostApiCodec(); -} class PrimitiveHostApi { /// Constructor for [PrimitiveHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - PrimitiveHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - + PrimitiveHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = _PrimitiveHostApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); Future anInt(int arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.anInt', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.anInt', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as int?)!; + return (replyList[0] as int?)!; } } Future aBool(bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aBool', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.aBool', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as bool?)!; + return (replyList[0] as bool?)!; } } Future aString(String arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aString', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.aString', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as String?)!; + return (replyList[0] as String?)!; } } Future aDouble(double arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aDouble', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.aDouble', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as double?)!; + return (replyList[0] as double?)!; } } Future> aMap(Map arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aMap', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.aMap', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as Map?)!; + return (replyList[0] as Map?)!; } } Future> aList(List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aList', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.aList', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as List?)!; + return (replyList[0] as List?)!; } } Future anInt32List(Int32List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.anInt32List', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.anInt32List', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as Int32List?)!; + return (replyList[0] as Int32List?)!; } } Future> aBoolList(List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aBoolList', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.aBoolList', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as List?)!.cast(); + return (replyList[0] as List?)!.cast(); } } Future> aStringIntMap(Map arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aStringIntMap', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_value]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.PrimitiveHostApi.aStringIntMap', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_value]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as Map?)! - .cast(); + return (replyList[0] as Map?)!.cast(); } } } -class _PrimitiveFlutterApiCodec extends StandardMessageCodec { - const _PrimitiveFlutterApiCodec(); -} - abstract class PrimitiveFlutterApi { - static const MessageCodec codec = _PrimitiveFlutterApiCodec(); + static const MessageCodec codec = StandardMessageCodec(); int anInt(int value); bool aBool(bool value); @@ -305,22 +268,18 @@ abstract class PrimitiveFlutterApi { Int32List anInt32List(Int32List value); List aBoolList(List value); Map aStringIntMap(Map value); - static void setup(PrimitiveFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(PrimitiveFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); final List args = (message as List?)!; final int? arg_value = (args[0] as int?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); final int output = api.anInt(arg_value!); return output; }); @@ -328,18 +287,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aBool', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aBool', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); final List args = (message as List?)!; final bool? arg_value = (args[0] as bool?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); final bool output = api.aBool(arg_value!); return output; }); @@ -347,18 +303,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aString', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aString', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); final List args = (message as List?)!; final String? arg_value = (args[0] as String?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); final String output = api.aString(arg_value!); return output; }); @@ -366,18 +319,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aDouble', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aDouble', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); final List args = (message as List?)!; final double? arg_value = (args[0] as double?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); final double output = api.aDouble(arg_value!); return output; }); @@ -385,19 +335,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aMap', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aMap', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); final List args = (message as List?)!; - final Map? arg_value = - (args[0] as Map?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); + final Map? arg_value = (args[0] as Map?); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); final Map output = api.aMap(arg_value!); return output; }); @@ -405,18 +351,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aList', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aList', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); final List args = (message as List?)!; final List? arg_value = (args[0] as List?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); final List output = api.aList(arg_value!); return output; }); @@ -424,18 +367,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); final List args = (message as List?)!; final Int32List? arg_value = (args[0] as Int32List?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); final Int32List output = api.anInt32List(arg_value!); return output; }); @@ -443,19 +383,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); final List args = (message as List?)!; - final List? arg_value = - (args[0] as List?)?.cast(); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); + final List? arg_value = (args[0] as List?)?.cast(); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); final List output = api.aBoolList(arg_value!); return output; }); @@ -463,19 +399,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); final List args = (message as List?)!; - final Map? arg_value = - (args[0] as Map?)?.cast(); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); + final Map? arg_value = (args[0] as Map?)?.cast(); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); final Map output = api.aStringIntMap(arg_value!); return output; }); diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/Flutter/AppFrameworkInfo.plist b/packages/pigeon/platform_tests/ios_unit_tests/ios/Flutter/AppFrameworkInfo.plist index f2872cf474ee..4f8d4d2456f3 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 11.0 diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/Runner.xcodeproj/project.pbxproj b/packages/pigeon/platform_tests/ios_unit_tests/ios/Runner.xcodeproj/project.pbxproj index 94e52888c280..e71eaa77afee 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -371,6 +371,7 @@ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -385,6 +386,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -585,7 +587,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -664,7 +666,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -713,7 +715,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/packages/pigeon/platform_tests/ios_unit_tests/ios/Runner/Info.plist b/packages/pigeon/platform_tests/ios_unit_tests/ios/Runner/Info.plist index db82370fd76b..83d943534283 100644 --- a/packages/pigeon/platform_tests/ios_unit_tests/ios/Runner/Info.plist +++ b/packages/pigeon/platform_tests/ios_unit_tests/ios/Runner/Info.plist @@ -43,5 +43,7 @@ CADisableMinimumFrameDurationOnPhone + UIApplicationSupportsIndirectInputEvents + From 300dae6c53563ba4edc20b32932bab05958079fe Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 22 Nov 2022 21:20:23 -0800 Subject: [PATCH 20/55] format and analyze again --- .../mock_handler_tester/test/message.dart | 86 +++++++----- .../pigeon/mock_handler_tester/test/test.dart | 61 +++++---- .../lib/all_datatypes.dart | 56 ++++---- .../lib/multiple_arity.gen.dart | 24 ++-- .../lib/non_null_fields.gen.dart | 81 ++++++----- .../lib/null_fields.gen.dart | 67 ++++++---- .../lib/null_safe_pigeon.dart | 42 +++--- .../lib/nullable_returns.gen.dart | 69 ++++++---- .../lib/primitive.dart | 126 ++++++++++++------ 9 files changed, 368 insertions(+), 244 deletions(-) diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index 66f5ceb1f344..a0c826ae208d 100644 --- a/packages/pigeon/mock_handler_tester/test/message.dart +++ b/packages/pigeon/mock_handler_tester/test/message.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -36,8 +36,10 @@ class MessageSearchRequest { /// This comment is to test field documentation comments. String? query; + /// This comment is to test field documentation comments. int? anInt; + /// This comment is to test field documentation comments. bool? aBool; @@ -72,8 +74,10 @@ class MessageSearchReply { /// /// This comment also tests multiple line comments. String? result; + /// This comment is to test field documentation comments. String? error; + /// This comment is to test field documentation comments. MessageRequestState? state; @@ -124,7 +128,7 @@ class MessageNested { } } -class _MessageApiCodec extends StandardMessageCodec{ +class _MessageApiCodec extends StandardMessageCodec { const _MessageApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -138,18 +142,18 @@ class _MessageApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -161,7 +165,8 @@ class MessageApi { /// Constructor for [MessageApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + MessageApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageApiCodec(); @@ -171,9 +176,9 @@ class MessageApi { /// This comment also tests multiple line comments. Future initialize() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.MessageApi.initialize', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -193,7 +198,8 @@ class MessageApi { /// This comment is to test method documentation comments. Future search(MessageSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -218,7 +224,7 @@ class MessageApi { } } -class _MessageNestedApiCodec extends StandardMessageCodec{ +class _MessageNestedApiCodec extends StandardMessageCodec { const _MessageNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -235,21 +241,21 @@ class _MessageNestedApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -259,7 +265,8 @@ class MessageNestedApi { /// Constructor for [MessageNestedApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageNestedApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + MessageNestedApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageNestedApiCodec(); @@ -269,7 +276,8 @@ class MessageNestedApi { /// This comment also tests multiple line comments. Future search(MessageNested arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -294,7 +302,7 @@ class MessageNestedApi { } } -class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ +class _MessageFlutterSearchApiCodec extends StandardMessageCodec { const _MessageFlutterSearchApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -308,39 +316,45 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + /// This comment is to test api documentation comments. abstract class MessageFlutterSearchApi { static const MessageCodec codec = _MessageFlutterSearchApiCodec(); /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); - static void setup(MessageFlutterSearchApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(MessageFlutterSearchApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = + (args[0] as MessageSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/mock_handler_tester/test/test.dart b/packages/pigeon/mock_handler_tester/test/test.dart index e105f18518ae..e1a8a091e8a6 100644 --- a/packages/pigeon/mock_handler_tester/test/test.dart +++ b/packages/pigeon/mock_handler_tester/test/test.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -14,7 +14,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'message.dart'; -class _TestHostApiCodec extends StandardMessageCodec{ +class _TestHostApiCodec extends StandardMessageCodec { const _TestHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -28,21 +28,22 @@ class _TestHostApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + /// This comment is to test api documentation comments. /// /// This comment also tests multiple line comments. @@ -53,12 +54,14 @@ abstract class TestHostApi { /// /// This comment also tests multiple line comments. void initialize(); + /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); static void setup(TestHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageApi.initialize', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { @@ -71,15 +74,19 @@ abstract class TestHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = + (args[0] as MessageSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return [output]; }); @@ -88,7 +95,7 @@ abstract class TestHostApi { } } -class _TestNestedApiCodec extends StandardMessageCodec{ +class _TestNestedApiCodec extends StandardMessageCodec { const _TestNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -105,24 +112,25 @@ class _TestNestedApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + /// This comment is to test api documentation comments. abstract class TestNestedApi { static const MessageCodec codec = _TestNestedApiCodec(); @@ -134,15 +142,18 @@ abstract class TestNestedApi { static void setup(TestNestedApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); final List args = (message as List?)!; final MessageNested? arg_nested = (args[0] as MessageNested?); - assert(arg_nested != null, 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); + assert(arg_nested != null, + 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); final MessageSearchReply output = api.search(arg_nested!); return [output]; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart index 2ffbed9fe1b6..ef49419fcc42 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -75,13 +75,15 @@ class Everything { aList: result[8] as List?, aMap: result[9] as Map?, nestedList: (result[10] as List?)?.cast?>(), - mapWithAnnotations: (result[11] as Map?)?.cast(), - mapWithObject: (result[12] as Map?)?.cast(), + mapWithAnnotations: + (result[11] as Map?)?.cast(), + mapWithObject: + (result[12] as Map?)?.cast(), ); } } -class _HostEverythingCodec extends StandardMessageCodec{ +class _HostEverythingCodec extends StandardMessageCodec { const _HostEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -92,15 +94,15 @@ class _HostEverythingCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return Everything.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -109,16 +111,17 @@ class HostEverything { /// Constructor for [HostEverything]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - HostEverything({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + HostEverything({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _HostEverythingCodec(); Future giveMeEverything() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -142,7 +145,8 @@ class HostEverything { Future echo(Everything arg_everything) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.echo', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.HostEverything.echo', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_everything]) as List?; if (replyList == null) { @@ -167,7 +171,7 @@ class HostEverything { } } -class _FlutterEverythingCodec extends StandardMessageCodec{ +class _FlutterEverythingCodec extends StandardMessageCodec { const _FlutterEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -178,27 +182,30 @@ class _FlutterEverythingCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return Everything.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + abstract class FlutterEverything { static const MessageCodec codec = _FlutterEverythingCodec(); Everything giveMeEverything(); Everything echo(Everything everything); - static void setup(FlutterEverything? api, {BinaryMessenger? binaryMessenger}) { + static void setup(FlutterEverything? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -211,15 +218,18 @@ abstract class FlutterEverything { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.echo', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.echo', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); final List args = (message as List?)!; final Everything? arg_everything = (args[0] as Everything?); - assert(arg_everything != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); + assert(arg_everything != null, + 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); final Everything output = api.echo(arg_everything!); return output; }); 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 f17a5a43e0ea..b238d23610d4 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -11,19 +11,20 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class MultipleArityHostApi { /// Constructor for [MultipleArityHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MultipleArityHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + MultipleArityHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future subtract(int arg_x, int arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MultipleArityHostApi.subtract', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MultipleArityHostApi.subtract', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x, arg_y]) as List?; if (replyList == null) { @@ -52,20 +53,25 @@ abstract class MultipleArityFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int subtract(int x, int y); - static void setup(MultipleArityFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(MultipleArityFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); - assert(arg_x != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + assert(arg_x != null, + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int? arg_y = (args[1] as int?); - assert(arg_y != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + assert(arg_y != null, + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int output = api.subtract(arg_x!, arg_y!); return output; }); 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 050dba4c1452..835a6f46ecd0 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -96,15 +96,13 @@ class NonNullFieldSearchReply { result: result[0]! as String, error: result[1]! as String, indices: (result[2] as List?)!.cast(), - extraData: ExtraData.decode(result[3]! as List) -, - type: ReplyType.values[result[4]! as int] -, + extraData: ExtraData.decode(result[3]! as List), + type: ReplyType.values[result[4]! as int], ); } } -class _NonNullFieldHostApiCodec extends StandardMessageCodec{ +class _NonNullFieldHostApiCodec extends StandardMessageCodec { const _NonNullFieldHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -121,21 +119,23 @@ class _NonNullFieldHostApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ExtraData.decode(readValue(buffer)! as List); - - case 129: - return NonNullFieldSearchReply.decode(readValue(buffer)! as List); - - case 130: - return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); - - default: + + case 129: + return NonNullFieldSearchReply.decode( + readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } @@ -144,14 +144,17 @@ class NonNullFieldHostApi { /// Constructor for [NonNullFieldHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NonNullFieldHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NonNullFieldHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _NonNullFieldHostApiCodec(); - Future search(NonNullFieldSearchRequest arg_nested) async { + Future search( + NonNullFieldSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -176,7 +179,7 @@ class NonNullFieldHostApi { } } -class _NonNullFieldFlutterApiCodec extends StandardMessageCodec{ +class _NonNullFieldFlutterApiCodec extends StandardMessageCodec { const _NonNullFieldFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -193,40 +196,48 @@ class _NonNullFieldFlutterApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ExtraData.decode(readValue(buffer)! as List); - - case 129: - return NonNullFieldSearchReply.decode(readValue(buffer)! as List); - - case 130: - return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); - - default: + + case 129: + return NonNullFieldSearchReply.decode( + readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } + abstract class NonNullFieldFlutterApi { static const MessageCodec codec = _NonNullFieldFlutterApiCodec(); NonNullFieldSearchReply search(NonNullFieldSearchRequest request); - static void setup(NonNullFieldFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NonNullFieldFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); final List args = (message as List?)!; - final NonNullFieldSearchRequest? arg_request = (args[0] as NonNullFieldSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); + final NonNullFieldSearchRequest? arg_request = + (args[0] as NonNullFieldSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); final NonNullFieldSearchReply output = api.search(arg_request!); return output; }); 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 46a3005ec530..22efa5e74165 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -84,7 +84,7 @@ class NullFieldsSearchReply { } } -class _NullFieldsHostApiCodec extends StandardMessageCodec{ +class _NullFieldsHostApiCodec extends StandardMessageCodec { const _NullFieldsHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -98,18 +98,20 @@ class _NullFieldsHostApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode(readValue(buffer)! as List); - - case 129: - return NullFieldsSearchRequest.decode(readValue(buffer)! as List); - - default: + case 128: + return NullFieldsSearchReply.decode( + readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } @@ -118,14 +120,17 @@ class NullFieldsHostApi { /// Constructor for [NullFieldsHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullFieldsHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullFieldsHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _NullFieldsHostApiCodec(); - Future search(NullFieldsSearchRequest arg_nested) async { + Future search( + NullFieldsSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -150,7 +155,7 @@ class NullFieldsHostApi { } } -class _NullFieldsFlutterApiCodec extends StandardMessageCodec{ +class _NullFieldsFlutterApiCodec extends StandardMessageCodec { const _NullFieldsFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -164,37 +169,45 @@ class _NullFieldsFlutterApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode(readValue(buffer)! as List); - - case 129: - return NullFieldsSearchRequest.decode(readValue(buffer)! as List); - - default: + case 128: + return NullFieldsSearchReply.decode( + readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } + abstract class NullFieldsFlutterApi { static const MessageCodec codec = _NullFieldsFlutterApiCodec(); NullFieldsSearchReply search(NullFieldsSearchRequest request); - static void setup(NullFieldsFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullFieldsFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); final List args = (message as List?)!; - final NullFieldsSearchRequest? arg_request = (args[0] as NullFieldsSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); + final NullFieldsSearchRequest? arg_request = + (args[0] as NullFieldsSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); final NullFieldsSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart index 932faa924d3b..649a704a5bd2 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -103,7 +103,7 @@ class FlutterSearchReplies { } } -class _ApiCodec extends StandardMessageCodec{ +class _ApiCodec extends StandardMessageCodec { const _ApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -123,24 +123,25 @@ class _ApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return FlutterSearchReplies.decode(readValue(buffer)! as List); - - case 129: + + case 129: return FlutterSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return FlutterSearchRequest.decode(readValue(buffer)! as List); - - case 131: - return FlutterSearchRequests.decode(readValue(buffer)! as List); - - default: + + case 131: + return FlutterSearchRequests.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } @@ -156,7 +157,8 @@ class Api { Future search(FlutterSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -180,9 +182,11 @@ class Api { } } - Future doSearches(FlutterSearchRequests arg_request) async { + Future doSearches( + FlutterSearchRequests arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.doSearches', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.doSearches', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -208,7 +212,8 @@ class Api { Future echo(FlutterSearchRequests arg_requests) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.echo', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.echo', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_requests]) as List?; if (replyList == null) { @@ -234,7 +239,8 @@ class Api { Future anInt(int arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.anInt', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.anInt', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { 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 87cb54ac7a6d..98bf95f7b82b 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -11,21 +11,21 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class NullableReturnHostApi { /// Constructor for [NullableReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableReturnHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullableReturnHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -47,10 +47,12 @@ abstract class NullableReturnFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int? doit(); - static void setup(NullableReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullableReturnFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -64,19 +66,20 @@ abstract class NullableReturnFlutterApi { } } - class NullableArgHostApi { /// Constructor for [NullableArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableArgHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullableArgHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future doit(int? arg_x) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableArgHostApi.doit', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullableArgHostApi.doit', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x]) as List?; if (replyList == null) { @@ -105,15 +108,18 @@ abstract class NullableArgFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int doit(int? x); - static void setup(NullableArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullableArgFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); final int output = api.doit(arg_x); @@ -124,21 +130,21 @@ abstract class NullableArgFlutterApi { } } - class NullableCollectionReturnHostApi { /// Constructor for [NullableCollectionReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableCollectionReturnHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullableCollectionReturnHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future?> doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -160,10 +166,12 @@ abstract class NullableCollectionReturnFlutterApi { static const MessageCodec codec = StandardMessageCodec(); List? doit(); - static void setup(NullableCollectionReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullableCollectionReturnFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -177,19 +185,20 @@ abstract class NullableCollectionReturnFlutterApi { } } - class NullableCollectionArgHostApi { /// Constructor for [NullableCollectionArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableCollectionArgHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullableCollectionArgHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future> doit(List? arg_x) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x]) as List?; if (replyList == null) { @@ -218,17 +227,21 @@ abstract class NullableCollectionArgFlutterApi { static const MessageCodec codec = StandardMessageCodec(); List doit(List? x); - static void setup(NullableCollectionArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullableCollectionArgFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); final List args = (message as List?)!; - final List? arg_x = (args[0] as List?)?.cast(); + final List? arg_x = + (args[0] as List?)?.cast(); final List output = api.doit(arg_x); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart index 2dffbdd627e7..5b4ca4fff189 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.7), 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 @@ -11,19 +11,20 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class PrimitiveHostApi { /// Constructor for [PrimitiveHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - PrimitiveHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + PrimitiveHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future anInt(int arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.anInt', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.anInt', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -49,7 +50,8 @@ class PrimitiveHostApi { Future aBool(bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aBool', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aBool', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -75,7 +77,8 @@ class PrimitiveHostApi { Future aString(String arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aString', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aString', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -101,7 +104,8 @@ class PrimitiveHostApi { Future aDouble(double arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aDouble', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aDouble', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -127,7 +131,8 @@ class PrimitiveHostApi { Future> aMap(Map arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aMap', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aMap', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -153,7 +158,8 @@ class PrimitiveHostApi { Future> aList(List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aList', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aList', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -179,7 +185,8 @@ class PrimitiveHostApi { Future anInt32List(Int32List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.anInt32List', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.anInt32List', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -205,7 +212,8 @@ class PrimitiveHostApi { Future> aBoolList(List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aBoolList', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aBoolList', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -231,7 +239,8 @@ class PrimitiveHostApi { Future> aStringIntMap(Map arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aStringIntMap', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aStringIntMap', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -268,18 +277,22 @@ abstract class PrimitiveFlutterApi { Int32List anInt32List(Int32List value); List aBoolList(List value); Map aStringIntMap(Map value); - static void setup(PrimitiveFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(PrimitiveFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); final List args = (message as List?)!; final int? arg_value = (args[0] as int?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); final int output = api.anInt(arg_value!); return output; }); @@ -287,15 +300,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aBool', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aBool', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); final List args = (message as List?)!; final bool? arg_value = (args[0] as bool?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); final bool output = api.aBool(arg_value!); return output; }); @@ -303,15 +319,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aString', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aString', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); final List args = (message as List?)!; final String? arg_value = (args[0] as String?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); final String output = api.aString(arg_value!); return output; }); @@ -319,15 +338,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aDouble', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aDouble', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); final List args = (message as List?)!; final double? arg_value = (args[0] as double?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); final double output = api.aDouble(arg_value!); return output; }); @@ -335,15 +357,19 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aMap', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aMap', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); final List args = (message as List?)!; - final Map? arg_value = (args[0] as Map?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); + final Map? arg_value = + (args[0] as Map?); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); final Map output = api.aMap(arg_value!); return output; }); @@ -351,15 +377,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aList', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aList', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); final List args = (message as List?)!; final List? arg_value = (args[0] as List?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); final List output = api.aList(arg_value!); return output; }); @@ -367,15 +396,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); final List args = (message as List?)!; final Int32List? arg_value = (args[0] as Int32List?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); final Int32List output = api.anInt32List(arg_value!); return output; }); @@ -383,15 +415,19 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); final List args = (message as List?)!; - final List? arg_value = (args[0] as List?)?.cast(); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); + final List? arg_value = + (args[0] as List?)?.cast(); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); final List output = api.aBoolList(arg_value!); return output; }); @@ -399,15 +435,19 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); final List args = (message as List?)!; - final Map? arg_value = (args[0] as Map?)?.cast(); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); + final Map? arg_value = + (args[0] as Map?)?.cast(); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); final Map output = api.aStringIntMap(arg_value!); return output; }); From b4003b0c5dd996999a55bf146121d70ae307923a Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 23 Nov 2022 16:36:47 -0800 Subject: [PATCH 21/55] a few more test generated files --- .../ios/Flutter/AppFrameworkInfo.plist | 2 +- .../pigeon/e2e_tests/test_objc/ios/Podfile | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 14 +- .../e2e_tests/test_objc/ios/Runner/Info.plist | 2 + .../e2e_tests/test_objc/lib/dartle.dart | 164 +++++++++++------- 5 files changed, 110 insertions(+), 74 deletions(-) diff --git a/packages/pigeon/e2e_tests/test_objc/ios/Flutter/AppFrameworkInfo.plist b/packages/pigeon/e2e_tests/test_objc/ios/Flutter/AppFrameworkInfo.plist index f2872cf474ee..4f8d4d2456f3 100644 --- a/packages/pigeon/e2e_tests/test_objc/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/pigeon/e2e_tests/test_objc/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 11.0 diff --git a/packages/pigeon/e2e_tests/test_objc/ios/Podfile b/packages/pigeon/e2e_tests/test_objc/ios/Podfile index c382d62e4771..5716bd8b6ca2 100644 --- a/packages/pigeon/e2e_tests/test_objc/ios/Podfile +++ b/packages/pigeon/e2e_tests/test_objc/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/packages/pigeon/e2e_tests/test_objc/ios/Runner.xcodeproj/project.pbxproj b/packages/pigeon/e2e_tests/test_objc/ios/Runner.xcodeproj/project.pbxproj index f0e57f3b7744..61dec50adf6d 100644 --- a/packages/pigeon/e2e_tests/test_objc/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pigeon/e2e_tests/test_objc/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -297,11 +297,11 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/e2e/e2e.framework", + "${BUILT_PRODUCTS_DIR}/integration_test/integration_test.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/e2e.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/integration_test.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -310,6 +310,7 @@ }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -324,6 +325,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -536,7 +538,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -618,7 +620,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -667,7 +669,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/packages/pigeon/e2e_tests/test_objc/ios/Runner/Info.plist b/packages/pigeon/e2e_tests/test_objc/ios/Runner/Info.plist index 5b82f096c785..b043d0d0e635 100644 --- a/packages/pigeon/e2e_tests/test_objc/ios/Runner/Info.plist +++ b/packages/pigeon/e2e_tests/test_objc/ios/Runner/Info.plist @@ -43,5 +43,7 @@ CADisableMinimumFrameDurationOnPhone + UIApplicationSupportsIndirectInputEvents + diff --git a/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart b/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart index 3e86aca2e5bd..a0c826ae208d 100644 --- a/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart +++ b/packages/pigeon/e2e_tests/test_objc/lib/dartle.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 (v4.0.2), do not edit directly. +// Autogenerated from Pigeon (v4.2.7), 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 import 'dart:async'; @@ -11,12 +11,22 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; +/// This comment is to test enum documentation comments. +/// +/// This comment also tests multiple line comments. +/// +/// //////////////////////// +/// This comment also tests comments that start with '/' +/// //////////////////////// enum MessageRequestState { pending, success, failure, } +/// This comment is to test class documentation comments. +/// +/// This comment also tests multiple line comments. class MessageSearchRequest { MessageSearchRequest({ this.query, @@ -24,28 +34,35 @@ class MessageSearchRequest { this.aBool, }); + /// This comment is to test field documentation comments. String? query; + + /// This comment is to test field documentation comments. int? anInt; + + /// This comment is to test field documentation comments. bool? aBool; Object encode() { - final Map pigeonMap = {}; - pigeonMap['query'] = query; - pigeonMap['anInt'] = anInt; - pigeonMap['aBool'] = aBool; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(query); + pigeonList.add(anInt); + pigeonList.add(aBool); + return [pigeonList]; } static MessageSearchRequest decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return MessageSearchRequest( - query: pigeonMap['query'] as String?, - anInt: pigeonMap['anInt'] as int?, - aBool: pigeonMap['aBool'] as bool?, + query: result[0] as String?, + anInt: result[1] as int?, + aBool: result[2] as bool?, ); } } +/// This comment is to test class documentation comments. class MessageSearchReply { MessageSearchReply({ this.result, @@ -53,48 +70,59 @@ class MessageSearchReply { this.state, }); + /// This comment is to test field documentation comments. + /// + /// This comment also tests multiple line comments. String? result; + + /// This comment is to test field documentation comments. String? error; + + /// This comment is to test field documentation comments. MessageRequestState? state; Object encode() { - final Map pigeonMap = {}; - pigeonMap['result'] = result; - pigeonMap['error'] = error; - pigeonMap['state'] = state?.index; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(result); + pigeonList.add(error); + pigeonList.add(state?.index); + return [pigeonList]; } static MessageSearchReply decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return MessageSearchReply( - result: pigeonMap['result'] as String?, - error: pigeonMap['error'] as String?, - state: pigeonMap['state'] != null - ? MessageRequestState.values[pigeonMap['state']! as int] + result: result[0] as String?, + error: result[1] as String?, + state: result[2] != null + ? MessageRequestState.values[result[2]! as int] : null, ); } } +/// This comment is to test class documentation comments. class MessageNested { MessageNested({ this.request, }); + /// This comment is to test field documentation comments. MessageSearchRequest? request; Object encode() { - final Map pigeonMap = {}; - pigeonMap['request'] = request?.encode(); - return pigeonMap; + final List pigeonList = []; + pigeonList.add(request?.encode()); + return [pigeonList]; } static MessageNested decode(Object message) { - final Map pigeonMap = message as Map; + message as List; + final List result = message.first! as List; return MessageNested( - request: pigeonMap['request'] != null - ? MessageSearchRequest.decode(pigeonMap['request']!) + request: result[0] != null + ? MessageSearchRequest.decode(result[0]! as List) : null, ); } @@ -119,10 +147,10 @@ class _MessageApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return MessageSearchReply.decode(readValue(buffer)!); + return MessageSearchReply.decode(readValue(buffer)! as List); case 129: - return MessageSearchRequest.decode(readValue(buffer)!); + return MessageSearchRequest.decode(readValue(buffer)! as List); default: return super.readValueOfType(type, buffer); @@ -130,67 +158,68 @@ class _MessageApiCodec extends StandardMessageCodec { } } +/// This comment is to test api documentation comments. +/// +/// This comment also tests multiple line comments. class MessageApi { /// Constructor for [MessageApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. MessageApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; - final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageApiCodec(); + /// This comment is to test documentation comments. + /// + /// This comment also tests multiple line comments. Future initialize() async { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + final List? replyList = await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { return; } } + /// This comment is to test method documentation comments. Future search(MessageSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_request]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_request]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as MessageSearchReply?)!; + return (replyList[0] as MessageSearchReply?)!; } } } @@ -217,13 +246,13 @@ class _MessageNestedApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return MessageNested.decode(readValue(buffer)!); + return MessageNested.decode(readValue(buffer)! as List); case 129: - return MessageSearchReply.decode(readValue(buffer)!); + return MessageSearchReply.decode(readValue(buffer)! as List); case 130: - return MessageSearchRequest.decode(readValue(buffer)!); + return MessageSearchRequest.decode(readValue(buffer)! as List); default: return super.readValueOfType(type, buffer); @@ -231,43 +260,44 @@ class _MessageNestedApiCodec extends StandardMessageCodec { } } +/// This comment is to test api documentation comments. class MessageNestedApi { /// Constructor for [MessageNestedApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. MessageNestedApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; - final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageNestedApiCodec(); + /// This comment is to test method documentation comments. + /// + /// This comment also tests multiple line comments. Future search(MessageNested arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_nested]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_nested]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as MessageSearchReply?)!; + return (replyList[0] as MessageSearchReply?)!; } } } @@ -291,10 +321,10 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return MessageSearchReply.decode(readValue(buffer)!); + return MessageSearchReply.decode(readValue(buffer)! as List); case 129: - return MessageSearchRequest.decode(readValue(buffer)!); + return MessageSearchRequest.decode(readValue(buffer)! as List); default: return super.readValueOfType(type, buffer); @@ -302,9 +332,11 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec { } } +/// This comment is to test api documentation comments. abstract class MessageFlutterSearchApi { static const MessageCodec codec = _MessageFlutterSearchApiCodec(); + /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); static void setup(MessageFlutterSearchApi? api, {BinaryMessenger? binaryMessenger}) { From eb43268321a061495fb0a99149ceb71aaa2adc49 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Sun, 27 Nov 2022 08:58:20 -0500 Subject: [PATCH 22/55] Partial Windows fixes - Fix API call typo. - Fix double nesting of arrays for class serialization. - Replace incorrect emplace calls with push_back. - Start to update unit tests. --- packages/pigeon/lib/cpp_generator.dart | 76 +++++++++---------- .../windows/test/null_fields_test.cpp | 18 ++--- 2 files changed, 45 insertions(+), 49 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 444694a53a4c..394b9b3061c1 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -131,7 +131,7 @@ void _writeCodecSource(Indent indent, Api api, Root root) { indent.scoped('{', '}', () { indent.writeln('stream->WriteByte(${customClass.enumeration});'); indent.writeln( - 'WriteValue(std::any_cast<${customClass.name}>(*custom_value).List(), stream);'); + 'WriteValue(std::any_cast<${customClass.name}>(*custom_value).ToEncodableList(), stream);'); indent.writeln('return;'); }); } @@ -321,42 +321,39 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { .write('flutter::EncodableList ${klass.name}::ToEncodableList() const '); indent.scoped('{', '}', () { indent.scoped('return flutter::EncodableList{', '};', () { - indent.writeScoped('flutter::EncodableList{', '};', () { - for (final NamedType field in klass.fields) { - final HostDatatype hostDatatype = getFieldHostDatatype( - field, - root.classes, - root.enums, - (TypeDeclaration x) => _baseCppTypeForBuiltinDartType(x)); - - final String instanceVariable = _makeInstanceVariableName(field); - - // final String encodableKey = 'flutter::EncodableValue("${field.name}")'; - String encodableValue = ''; - if (!hostDatatype.isBuiltin && - rootClassNameSet.contains(field.type.baseName)) { - final String operator = field.type.isNullable ? '->' : '.'; - encodableValue = '$instanceVariable${operator}ToEncodableList()'; - } else if (!hostDatatype.isBuiltin && - rootEnumNameSet.contains(field.type.baseName)) { - final String nonNullValue = field.type.isNullable - ? '(*$instanceVariable)' - : instanceVariable; - encodableValue = 'flutter::EncodableValue((int)$nonNullValue)'; - } else { - final String operator = field.type.isNullable ? '*' : ''; - encodableValue = - 'flutter::EncodableValue($operator$instanceVariable)'; - } + for (final NamedType field in klass.fields) { + final HostDatatype hostDatatype = getFieldHostDatatype( + field, + root.classes, + root.enums, + (TypeDeclaration x) => _baseCppTypeForBuiltinDartType(x)); - if (field.type.isNullable) { - encodableValue = - '$instanceVariable ? $encodableValue : flutter::EncodableValue()'; - } + final String instanceVariable = _makeInstanceVariableName(field); - indent.writeln('{$encodableValue},'); + // final String encodableKey = 'flutter::EncodableValue("${field.name}")'; + String encodableValue = ''; + if (!hostDatatype.isBuiltin && + rootClassNameSet.contains(field.type.baseName)) { + final String operator = field.type.isNullable ? '->' : '.'; + encodableValue = '$instanceVariable${operator}ToEncodableList()'; + } else if (!hostDatatype.isBuiltin && + rootEnumNameSet.contains(field.type.baseName)) { + final String nonNullValue = + field.type.isNullable ? '(*$instanceVariable)' : instanceVariable; + encodableValue = 'flutter::EncodableValue((int)$nonNullValue)'; + } else { + final String operator = field.type.isNullable ? '*' : ''; + encodableValue = + 'flutter::EncodableValue($operator$instanceVariable)'; } - }); + + if (field.type.isNullable) { + encodableValue = + '$instanceVariable ? $encodableValue : flutter::EncodableValue()'; + } + + indent.writeln('{$encodableValue},'); + } }); }); indent.addln(''); @@ -366,9 +363,8 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { indent.addln(''); // Deserialization. - indent.write('${klass.name}::${klass.name}(flutter::EncodableList wrapped) '); + indent.write('${klass.name}::${klass.name}(flutter::EncodableList list) '); indent.scoped('{', '}', () { - indent.writeln('flutter::EncodeableList list = wrapped.front();'); klass.fields.toList().asMap().forEach((int index, final NamedType field) { final String instanceVariableName = _makeInstanceVariableName(field); final String pointerFieldName = @@ -612,7 +608,7 @@ const flutter::StandardMessageCodec& ${api.name}::GetCodec() { const String nullValue = 'flutter::EncodableValue()'; if (returnType.isVoid) { elseBody = - '$prefix\twrapped.emplace($nullValue);${indent.newline}'; + '$prefix\twrapped.push_back($nullValue);${indent.newline}'; ifCondition = 'output.has_value()'; errorGetter = 'value'; } else { @@ -631,13 +627,13 @@ const flutter::StandardMessageCodec& ${api.name}::GetCodec() { elseBody = ''' $prefix\tauto output_optional = $extractedValue; $prefix\tif (output_optional) { -$prefix\t\twrapped.emplace($wrapperType(std::move(output_optional).value())); +$prefix\t\twrapped.push_back($wrapperType(std::move(output_optional).value())); $prefix\t} else { -$prefix\t\twrapped.emplace($nullValue); +$prefix\t\twrapped.push_back($nullValue); $prefix\t}${indent.newline}'''; } else { elseBody = - '$prefix\twrapped.emplace($wrapperType($extractedValue));${indent.newline}'; + '$prefix\twrapped.push_back($wrapperType($extractedValue));${indent.newline}'; } ifCondition = 'output.has_error()'; errorGetter = 'error'; diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index d576fc79b0c2..ced920444de7 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -36,22 +36,22 @@ const T* ExpectAndGet(const EncodableMap& map, const std::string& key) { class NullFieldsTest : public ::testing::Test { protected: - // Wrapper for access to private NullFieldsSearchRequest map constructor. - NullFieldsSearchRequest RequestFromMap(const EncodableMap& map) { - return NullFieldsSearchRequest(map); + // Wrapper for access to private NullFieldsSearchRequest list constructor. + NullFieldsSearchRequest RequestFromList(const EncodableList& list) { + return NullFieldsSearchRequest(list); } // Wrapper for access to private NullFieldsSearchRequest map constructor. - NullFieldsSearchReply ReplyFromMap(const EncodableMap& map) { - return NullFieldsSearchReply(map); + NullFieldsSearchReply ReplyFromMap(const EncodableList& list) { + return NullFieldsSearchReply(list); } // Wrapper for access to private NullFieldsSearchRequest::ToEncodableMap. - EncodableMap MapFromRequest(const NullFieldsSearchRequest& request) { - return request.ToEncodableMap(); + EncodableList ListFromRequest(const NullFieldsSearchRequest& request) { + return request.ToEncodableList(); } // Wrapper for access to private NullFieldsSearchRequest map constructor. - EncodableMap MapFromReply(const NullFieldsSearchReply& reply) { - return reply.ToEncodableMap(); + EncodableList ListFromReply(const NullFieldsSearchReply& reply) { + return reply.ToEncodableList(); } }; From 0b498cc2140f3f5e2144630cf629feb0573389d6 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 28 Nov 2022 20:03:56 -0800 Subject: [PATCH 23/55] null field tests c++ --- .../windows/test/null_fields_test.cpp | 158 +++++++++--------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index ced920444de7..d5d76020dfb8 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -15,23 +15,6 @@ using flutter::EncodableList; using flutter::EncodableMap; using flutter::EncodableValue; -// EXPECTs that 'map' contains 'key', and then returns a pointer to its value. -// -// This gives useful test failure messages instead of silent crashes when the -// value isn't present, or has the wrong type. -template -const T* ExpectAndGet(const EncodableMap& map, const std::string& key) { - auto it = map.find(EncodableValue(key)); - EXPECT_TRUE(it != map.end()) << "Could not find value for '" << key << '"'; - if (it == map.end()) { - return nullptr; - } - const T* value_ptr = std::get_if(&(it->second)); - EXPECT_NE(value_ptr, nullptr) - << "Value for '" << key << "' has incorrect type"; - return value_ptr; -} - } // namespace class NullFieldsTest : public ::testing::Test { @@ -41,15 +24,15 @@ class NullFieldsTest : public ::testing::Test { return NullFieldsSearchRequest(list); } - // Wrapper for access to private NullFieldsSearchRequest map constructor. - NullFieldsSearchReply ReplyFromMap(const EncodableList& list) { + // Wrapper for access to private NullFieldsSearchRequest list constructor. + NullFieldsSearchReply ReplyFromList(const EncodableList& list) { return NullFieldsSearchReply(list); } - // Wrapper for access to private NullFieldsSearchRequest::ToEncodableMap. + // Wrapper for access to private NullFieldsSearchRequest::ToEncodableList. EncodableList ListFromRequest(const NullFieldsSearchRequest& request) { return request.ToEncodableList(); } - // Wrapper for access to private NullFieldsSearchRequest map constructor. + // Wrapper for access to private NullFieldsSearchRequest list constructor. EncodableList ListFromReply(const NullFieldsSearchReply& reply) { return reply.ToEncodableList(); } @@ -89,45 +72,45 @@ TEST(NullFields, BuildReplyWithNulls) { EXPECT_EQ(reply.type(), nullptr); } -TEST_F(NullFieldsTest, RequestFromMapWithValues) { - EncodableMap map{ - {EncodableValue("query"), EncodableValue("hello")}, - {EncodableValue("identifier"), EncodableValue(1)}, +TEST_F(NullFieldsTest, RequestFromListWithValues) { + EncodableList list{ + {EncodableValue("hello")}, + {EncodableValue(1)}, }; - NullFieldsSearchRequest request = RequestFromMap(map); + NullFieldsSearchRequest request = RequestFromList(list); EXPECT_EQ(*request.query(), "hello"); EXPECT_EQ(request.identifier(), 1); } -TEST_F(NullFieldsTest, RequestFromMapWithNulls) { - EncodableMap map{ - {EncodableValue("query"), EncodableValue()}, - {EncodableValue("identifier"), EncodableValue(1)}, +TEST_F(NullFieldsTest, RequestFromListWithNulls) { + EncodableList list{ + {EncodableValue()}, + {EncodableValue(1)}, }; - NullFieldsSearchRequest request = RequestFromMap(map); + NullFieldsSearchRequest request = RequestFromList(list); EXPECT_EQ(request.query(), nullptr); EXPECT_EQ(request.identifier(), 1); } -TEST_F(NullFieldsTest, ReplyFromMapWithValues) { - EncodableMap map{ - {EncodableValue("result"), EncodableValue("result")}, - {EncodableValue("error"), EncodableValue("error")}, - {EncodableValue("indices"), EncodableValue(EncodableList{ - EncodableValue(1), - EncodableValue(2), - EncodableValue(3), - })}, - {EncodableValue("request"), - EncodableValue(EncodableMap{ - {EncodableValue("query"), EncodableValue("hello")}, - {EncodableValue("identifier"), EncodableValue(1)}, +TEST_F(NullFieldsTest, ReplyFromListWithValues) { + EncodableList list{ + {EncodableValue("result")}, + {EncodableValue("error")}, + {EncodableValue(EncodableList{ + EncodableValue(1), + EncodableValue(2), + EncodableValue(3), + })}, + { + EncodableValue(EncodableList{ + {EncodableValue("hello")}, + {EncodableValue(1)}, })}, - {EncodableValue("type"), EncodableValue(0)}, + {EncodableValue(0)}, }; - NullFieldsSearchReply reply = ReplyFromMap(map); + NullFieldsSearchReply reply = ReplyFromList(list); EXPECT_EQ(*reply.result(), "result"); EXPECT_EQ(*reply.error(), "error"); @@ -137,15 +120,15 @@ TEST_F(NullFieldsTest, ReplyFromMapWithValues) { EXPECT_EQ(*reply.type(), NullFieldsSearchReplyType::success); } -TEST_F(NullFieldsTest, ReplyFromMapWithNulls) { - EncodableMap map{ - {EncodableValue("result"), EncodableValue()}, - {EncodableValue("error"), EncodableValue()}, - {EncodableValue("indices"), EncodableValue()}, - {EncodableValue("request"), EncodableValue()}, - {EncodableValue("type"), EncodableValue()}, +TEST_F(NullFieldsTest, ReplyFromListWithNulls) { + EncodableList list{ + {EncodableValue()}, + {EncodableValue()}, + {EncodableValue()}, + {EncodableValue()}, + {EncodableValue()}, }; - NullFieldsSearchReply reply = ReplyFromMap(map); + NullFieldsSearchReply reply = ReplyFromList(list); EXPECT_EQ(reply.result(), nullptr); EXPECT_EQ(reply.error(), nullptr); @@ -154,16 +137,20 @@ TEST_F(NullFieldsTest, ReplyFromMapWithNulls) { EXPECT_EQ(reply.type(), nullptr); } -TEST_F(NullFieldsTest, RequestToMapWithValues) { +TEST_F(NullFieldsTest, RequestToListWithValues) { NullFieldsSearchRequest request; request.set_query("hello"); request.set_identifier(1); - EncodableMap map = MapFromRequest(request); + EncodableList wrapped = ListFromRequest(request); + + EXPECT_EQ(wrapped.size(), 1); + + EncodableList list = wrapped[0]; + EXPECT_EQ(list.size(), 2); - EXPECT_EQ(map.size(), 2); - EXPECT_EQ(*ExpectAndGet(map, "query"), "hello"); - EXPECT_EQ(*ExpectAndGet(map, "identifier"), 1); + EXPECT_EQ(list[0], "hello"); + EXPECT_EQ(list[1], 1); } TEST_F(NullFieldsTest, RequestToMapWithNulls) { @@ -171,11 +158,15 @@ TEST_F(NullFieldsTest, RequestToMapWithNulls) { // TODO(gaaclarke): This needs a way to be enforced. request.set_identifier(1); - EncodableMap map = MapFromRequest(request); + EncodableList wrapped = ListFromRequest(request); - EXPECT_EQ(map.size(), 2); - EXPECT_TRUE(map[EncodableValue("hello")].IsNull()); - EXPECT_EQ(*ExpectAndGet(map, "identifier"), 1); + EXPECT_EQ(wrapped.size(), 2); + + EncodableList list = wrapped[0] + + EXPECT_EQ(list.size(), 2); + EXPECT_TRUE(list[0].IsNull()); + EXPECT_EQ(list[1], 1); } TEST_F(NullFieldsTest, ReplyToMapWithValues) { @@ -189,32 +180,41 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { reply.set_request(request); reply.set_type(NullFieldsSearchReplyType::success); - EncodableMap map = MapFromReply(reply); + EncodableList wrapped = ListFromReply(reply); + + EXPECT_EQ(wrapped.size(), 1); - EXPECT_EQ(map.size(), 5); - EXPECT_EQ(*ExpectAndGet(map, "result"), "result"); - EXPECT_EQ(*ExpectAndGet(map, "error"), "error"); - const EncodableList& indices = *ExpectAndGet(map, "indices"); + EncodableList list = wrapped[0]; + + EXPECT_EQ(list.size(), 5); + EXPECT_EQ(list[0], "result"); + EXPECT_EQ(list[1], "error"); + const EncodableList& indices = list[2]; EXPECT_EQ(indices.size(), 3); EXPECT_EQ(indices[0].LongValue(), 1L); EXPECT_EQ(indices[1].LongValue(), 2L); EXPECT_EQ(indices[2].LongValue(), 3L); - const EncodableMap& request_map = *ExpectAndGet(map, "request"); - EXPECT_EQ(*ExpectAndGet(request_map, "query"), "hello"); - EXPECT_EQ(*ExpectAndGet(map, "type"), 0); + const EncodableList& wrapped_request_list = list[4]; + const EncodableList& request_list = wrapped_request_list[0] + EXPECT_EQ(request_list[0], "hello"); + EXPECT_EQ(request_list[1], 0); } -TEST_F(NullFieldsTest, ReplyToMapWithNulls) { +TEST_F(NullFieldsTest, ReplyToListWithNulls) { NullFieldsSearchReply reply; - EncodableMap map = MapFromReply(reply); + EncodableList unwrapped = ListFromReply(reply); + + EXPECT_EQ(unwrapped.size(), 1); + + EncodableList list = wrapped[0]; - EXPECT_EQ(map.size(), 5); - EXPECT_TRUE(map[EncodableValue("result")].IsNull()); - EXPECT_TRUE(map[EncodableValue("error")].IsNull()); - EXPECT_TRUE(map[EncodableValue("indices")].IsNull()); - EXPECT_TRUE(map[EncodableValue("request")].IsNull()); - EXPECT_TRUE(map[EncodableValue("type")].IsNull()); + EXPECT_EQ(list.size(), 5); + EXPECT_TRUE(list[0].IsNull()); + EXPECT_TRUE(list[1].IsNull()); + EXPECT_TRUE(list[2].IsNull()); + EXPECT_TRUE(list[3].IsNull()); + EXPECT_TRUE(list[4].IsNull()); } } // namespace null_fields_pigeontest From dd40057d9b43864cffc224043173fa2dbfdd334d Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 28 Nov 2022 20:25:20 -0800 Subject: [PATCH 24/55] format --- .../windows/test/null_fields_test.cpp | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index 23a712b91659..d3feef1f3b92 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -103,11 +103,10 @@ TEST_F(NullFieldsTest, ReplyFromListWithValues) { EncodableValue(2), EncodableValue(3), })}, - { - EncodableValue(EncodableList{ - {EncodableValue("hello")}, - {EncodableValue(1)}, - })}, + {EncodableValue(EncodableList{ + {EncodableValue("hello")}, + {EncodableValue(1)}, + })}, {EncodableValue(0)}, }; NullFieldsSearchReply reply = ReplyFromList(list); @@ -122,11 +121,8 @@ TEST_F(NullFieldsTest, ReplyFromListWithValues) { TEST_F(NullFieldsTest, ReplyFromListWithNulls) { EncodableList list{ - {EncodableValue()}, - {EncodableValue()}, - {EncodableValue()}, - {EncodableValue()}, - {EncodableValue()}, + {EncodableValue()}, {EncodableValue()}, {EncodableValue()}, + {EncodableValue()}, {EncodableValue()}, }; NullFieldsSearchReply reply = ReplyFromList(list); @@ -164,7 +160,7 @@ TEST_F(NullFieldsTest, RequestToMapWithNulls) { EncodableList list = wrapped[0] - EXPECT_EQ(list.size(), 2); + EXPECT_EQ(list.size(), 2); EXPECT_TRUE(list[0].IsNull()); EXPECT_EQ(list[1], 1); } @@ -195,8 +191,8 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { EXPECT_EQ(indices[1].LongValue(), 2L); EXPECT_EQ(indices[2].LongValue(), 3L); const EncodableList& wrapped_request_list = list[4]; - const EncodableList& request_list = wrapped_request_list[0] - EXPECT_EQ(request_list[0], "hello"); + const EncodableList& request_list = + wrapped_request_list[0] EXPECT_EQ(request_list[0], "hello"); EXPECT_EQ(request_list[1], 0); } From 888c7bc465718591ba1101645c2e74b416db6c7d Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 28 Nov 2022 23:13:55 -0800 Subject: [PATCH 25/55] fix merge issue with broken test --- .../test_plugin/example/ios/RunnerTests/AsyncHandlersTest.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/AsyncHandlersTest.swift b/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/AsyncHandlersTest.swift index 9b9e31ff83f5..a5a4ae7639ab 100644 --- a/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/AsyncHandlersTest.swift +++ b/packages/pigeon/platform_tests/test_plugin/example/ios/RunnerTests/AsyncHandlersTest.swift @@ -43,7 +43,7 @@ class AsyncHandlersTest: XCTestCase { let expectation = XCTestExpectation(description: "voidvoid callback") binaryMessenger.handlers[channelName]?(nil) { data in let outputList = binaryMessenger.codec.decode(data) as? [Any] - XCTAssertNil(outputList?.first) + XCTAssertEqual(outputList?.first as! NSNull, NSNull()) expectation.fulfill() } wait(for: [expectation], timeout: 1.0) From 60aa9fe277760e97d4294694f591b8b7e16d0425 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 29 Nov 2022 22:36:51 -0800 Subject: [PATCH 26/55] remove unneeded wrapping --- packages/pigeon/lib/dart_generator.dart | 8 +- packages/pigeon/lib/java_generator.dart | 17 ++-- packages/pigeon/lib/kotlin_generator.dart | 7 +- .../AllDatatypesTest.java | 8 +- .../EnumTest.java | 2 +- .../NullFieldsTest.java | 61 +++++--------- .../PigeonTest.java | 4 +- .../test/null_fields_test.dart | 84 +++++++------------ .../example/test_plugin/AllDatatypesTest.kt | 10 +-- packages/pigeon/test/java_generator_test.dart | 4 +- .../pigeon/test/kotlin_generator_test.dart | 8 +- 11 files changed, 81 insertions(+), 132 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index e8edb4ffc5c5..8170a86c4a89 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -524,7 +524,7 @@ void generateDart(DartOptions opt, Root root, StringSink sink) { indent.addln('${field.name});'); } } - indent.writeln('return [pigeonList];'); + indent.writeln('return pigeonList;'); }); } @@ -576,12 +576,10 @@ result[$index] != null } indent.write( - 'static ${klass.name} decode(Object message) ', + 'static ${klass.name} decode(Object result) ', ); indent.scoped('{', '}', () { - indent.writeln('message as List;'); - indent.writeln( - 'final List result = message.first! as List;'); + indent.writeln('result as List;'); indent.write('return ${klass.name}'); indent.scoped('(', ');', () { for (int index = 0; index < klass.fields.length; index += 1) { diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index b8d24feb6733..2f31a944eb59 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -115,7 +115,7 @@ void _writeCodec(Indent indent, Api api, Root root) { indent.write('case (byte)${customClass.enumeration}: '); indent.writeScoped('', '', () { indent.writeln( - 'return ${customClass.name}.fromList((ArrayList) readValue(buffer));'); + 'return ${customClass.name}.fromList((ArrayList) readValue(buffer));'); }); } indent.write('default:'); @@ -519,7 +519,7 @@ String _castObject( return '($varName == null) ? null : (($varName instanceof Integer) ? (Integer)$varName : (${hostDatatype.datatype})$varName)'; } else if (!hostDatatype.isBuiltin && classes.map((Class x) => x.name).contains(field.type.baseName)) { - return '($varName == null) ? null : ${hostDatatype.datatype}.fromList((ArrayList)$varName)'; + return '($varName == null) ? null : ${hostDatatype.datatype}.fromList((ArrayList)$varName)'; } else { return '(${hostDatatype.datatype})$varName'; } @@ -622,7 +622,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { } void writeToList() { - indent.write('@NonNull ArrayList toList() '); + indent.write('@NonNull ArrayList toList() '); indent.scoped('{', '}', () { indent.writeln( 'ArrayList toListResult = new ArrayList();'); @@ -645,28 +645,23 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { } indent.writeln('toListResult.add($toWriteValue);'); } - indent.writeln( - 'ArrayList wrapped = new ArrayList();'); - indent.writeln('wrapped.add(toListResult);'); - indent.writeln('return wrapped;'); + indent.writeln('return toListResult;'); }); } void writeFromList() { indent.write( - 'static @NonNull ${klass.name} fromList(@NonNull ArrayList list) '); + 'static @NonNull ${klass.name} fromList(@NonNull ArrayList list) '); indent.scoped('{', '}', () { const String result = 'pigeonResult'; indent.writeln('${klass.name} $result = new ${klass.name}();'); - indent.writeln('ArrayList unwrapped = list.get(0);'); - indent.writeln(''); klass.fields .toList() .asMap() .forEach((int index, final NamedType field) { final String fieldVariable = field.name; final String setter = _makeSetter(field); - indent.writeln('Object $fieldVariable = unwrapped.get($index);'); + indent.writeln('Object $fieldVariable = list.get($index);'); if (rootEnumNameSet.contains(field.type.baseName)) { indent.writeln( '$result.$setter(${_intToEnum(fieldVariable, field.type.baseName)});'); diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index 624fc3cc90f1..fe649149fa60 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -513,7 +513,7 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { } void writeToList() { - indent.write('fun toList(): MutableList> '); + indent.write('fun toList(): MutableList '); indent.scoped('{', '}', () { indent.writeln('val list = mutableListOf()'); @@ -537,7 +537,7 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.writeln('list.add($toWriteValue)'); } } - indent.writeln('return mutableListOf>(list)'); + indent.writeln('return list'); }); } @@ -547,10 +547,9 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.write('companion object '); indent.scoped('{', '}', () { indent.writeln('@Suppress("UNCHECKED_CAST")'); - indent.write('fun fromList(result: List): $className '); + indent.write('fun fromList(list: List): $className '); indent.scoped('{', '}', () { - indent.writeln('val list = result.first() as List'); klass.fields .toList() .asMap() diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java index aa32bbfba354..bd19f7248d5f 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java @@ -136,12 +136,10 @@ public void hasValues() { public void integerToLong() { Everything everything = new Everything(); everything.setAnInt(123L); - ArrayList list = everything.toList(); + ArrayList list = everything.toList(); assertNotNull(list); - ArrayList unwrapped = list.get(0); - assertNotNull(unwrapped); - assertNull(unwrapped.get(0)); - assertNotNull(unwrapped.get(1)); + assertNull(list.get(0)); + assertNotNull(list.get(1)); // list.add(1, 123); Everything readEverything = Everything.fromList(list); assertEquals(readEverything.getAnInt(), everything.getAnInt()); diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/EnumTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/EnumTest.java index 5dbb8c4814b5..37c14be1f990 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/EnumTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/EnumTest.java @@ -14,7 +14,7 @@ public class EnumTest { public void nullValue() { Enum.DataWithEnum value = new Enum.DataWithEnum(); value.setState(null); - ArrayList list = value.toList(); + ArrayList list = value.toList(); Enum.DataWithEnum readValue = Enum.DataWithEnum.fromList(list); assertEquals(value.getState(), readValue.getState()); } diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java index 39084f3a3aba..860e7de136c2 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java @@ -65,10 +65,8 @@ public void requestFromMapWithValues() { ArrayList list = new ArrayList(); list.add("hello"); list.add(1L); - ArrayList wrapped = new ArrayList(); - wrapped.add(list); NullFields.NullFieldsSearchRequest request = - NullFields.NullFieldsSearchRequest.fromList(wrapped); + NullFields.NullFieldsSearchRequest.fromList(list); assertEquals(request.getQuery(), "hello"); } @@ -78,10 +76,8 @@ public void requestFromMapWithNulls() { list.add(null); list.add(1L); - ArrayList wrapped = new ArrayList(); - wrapped.add(list); NullFields.NullFieldsSearchRequest request = - NullFields.NullFieldsSearchRequest.fromList(wrapped); + NullFields.NullFieldsSearchRequest.fromList(list); assertNull(request.getQuery()); } @@ -92,20 +88,15 @@ public void replyFromMapWithValues() { requestList.add("hello"); requestList.add(1L); - ArrayList wrappedRequestList = new ArrayList(); - wrappedRequestList.add(requestList); - ArrayList list = new ArrayList(); list.add("result"); list.add("error"); list.add(Arrays.asList(1L, 2L, 3L)); - list.add(wrappedRequestList); + list.add(requestList); list.add(NullFields.NullFieldsSearchReplyType.SUCCESS.ordinal()); - ArrayList wrapped = new ArrayList(); - wrapped.add(list); - NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromList(wrapped); + NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromList(list); assertEquals(reply.getResult(), "result"); assertEquals(reply.getError(), "error"); assertEquals(reply.getIndices(), Arrays.asList(1L, 2L, 3L)); @@ -123,10 +114,8 @@ public void replyFromMapWithNulls() { list.add(null); list.add(null); - ArrayList wrapped = new ArrayList(); - wrapped.add(list); - NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromList(wrapped); + NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromList(list); assertNull(reply.getResult()); assertNull(reply.getError()); assertNull(reply.getIndices()); @@ -142,10 +131,8 @@ public void requestToMapWithValues() { .setIdentifier(1L) .build(); - ArrayList list = request.toList(); - @SuppressWarnings("unchecked") - ArrayList unwrapped = list.get(0); - assertEquals(unwrapped.get(0), "hello"); + ArrayList list = request.toList(); + assertEquals(list.get(0), "hello"); } @Test @@ -153,10 +140,8 @@ public void requestToMapWithNulls() { NullFields.NullFieldsSearchRequest request = new NullFields.NullFieldsSearchRequest.Builder().setQuery(null).setIdentifier(1L).build(); - ArrayList list = request.toList(); - @SuppressWarnings("unchecked") - ArrayList unwrapped = list.get(0); - assertNull(unwrapped.get(0)); + ArrayList list = request.toList(); + assertNull(list.get(0)); } @Test @@ -174,14 +159,12 @@ public void replyToMapWithValues() { .setType(NullFields.NullFieldsSearchReplyType.SUCCESS) .build(); - ArrayList wrapped = reply.toList(); - @SuppressWarnings("unchecked") - ArrayList unwrapped = wrapped.get(0); - assertEquals(unwrapped.get(0), "result"); - assertEquals(unwrapped.get(1), "error"); - assertEquals(unwrapped.get(2), Arrays.asList(1L, 2L, 3L)); - assertEquals(unwrapped.get(3), reply.getRequest().toList()); - assertEquals(unwrapped.get(4), NullFields.NullFieldsSearchReplyType.SUCCESS.ordinal()); + ArrayList list = reply.toList(); + assertEquals(list.get(0), "result"); + assertEquals(list.get(1), "error"); + assertEquals(list.get(2), Arrays.asList(1L, 2L, 3L)); + assertEquals(list.get(3), reply.getRequest().toList()); + assertEquals(list.get(4), NullFields.NullFieldsSearchReplyType.SUCCESS.ordinal()); } @Test @@ -195,14 +178,12 @@ public void replyToMapWithNulls() { .setType(null) .build(); - ArrayList wrapped = reply.toList(); - @SuppressWarnings("unchecked") - ArrayList unwrapped = wrapped.get(0); + ArrayList list = reply.toList(); - assertNull(unwrapped.get(0)); - assertNull(unwrapped.get(1)); - assertNull(unwrapped.get(2)); - assertNull(unwrapped.get(3)); - assertNull(unwrapped.get(4)); + assertNull(list.get(0)); + assertNull(list.get(1)); + assertNull(list.get(2)); + assertNull(list.get(3)); + assertNull(list.get(4)); } } diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java index 509b61f17e7a..a8a88b190ebc 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/PigeonTest.java @@ -21,7 +21,7 @@ public void toListAndBack() { Pigeon.AndroidSetRequest request = new Pigeon.AndroidSetRequest(); request.setValue(1234l); request.setState(Pigeon.AndroidLoadingState.COMPLETE); - ArrayList list = request.toList(); + ArrayList list = request.toList(); Pigeon.AndroidSetRequest readRequest = Pigeon.AndroidSetRequest.fromList(list); assertEquals(request.getValue(), readRequest.getValue()); assertEquals(request.getState(), readRequest.getState()); @@ -34,7 +34,7 @@ public void toListAndBackNested() { request.setValue(1234l); request.setState(Pigeon.AndroidLoadingState.COMPLETE); nested.setRequest(request); - ArrayList list = nested.toList(); + ArrayList list = nested.toList(); Pigeon.AndroidNestedRequest readNested = Pigeon.AndroidNestedRequest.fromList(list); assertEquals(nested.getRequest().getValue(), readNested.getRequest().getValue()); assertEquals(nested.getRequest().getState(), readNested.getRequest().getState()); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart index a5bdc062980e..ec75a8ea169d 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_fields_test.dart @@ -45,10 +45,8 @@ void main() { test('test request decode with values', () { final NullFieldsSearchRequest request = NullFieldsSearchRequest.decode([ - [ - 'query', - 1, - ] + 'query', + 1, ]); expect(request.query, 'query'); @@ -57,10 +55,8 @@ void main() { test('test request decode with null', () { final NullFieldsSearchRequest request = NullFieldsSearchRequest.decode([ - [ - null, - 1, - ] + null, + 1, ]); expect(request.query, isNull); @@ -68,18 +64,14 @@ void main() { test('test reply decode with values', () { final NullFieldsSearchReply reply = NullFieldsSearchReply.decode([ + 'result', + 'error', + [1, 2, 3], [ - 'result', - 'error', - [1, 2, 3], - [ - [ - 'query', - 1, - ] - ], - NullFieldsSearchReplyType.success.index, - ] + 'query', + 1, + ], + NullFieldsSearchReplyType.success.index, ]); expect(reply.result, 'result'); @@ -91,13 +83,11 @@ void main() { test('test reply decode with nulls', () { final NullFieldsSearchReply reply = NullFieldsSearchReply.decode([ - [ - null, - null, - null, - null, - null, - ] + null, + null, + null, + null, + null, ]); expect(reply.result, isNull); @@ -112,10 +102,8 @@ void main() { NullFieldsSearchRequest(query: 'query', identifier: 1); expect(request.encode(), [ - [ - 'query', - 1, - ] + 'query', + 1, ]); }); @@ -124,10 +112,8 @@ void main() { NullFieldsSearchRequest(identifier: 1); expect(request.encode(), [ - [ - null, - 1, - ] + null, + 1, ]); }); @@ -141,18 +127,14 @@ void main() { ); expect(reply.encode(), [ + 'result', + 'error', + [1, 2, 3], [ - 'result', - 'error', - [1, 2, 3], - [ - [ - 'query', - 1, - ] - ], - NullFieldsSearchReplyType.success.index, - ] + 'query', + 1, + ], + NullFieldsSearchReplyType.success.index, ]); }); @@ -160,13 +142,11 @@ void main() { final NullFieldsSearchReply reply = NullFieldsSearchReply(); expect(reply.encode(), [ - [ - null, - null, - null, - null, - null, - ] + null, + null, + null, + null, + null, ]); }); } diff --git a/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt index 1b9773afa53c..16c9ee789bce 100644 --- a/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt +++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt @@ -103,13 +103,11 @@ internal class AllDatatypesTest: TestCase() { val everything = Everything(anInt = 123L) val list = everything.toList() assertNotNull(list) - val result = list.first() - assertNotNull(result) - assertNull(result.first()) - assertNotNull(result[1]) - assertTrue(result[1] == 123L) + assertNull(list.first()) + assertNotNull(list[1]) + assertTrue(list[1] == 123L) - val list2 = listOf(listOf(null, 123, null, null, null, null, null, null, null, null, null, null, null)) + val list2 = listOf(null, 123, null, null, null, null, null, null, null, null, null, null, null) val everything2 = Everything.fromList(list2) assertEquals(everything.anInt, everything2.anInt) diff --git a/packages/pigeon/test/java_generator_test.dart b/packages/pigeon/test/java_generator_test.dart index b371332cfa02..9d323205e7cd 100644 --- a/packages/pigeon/test/java_generator_test.dart +++ b/packages/pigeon/test/java_generator_test.dart @@ -89,7 +89,7 @@ void main() { generateJava(javaOptions, root, sink); final String code = sink.toString(); expect(code, contains('package com.google.foobar;')); - expect(code, contains('ArrayList toList()')); + expect(code, contains('ArrayList toList()')); }); test('gen one host api', () { @@ -456,7 +456,7 @@ void main() { expect( code, contains( - '(nested == null) ? null : Nested.fromList((ArrayList)nested)')); + '(nested == null) ? null : Nested.fromList((ArrayList)nested)')); expect(code, contains('add((nested == null) ? null : nested.toList());')); }); diff --git a/packages/pigeon/test/kotlin_generator_test.dart b/packages/pigeon/test/kotlin_generator_test.dart index ca76f9058d72..2d2a4207a33a 100644 --- a/packages/pigeon/test/kotlin_generator_test.dart +++ b/packages/pigeon/test/kotlin_generator_test.dart @@ -31,8 +31,8 @@ void main() { final String code = sink.toString(); expect(code, contains('data class Foobar (')); expect(code, contains('val field1: Long? = null')); - expect(code, contains('fun fromList(result: List): Foobar')); - expect(code, contains('fun toList(): MutableList>')); + expect(code, contains('fun fromList(list: List): Foobar')); + expect(code, contains('fun toList(): MutableList')); }); test('gen one enum', () { @@ -478,11 +478,11 @@ void main() { expect(code, contains('data class Outer')); expect(code, contains('data class Nested')); expect(code, contains('val nested: Nested? = null')); - expect(code, contains('fun fromList(result: List): Outer')); + expect(code, contains('fun fromList(list: List): Outer')); expect( code, contains('val nested: Nested? = (list[0] as? List)?.let')); expect(code, contains('Nested.fromList(it)')); - expect(code, contains('fun toList(): MutableList>')); + expect(code, contains('fun toList(): MutableList')); }); test('gen one async Host Api', () { From bee104778a5da2833b09188e175ca905bdd6d492 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 30 Nov 2022 15:42:33 -0800 Subject: [PATCH 27/55] generated files --- .../e2e_tests/test_objc/lib/dartle.dart | 109 +++++------- .../mock_handler_tester/test/message.dart | 109 +++++------- .../pigeon/mock_handler_tester/test/test.dart | 63 +++---- .../lib/all_datatypes.dart | 65 +++----- .../lib/multiple_arity.gen.dart | 26 ++- .../lib/non_null_fields.gen.dart | 104 +++++------- .../lib/null_fields.gen.dart | 83 ++++----- .../lib/null_safe_pigeon.dart | 72 ++++---- .../lib/nullable_returns.gen.dart | 71 ++++---- .../lib/primitive.dart | 128 +++++--------- .../lib/src/generated/all_datatypes.gen.dart | 157 ++++++++---------- .../lib/src/generated/all_void.gen.dart | 33 ++-- 12 files changed, 422 insertions(+), 598 deletions(-) diff --git a/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart b/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart index a0c826ae208d..b2eeff2ea977 100644 --- a/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart +++ b/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -36,10 +36,8 @@ class MessageSearchRequest { /// This comment is to test field documentation comments. String? query; - /// This comment is to test field documentation comments. int? anInt; - /// This comment is to test field documentation comments. bool? aBool; @@ -48,12 +46,11 @@ class MessageSearchRequest { pigeonList.add(query); pigeonList.add(anInt); pigeonList.add(aBool); - return [pigeonList]; + return pigeonList; } - static MessageSearchRequest decode(Object message) { - message as List; - final List result = message.first! as List; + static MessageSearchRequest decode(Object result) { + result as List; return MessageSearchRequest( query: result[0] as String?, anInt: result[1] as int?, @@ -74,10 +71,8 @@ class MessageSearchReply { /// /// This comment also tests multiple line comments. String? result; - /// This comment is to test field documentation comments. String? error; - /// This comment is to test field documentation comments. MessageRequestState? state; @@ -86,12 +81,11 @@ class MessageSearchReply { pigeonList.add(result); pigeonList.add(error); pigeonList.add(state?.index); - return [pigeonList]; + return pigeonList; } - static MessageSearchReply decode(Object message) { - message as List; - final List result = message.first! as List; + static MessageSearchReply decode(Object result) { + result as List; return MessageSearchReply( result: result[0] as String?, error: result[1] as String?, @@ -114,12 +108,11 @@ class MessageNested { Object encode() { final List pigeonList = []; pigeonList.add(request?.encode()); - return [pigeonList]; + return pigeonList; } - static MessageNested decode(Object message) { - message as List; - final List result = message.first! as List; + static MessageNested decode(Object result) { + result as List; return MessageNested( request: result[0] != null ? MessageSearchRequest.decode(result[0]! as List) @@ -128,7 +121,7 @@ class MessageNested { } } -class _MessageApiCodec extends StandardMessageCodec { +class _MessageApiCodec extends StandardMessageCodec{ const _MessageApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -142,18 +135,18 @@ class _MessageApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } @@ -165,8 +158,7 @@ class MessageApi { /// Constructor for [MessageApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + MessageApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageApiCodec(); @@ -176,9 +168,9 @@ class MessageApi { /// This comment also tests multiple line comments. Future initialize() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, - binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send(null) as List?; + 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -198,8 +190,7 @@ class MessageApi { /// This comment is to test method documentation comments. Future search(MessageSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -224,7 +215,7 @@ class MessageApi { } } -class _MessageNestedApiCodec extends StandardMessageCodec { +class _MessageNestedApiCodec extends StandardMessageCodec{ const _MessageNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -241,21 +232,21 @@ class _MessageNestedApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } @@ -265,8 +256,7 @@ class MessageNestedApi { /// Constructor for [MessageNestedApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageNestedApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + MessageNestedApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageNestedApiCodec(); @@ -276,8 +266,7 @@ class MessageNestedApi { /// This comment also tests multiple line comments. Future search(MessageNested arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -302,7 +291,7 @@ class MessageNestedApi { } } -class _MessageFlutterSearchApiCodec extends StandardMessageCodec { +class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ const _MessageFlutterSearchApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -316,45 +305,39 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } - /// This comment is to test api documentation comments. abstract class MessageFlutterSearchApi { static const MessageCodec codec = _MessageFlutterSearchApiCodec(); /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); - static void setup(MessageFlutterSearchApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(MessageFlutterSearchApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = - (args[0] as MessageSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index a0c826ae208d..b2eeff2ea977 100644 --- a/packages/pigeon/mock_handler_tester/test/message.dart +++ b/packages/pigeon/mock_handler_tester/test/message.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -36,10 +36,8 @@ class MessageSearchRequest { /// This comment is to test field documentation comments. String? query; - /// This comment is to test field documentation comments. int? anInt; - /// This comment is to test field documentation comments. bool? aBool; @@ -48,12 +46,11 @@ class MessageSearchRequest { pigeonList.add(query); pigeonList.add(anInt); pigeonList.add(aBool); - return [pigeonList]; + return pigeonList; } - static MessageSearchRequest decode(Object message) { - message as List; - final List result = message.first! as List; + static MessageSearchRequest decode(Object result) { + result as List; return MessageSearchRequest( query: result[0] as String?, anInt: result[1] as int?, @@ -74,10 +71,8 @@ class MessageSearchReply { /// /// This comment also tests multiple line comments. String? result; - /// This comment is to test field documentation comments. String? error; - /// This comment is to test field documentation comments. MessageRequestState? state; @@ -86,12 +81,11 @@ class MessageSearchReply { pigeonList.add(result); pigeonList.add(error); pigeonList.add(state?.index); - return [pigeonList]; + return pigeonList; } - static MessageSearchReply decode(Object message) { - message as List; - final List result = message.first! as List; + static MessageSearchReply decode(Object result) { + result as List; return MessageSearchReply( result: result[0] as String?, error: result[1] as String?, @@ -114,12 +108,11 @@ class MessageNested { Object encode() { final List pigeonList = []; pigeonList.add(request?.encode()); - return [pigeonList]; + return pigeonList; } - static MessageNested decode(Object message) { - message as List; - final List result = message.first! as List; + static MessageNested decode(Object result) { + result as List; return MessageNested( request: result[0] != null ? MessageSearchRequest.decode(result[0]! as List) @@ -128,7 +121,7 @@ class MessageNested { } } -class _MessageApiCodec extends StandardMessageCodec { +class _MessageApiCodec extends StandardMessageCodec{ const _MessageApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -142,18 +135,18 @@ class _MessageApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } @@ -165,8 +158,7 @@ class MessageApi { /// Constructor for [MessageApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + MessageApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageApiCodec(); @@ -176,9 +168,9 @@ class MessageApi { /// This comment also tests multiple line comments. Future initialize() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, - binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send(null) as List?; + 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -198,8 +190,7 @@ class MessageApi { /// This comment is to test method documentation comments. Future search(MessageSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -224,7 +215,7 @@ class MessageApi { } } -class _MessageNestedApiCodec extends StandardMessageCodec { +class _MessageNestedApiCodec extends StandardMessageCodec{ const _MessageNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -241,21 +232,21 @@ class _MessageNestedApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } @@ -265,8 +256,7 @@ class MessageNestedApi { /// Constructor for [MessageNestedApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageNestedApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + MessageNestedApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageNestedApiCodec(); @@ -276,8 +266,7 @@ class MessageNestedApi { /// This comment also tests multiple line comments. Future search(MessageNested arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -302,7 +291,7 @@ class MessageNestedApi { } } -class _MessageFlutterSearchApiCodec extends StandardMessageCodec { +class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ const _MessageFlutterSearchApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -316,45 +305,39 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } - /// This comment is to test api documentation comments. abstract class MessageFlutterSearchApi { static const MessageCodec codec = _MessageFlutterSearchApiCodec(); /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); - static void setup(MessageFlutterSearchApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(MessageFlutterSearchApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = - (args[0] as MessageSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/mock_handler_tester/test/test.dart b/packages/pigeon/mock_handler_tester/test/test.dart index e1a8a091e8a6..eb1b19833974 100644 --- a/packages/pigeon/mock_handler_tester/test/test.dart +++ b/packages/pigeon/mock_handler_tester/test/test.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 @@ -14,7 +14,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'message.dart'; -class _TestHostApiCodec extends StandardMessageCodec { +class _TestHostApiCodec extends StandardMessageCodec{ const _TestHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -28,22 +28,21 @@ class _TestHostApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } - /// This comment is to test api documentation comments. /// /// This comment also tests multiple line comments. @@ -54,14 +53,12 @@ abstract class TestHostApi { /// /// This comment also tests multiple line comments. void initialize(); - /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); static void setup(TestHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { @@ -74,19 +71,15 @@ abstract class TestHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = - (args[0] as MessageSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return [output]; }); @@ -95,7 +88,7 @@ abstract class TestHostApi { } } -class _TestNestedApiCodec extends StandardMessageCodec { +class _TestNestedApiCodec extends StandardMessageCodec{ const _TestNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -112,25 +105,24 @@ class _TestNestedApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } - /// This comment is to test api documentation comments. abstract class TestNestedApi { static const MessageCodec codec = _TestNestedApiCodec(); @@ -142,18 +134,15 @@ abstract class TestNestedApi { static void setup(TestNestedApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); final List args = (message as List?)!; final MessageNested? arg_nested = (args[0] as MessageNested?); - assert(arg_nested != null, - 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); + assert(arg_nested != null, 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); final MessageSearchReply output = api.search(arg_nested!); return [output]; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart index ef49419fcc42..a2710bc6fbaf 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -57,12 +57,11 @@ class Everything { pigeonList.add(nestedList); pigeonList.add(mapWithAnnotations); pigeonList.add(mapWithObject); - return [pigeonList]; + return pigeonList; } - static Everything decode(Object message) { - message as List; - final List result = message.first! as List; + static Everything decode(Object result) { + result as List; return Everything( aBool: result[0] as bool?, anInt: result[1] as int?, @@ -75,15 +74,13 @@ class Everything { aList: result[8] as List?, aMap: result[9] as Map?, nestedList: (result[10] as List?)?.cast?>(), - mapWithAnnotations: - (result[11] as Map?)?.cast(), - mapWithObject: - (result[12] as Map?)?.cast(), + mapWithAnnotations: (result[11] as Map?)?.cast(), + mapWithObject: (result[12] as Map?)?.cast(), ); } } -class _HostEverythingCodec extends StandardMessageCodec { +class _HostEverythingCodec extends StandardMessageCodec{ const _HostEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -94,15 +91,15 @@ class _HostEverythingCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return Everything.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } @@ -111,17 +108,16 @@ class HostEverything { /// Constructor for [HostEverything]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - HostEverything({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + HostEverything({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _HostEverythingCodec(); Future giveMeEverything() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, - binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send(null) as List?; + 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -145,8 +141,7 @@ class HostEverything { Future echo(Everything arg_everything) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.echo', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.HostEverything.echo', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_everything]) as List?; if (replyList == null) { @@ -171,7 +166,7 @@ class HostEverything { } } -class _FlutterEverythingCodec extends StandardMessageCodec { +class _FlutterEverythingCodec extends StandardMessageCodec{ const _FlutterEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -182,30 +177,27 @@ class _FlutterEverythingCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return Everything.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); + } } } - abstract class FlutterEverything { static const MessageCodec codec = _FlutterEverythingCodec(); Everything giveMeEverything(); Everything echo(Everything everything); - static void setup(FlutterEverything? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(FlutterEverything? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -218,18 +210,15 @@ abstract class FlutterEverything { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.echo', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.echo', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); final List args = (message as List?)!; final Everything? arg_everything = (args[0] as Everything?); - assert(arg_everything != null, - 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); + assert(arg_everything != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); final Everything output = api.echo(arg_everything!); return output; }); 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 b238d23610d4..f074579252bb 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 @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -11,20 +11,19 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; + class MultipleArityHostApi { /// Constructor for [MultipleArityHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MultipleArityHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + MultipleArityHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future subtract(int arg_x, int arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MultipleArityHostApi.subtract', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MultipleArityHostApi.subtract', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x, arg_y]) as List?; if (replyList == null) { @@ -53,25 +52,20 @@ abstract class MultipleArityFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int subtract(int x, int y); - static void setup(MultipleArityFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(MultipleArityFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); - assert(arg_x != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + assert(arg_x != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int? arg_y = (args[1] as int?); - assert(arg_y != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + assert(arg_y != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int output = api.subtract(arg_x!, arg_y!); return output; }); 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 835a6f46ecd0..93a0a74a50da 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 @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -26,12 +26,11 @@ class NonNullFieldSearchRequest { Object encode() { final List pigeonList = []; pigeonList.add(query); - return [pigeonList]; + return pigeonList; } - static NonNullFieldSearchRequest decode(Object message) { - message as List; - final List result = message.first! as List; + static NonNullFieldSearchRequest decode(Object result) { + result as List; return NonNullFieldSearchRequest( query: result[0]! as String, ); @@ -51,12 +50,11 @@ class ExtraData { final List pigeonList = []; pigeonList.add(detailA); pigeonList.add(detailB); - return [pigeonList]; + return pigeonList; } - static ExtraData decode(Object message) { - message as List; - final List result = message.first! as List; + static ExtraData decode(Object result) { + result as List; return ExtraData( detailA: result[0]! as String, detailB: result[1]! as String, @@ -86,23 +84,24 @@ class NonNullFieldSearchReply { pigeonList.add(indices); pigeonList.add(extraData.encode()); pigeonList.add(type.index); - return [pigeonList]; + return pigeonList; } - static NonNullFieldSearchReply decode(Object message) { - message as List; - final List result = message.first! as List; + static NonNullFieldSearchReply decode(Object result) { + result as List; return NonNullFieldSearchReply( result: result[0]! as String, error: result[1]! as String, indices: (result[2] as List?)!.cast(), - extraData: ExtraData.decode(result[3]! as List), - type: ReplyType.values[result[4]! as int], + extraData: ExtraData.decode(result[3]! as List) +, + type: ReplyType.values[result[4]! as int] +, ); } } -class _NonNullFieldHostApiCodec extends StandardMessageCodec { +class _NonNullFieldHostApiCodec extends StandardMessageCodec{ const _NonNullFieldHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -119,23 +118,21 @@ class _NonNullFieldHostApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ExtraData.decode(readValue(buffer)! as List); - - case 129: - return NonNullFieldSearchReply.decode( - readValue(buffer)! as List); - - case 130: - return NonNullFieldSearchRequest.decode( - readValue(buffer)! as List); - - default: + + case 129: + return NonNullFieldSearchReply.decode(readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } @@ -144,17 +141,14 @@ class NonNullFieldHostApi { /// Constructor for [NonNullFieldHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NonNullFieldHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + NonNullFieldHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _NonNullFieldHostApiCodec(); - Future search( - NonNullFieldSearchRequest arg_nested) async { + Future search(NonNullFieldSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -179,7 +173,7 @@ class NonNullFieldHostApi { } } -class _NonNullFieldFlutterApiCodec extends StandardMessageCodec { +class _NonNullFieldFlutterApiCodec extends StandardMessageCodec{ const _NonNullFieldFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -196,48 +190,40 @@ class _NonNullFieldFlutterApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ExtraData.decode(readValue(buffer)! as List); - - case 129: - return NonNullFieldSearchReply.decode( - readValue(buffer)! as List); - - case 130: - return NonNullFieldSearchRequest.decode( - readValue(buffer)! as List); - - default: + + case 129: + return NonNullFieldSearchReply.decode(readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - abstract class NonNullFieldFlutterApi { static const MessageCodec codec = _NonNullFieldFlutterApiCodec(); NonNullFieldSearchReply search(NonNullFieldSearchRequest request); - static void setup(NonNullFieldFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NonNullFieldFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); final List args = (message as List?)!; - final NonNullFieldSearchRequest? arg_request = - (args[0] as NonNullFieldSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); + final NonNullFieldSearchRequest? arg_request = (args[0] as NonNullFieldSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); final NonNullFieldSearchReply output = api.search(arg_request!); return output; }); 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 22efa5e74165..e255d93aeff2 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 @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -29,12 +29,11 @@ class NullFieldsSearchRequest { final List pigeonList = []; pigeonList.add(query); pigeonList.add(identifier); - return [pigeonList]; + return pigeonList; } - static NullFieldsSearchRequest decode(Object message) { - message as List; - final List result = message.first! as List; + static NullFieldsSearchRequest decode(Object result) { + result as List; return NullFieldsSearchRequest( query: result[0] as String?, identifier: result[1]! as int, @@ -64,12 +63,11 @@ class NullFieldsSearchReply { pigeonList.add(indices); pigeonList.add(request?.encode()); pigeonList.add(type?.index); - return [pigeonList]; + return pigeonList; } - static NullFieldsSearchReply decode(Object message) { - message as List; - final List result = message.first! as List; + static NullFieldsSearchReply decode(Object result) { + result as List; return NullFieldsSearchReply( result: result[0] as String?, error: result[1] as String?, @@ -84,7 +82,7 @@ class NullFieldsSearchReply { } } -class _NullFieldsHostApiCodec extends StandardMessageCodec { +class _NullFieldsHostApiCodec extends StandardMessageCodec{ const _NullFieldsHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -98,20 +96,18 @@ class _NullFieldsHostApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode( - readValue(buffer)! as List); - - case 129: - return NullFieldsSearchRequest.decode( - readValue(buffer)! as List); - - default: + case 128: + return NullFieldsSearchReply.decode(readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } @@ -120,17 +116,14 @@ class NullFieldsHostApi { /// Constructor for [NullFieldsHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullFieldsHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + NullFieldsHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _NullFieldsHostApiCodec(); - Future search( - NullFieldsSearchRequest arg_nested) async { + Future search(NullFieldsSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -155,7 +148,7 @@ class NullFieldsHostApi { } } -class _NullFieldsFlutterApiCodec extends StandardMessageCodec { +class _NullFieldsFlutterApiCodec extends StandardMessageCodec{ const _NullFieldsFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -169,45 +162,37 @@ class _NullFieldsFlutterApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode( - readValue(buffer)! as List); - - case 129: - return NullFieldsSearchRequest.decode( - readValue(buffer)! as List); - - default: + case 128: + return NullFieldsSearchReply.decode(readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - abstract class NullFieldsFlutterApi { static const MessageCodec codec = _NullFieldsFlutterApiCodec(); NullFieldsSearchReply search(NullFieldsSearchRequest request); - static void setup(NullFieldsFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullFieldsFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); final List args = (message as List?)!; - final NullFieldsSearchRequest? arg_request = - (args[0] as NullFieldsSearchRequest?); - assert(arg_request != null, - 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); + final NullFieldsSearchRequest? arg_request = (args[0] as NullFieldsSearchRequest?); + assert(arg_request != null, 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); final NullFieldsSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart index 649a704a5bd2..af219415950d 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -21,12 +21,11 @@ class FlutterSearchRequest { Object encode() { final List pigeonList = []; pigeonList.add(query); - return [pigeonList]; + return pigeonList; } - static FlutterSearchRequest decode(Object message) { - message as List; - final List result = message.first! as List; + static FlutterSearchRequest decode(Object result) { + result as List; return FlutterSearchRequest( query: result[0] as String?, ); @@ -46,12 +45,11 @@ class FlutterSearchReply { final List pigeonList = []; pigeonList.add(result); pigeonList.add(error); - return [pigeonList]; + return pigeonList; } - static FlutterSearchReply decode(Object message) { - message as List; - final List result = message.first! as List; + static FlutterSearchReply decode(Object result) { + result as List; return FlutterSearchReply( result: result[0] as String?, error: result[1] as String?, @@ -69,12 +67,11 @@ class FlutterSearchRequests { Object encode() { final List pigeonList = []; pigeonList.add(requests); - return [pigeonList]; + return pigeonList; } - static FlutterSearchRequests decode(Object message) { - message as List; - final List result = message.first! as List; + static FlutterSearchRequests decode(Object result) { + result as List; return FlutterSearchRequests( requests: result[0] as List?, ); @@ -91,19 +88,18 @@ class FlutterSearchReplies { Object encode() { final List pigeonList = []; pigeonList.add(replies); - return [pigeonList]; + return pigeonList; } - static FlutterSearchReplies decode(Object message) { - message as List; - final List result = message.first! as List; + static FlutterSearchReplies decode(Object result) { + result as List; return FlutterSearchReplies( replies: result[0] as List?, ); } } -class _ApiCodec extends StandardMessageCodec { +class _ApiCodec extends StandardMessageCodec{ const _ApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -123,25 +119,24 @@ class _ApiCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return FlutterSearchReplies.decode(readValue(buffer)! as List); - - case 129: + + case 129: return FlutterSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return FlutterSearchRequest.decode(readValue(buffer)! as List); - - case 131: - return FlutterSearchRequests.decode( - readValue(buffer)! as List); - - default: + + case 131: + return FlutterSearchRequests.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } @@ -157,8 +152,7 @@ class Api { Future search(FlutterSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.search', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.search', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -182,11 +176,9 @@ class Api { } } - Future doSearches( - FlutterSearchRequests arg_request) async { + Future doSearches(FlutterSearchRequests arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.doSearches', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.doSearches', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -212,8 +204,7 @@ class Api { Future echo(FlutterSearchRequests arg_requests) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.echo', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.echo', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_requests]) as List?; if (replyList == null) { @@ -239,8 +230,7 @@ class Api { Future anInt(int arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.anInt', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.anInt', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { 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 98bf95f7b82b..9336aac4c8c3 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 @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -11,21 +11,21 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; + class NullableReturnHostApi { /// Constructor for [NullableReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableReturnHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + NullableReturnHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, - binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send(null) as List?; + 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -47,12 +47,10 @@ abstract class NullableReturnFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int? doit(); - static void setup(NullableReturnFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullableReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -66,20 +64,19 @@ abstract class NullableReturnFlutterApi { } } + class NullableArgHostApi { /// Constructor for [NullableArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableArgHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + NullableArgHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future doit(int? arg_x) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableArgHostApi.doit', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullableArgHostApi.doit', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x]) as List?; if (replyList == null) { @@ -108,18 +105,15 @@ abstract class NullableArgFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int doit(int? x); - static void setup(NullableArgFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullableArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); final int output = api.doit(arg_x); @@ -130,21 +124,21 @@ abstract class NullableArgFlutterApi { } } + class NullableCollectionReturnHostApi { /// Constructor for [NullableCollectionReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableCollectionReturnHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + NullableCollectionReturnHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future?> doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, - binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send(null) as List?; + 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -166,12 +160,10 @@ abstract class NullableCollectionReturnFlutterApi { static const MessageCodec codec = StandardMessageCodec(); List? doit(); - static void setup(NullableCollectionReturnFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullableCollectionReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -185,20 +177,19 @@ abstract class NullableCollectionReturnFlutterApi { } } + class NullableCollectionArgHostApi { /// Constructor for [NullableCollectionArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableCollectionArgHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + NullableCollectionArgHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future> doit(List? arg_x) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x]) as List?; if (replyList == null) { @@ -227,21 +218,17 @@ abstract class NullableCollectionArgFlutterApi { static const MessageCodec codec = StandardMessageCodec(); List doit(List? x); - static void setup(NullableCollectionArgFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NullableCollectionArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); final List args = (message as List?)!; - final List? arg_x = - (args[0] as List?)?.cast(); + final List? arg_x = (args[0] as List?)?.cast(); final List output = api.doit(arg_x); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart index 5b4ca4fff189..b4dc5b5f762c 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -11,20 +11,19 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; + class PrimitiveHostApi { /// Constructor for [PrimitiveHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - PrimitiveHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + PrimitiveHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future anInt(int arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.anInt', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.anInt', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -50,8 +49,7 @@ class PrimitiveHostApi { Future aBool(bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aBool', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aBool', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -77,8 +75,7 @@ class PrimitiveHostApi { Future aString(String arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aString', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aString', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -104,8 +101,7 @@ class PrimitiveHostApi { Future aDouble(double arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aDouble', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aDouble', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -131,8 +127,7 @@ class PrimitiveHostApi { Future> aMap(Map arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aMap', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aMap', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -158,8 +153,7 @@ class PrimitiveHostApi { Future> aList(List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aList', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aList', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -185,8 +179,7 @@ class PrimitiveHostApi { Future anInt32List(Int32List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.anInt32List', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.anInt32List', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -212,8 +205,7 @@ class PrimitiveHostApi { Future> aBoolList(List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aBoolList', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aBoolList', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -239,8 +231,7 @@ class PrimitiveHostApi { Future> aStringIntMap(Map arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aStringIntMap', codec, - binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aStringIntMap', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -277,22 +268,18 @@ abstract class PrimitiveFlutterApi { Int32List anInt32List(Int32List value); List aBoolList(List value); Map aStringIntMap(Map value); - static void setup(PrimitiveFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(PrimitiveFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); final List args = (message as List?)!; final int? arg_value = (args[0] as int?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); final int output = api.anInt(arg_value!); return output; }); @@ -300,18 +287,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aBool', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aBool', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); final List args = (message as List?)!; final bool? arg_value = (args[0] as bool?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); final bool output = api.aBool(arg_value!); return output; }); @@ -319,18 +303,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aString', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aString', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); final List args = (message as List?)!; final String? arg_value = (args[0] as String?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); final String output = api.aString(arg_value!); return output; }); @@ -338,18 +319,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aDouble', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aDouble', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); final List args = (message as List?)!; final double? arg_value = (args[0] as double?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); final double output = api.aDouble(arg_value!); return output; }); @@ -357,19 +335,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aMap', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aMap', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); final List args = (message as List?)!; - final Map? arg_value = - (args[0] as Map?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); + final Map? arg_value = (args[0] as Map?); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); final Map output = api.aMap(arg_value!); return output; }); @@ -377,18 +351,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aList', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aList', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); final List args = (message as List?)!; final List? arg_value = (args[0] as List?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); final List output = api.aList(arg_value!); return output; }); @@ -396,18 +367,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); final List args = (message as List?)!; final Int32List? arg_value = (args[0] as Int32List?); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); final Int32List output = api.anInt32List(arg_value!); return output; }); @@ -415,19 +383,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); final List args = (message as List?)!; - final List? arg_value = - (args[0] as List?)?.cast(); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); + final List? arg_value = (args[0] as List?)?.cast(); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); final List output = api.aBoolList(arg_value!); return output; }); @@ -435,19 +399,15 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); final List args = (message as List?)!; - final Map? arg_value = - (args[0] as Map?)?.cast(); - assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); + final Map? arg_value = (args[0] as Map?)?.cast(); + assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); final Map output = api.aStringIntMap(arg_value!); return output; }); diff --git a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_datatypes.gen.dart b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_datatypes.gen.dart index dada870e77f7..a2710bc6fbaf 100644 --- a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_datatypes.gen.dart +++ b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_datatypes.gen.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -43,48 +43,44 @@ class Everything { Map? mapWithObject; Object encode() { - final Map pigeonMap = {}; - pigeonMap['aBool'] = aBool; - pigeonMap['anInt'] = anInt; - pigeonMap['aDouble'] = aDouble; - pigeonMap['aString'] = aString; - pigeonMap['aByteArray'] = aByteArray; - pigeonMap['a4ByteArray'] = a4ByteArray; - pigeonMap['a8ByteArray'] = a8ByteArray; - pigeonMap['aFloatArray'] = aFloatArray; - pigeonMap['aList'] = aList; - pigeonMap['aMap'] = aMap; - pigeonMap['nestedList'] = nestedList; - pigeonMap['mapWithAnnotations'] = mapWithAnnotations; - pigeonMap['mapWithObject'] = mapWithObject; - return pigeonMap; + final List pigeonList = []; + pigeonList.add(aBool); + pigeonList.add(anInt); + pigeonList.add(aDouble); + pigeonList.add(aString); + pigeonList.add(aByteArray); + pigeonList.add(a4ByteArray); + pigeonList.add(a8ByteArray); + pigeonList.add(aFloatArray); + pigeonList.add(aList); + pigeonList.add(aMap); + pigeonList.add(nestedList); + pigeonList.add(mapWithAnnotations); + pigeonList.add(mapWithObject); + return pigeonList; } - static Everything decode(Object message) { - final Map pigeonMap = message as Map; + static Everything decode(Object result) { + result as List; return Everything( - aBool: pigeonMap['aBool'] as bool?, - anInt: pigeonMap['anInt'] as int?, - aDouble: pigeonMap['aDouble'] as double?, - aString: pigeonMap['aString'] as String?, - aByteArray: pigeonMap['aByteArray'] as Uint8List?, - a4ByteArray: pigeonMap['a4ByteArray'] as Int32List?, - a8ByteArray: pigeonMap['a8ByteArray'] as Int64List?, - aFloatArray: pigeonMap['aFloatArray'] as Float64List?, - aList: pigeonMap['aList'] as List?, - aMap: pigeonMap['aMap'] as Map?, - nestedList: - (pigeonMap['nestedList'] as List?)?.cast?>(), - mapWithAnnotations: - (pigeonMap['mapWithAnnotations'] as Map?) - ?.cast(), - mapWithObject: (pigeonMap['mapWithObject'] as Map?) - ?.cast(), + aBool: result[0] as bool?, + anInt: result[1] as int?, + aDouble: result[2] as double?, + aString: result[3] as String?, + aByteArray: result[4] as Uint8List?, + a4ByteArray: result[5] as Int32List?, + a8ByteArray: result[6] as Int64List?, + aFloatArray: result[7] as Float64List?, + aList: result[8] as List?, + aMap: result[9] as Map?, + nestedList: (result[10] as List?)?.cast?>(), + mapWithAnnotations: (result[11] as Map?)?.cast(), + mapWithObject: (result[12] as Map?)?.cast(), ); } } -class _HostEverythingCodec extends StandardMessageCodec { +class _HostEverythingCodec extends StandardMessageCodec{ const _HostEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -95,15 +91,15 @@ class _HostEverythingCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return Everything.decode(readValue(buffer)!); - - default: + case 128: + return Everything.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } @@ -112,72 +108,65 @@ class HostEverything { /// Constructor for [HostEverything]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - HostEverything({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + HostEverything({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _HostEverythingCodec(); Future giveMeEverything() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as Everything?)!; + return (replyList[0] as Everything?)!; } } Future echo(Everything arg_everything) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.echo', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_everything]) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.HostEverything.echo', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_everything]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as Everything?)!; + return (replyList[0] as Everything?)!; } } } -class _FlutterEverythingCodec extends StandardMessageCodec { +class _FlutterEverythingCodec extends StandardMessageCodec{ const _FlutterEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -188,30 +177,27 @@ class _FlutterEverythingCodec extends StandardMessageCodec { super.writeValue(buffer, value); } } - @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return Everything.decode(readValue(buffer)!); - - default: + case 128: + return Everything.decode(readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); + } } } - abstract class FlutterEverything { static const MessageCodec codec = _FlutterEverythingCodec(); Everything giveMeEverything(); Everything echo(Everything everything); - static void setup(FlutterEverything? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(FlutterEverything? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -224,18 +210,15 @@ abstract class FlutterEverything { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.echo', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.echo', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); + assert(message != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); final List args = (message as List?)!; final Everything? arg_everything = (args[0] as Everything?); - assert(arg_everything != null, - 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); + assert(arg_everything != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); final Everything output = api.echo(arg_everything!); return output; }); diff --git a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_void.gen.dart b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_void.gen.dart index aec71fdd952e..e90b32e44a9b 100644 --- a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_void.gen.dart +++ b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_void.gen.dart @@ -1,8 +1,8 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.7), do not edit directly. +// +// Autogenerated from Pigeon (v4.2.9), 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 import 'dart:async'; @@ -15,12 +15,10 @@ abstract class AllVoidFlutterApi { static const MessageCodec codec = StandardMessageCodec(); void doit(); - static void setup(AllVoidFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(AllVoidFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.AllVoidFlutterApi.doit', codec, - binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.AllVoidFlutterApi.doit', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -34,34 +32,31 @@ abstract class AllVoidFlutterApi { } } + class AllVoidHostApi { /// Constructor for [AllVoidHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - AllVoidHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + AllVoidHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.AllVoidHostApi.doit', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + 'dev.flutter.pigeon.AllVoidHostApi.doit', codec, binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { return; From 1e12317daf31844bb6cceb0b02a28a92571ebf53 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 1 Dec 2022 00:28:58 -0800 Subject: [PATCH 28/55] fix some formatting errors --- .../e2e_tests/test_objc/lib/dartle.dart | 87 ++++++----- packages/pigeon/lib/dart_generator.dart | 37 ++--- .../mock_handler_tester/test/message.dart | 87 ++++++----- .../pigeon/mock_handler_tester/test/test.dart | 63 ++++---- .../NullFieldsTest.java | 7 +- .../lib/all_datatypes.dart | 70 ++++++--- .../lib/multiple_arity.gen.dart | 25 ++-- .../lib/non_null_fields.gen.dart | 87 ++++++----- .../lib/null_fields.gen.dart | 73 ++++++---- .../lib/null_safe_pigeon.dart | 43 +++--- .../lib/nullable_returns.gen.dart | 73 ++++++---- .../lib/primitive.dart | 135 ++++++++++++------ .../lib/src/generated/all_datatypes.gen.dart | 70 ++++++--- .../lib/src/generated/all_void.gen.dart | 19 +-- 14 files changed, 543 insertions(+), 333 deletions(-) diff --git a/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart b/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart index b2eeff2ea977..8d67f7ea15f5 100644 --- a/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart +++ b/packages/pigeon/e2e_tests/test_objc/lib/dartle.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -36,8 +36,10 @@ class MessageSearchRequest { /// This comment is to test field documentation comments. String? query; + /// This comment is to test field documentation comments. int? anInt; + /// This comment is to test field documentation comments. bool? aBool; @@ -71,8 +73,10 @@ class MessageSearchReply { /// /// This comment also tests multiple line comments. String? result; + /// This comment is to test field documentation comments. String? error; + /// This comment is to test field documentation comments. MessageRequestState? state; @@ -121,7 +125,7 @@ class MessageNested { } } -class _MessageApiCodec extends StandardMessageCodec{ +class _MessageApiCodec extends StandardMessageCodec { const _MessageApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -135,18 +139,18 @@ class _MessageApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -158,7 +162,8 @@ class MessageApi { /// Constructor for [MessageApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + MessageApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageApiCodec(); @@ -168,9 +173,9 @@ class MessageApi { /// This comment also tests multiple line comments. Future initialize() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.MessageApi.initialize', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -190,7 +195,8 @@ class MessageApi { /// This comment is to test method documentation comments. Future search(MessageSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -215,7 +221,7 @@ class MessageApi { } } -class _MessageNestedApiCodec extends StandardMessageCodec{ +class _MessageNestedApiCodec extends StandardMessageCodec { const _MessageNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -232,21 +238,21 @@ class _MessageNestedApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -256,7 +262,8 @@ class MessageNestedApi { /// Constructor for [MessageNestedApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageNestedApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + MessageNestedApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageNestedApiCodec(); @@ -266,7 +273,8 @@ class MessageNestedApi { /// This comment also tests multiple line comments. Future search(MessageNested arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -291,7 +299,7 @@ class MessageNestedApi { } } -class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ +class _MessageFlutterSearchApiCodec extends StandardMessageCodec { const _MessageFlutterSearchApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -305,39 +313,46 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + /// This comment is to test api documentation comments. abstract class MessageFlutterSearchApi { static const MessageCodec codec = _MessageFlutterSearchApiCodec(); /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); - static void setup(MessageFlutterSearchApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(MessageFlutterSearchApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = + (args[0] as MessageSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 8170a86c4a89..e02bd35b5403 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -73,7 +73,7 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { assert(getCodecClasses(api, root).isNotEmpty); final Iterable codecClasses = getCodecClasses(api, root); indent.write('class $codecName extends $_standardMessageCodec'); - indent.scoped('{', '}', () { + indent.scoped(' {', '}', () { indent.writeln('const $codecName();'); indent.writeln('@override'); indent.write('void writeValue(WriteBuffer buffer, Object? value) '); @@ -97,6 +97,7 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { indent.writeln('super.writeValue(buffer, value);'); }); }); + indent.writeln(''); indent.writeln('@override'); indent.write('Object? readValueOfType(int type, ReadBuffer buffer) '); indent.scoped('{', '}', () { @@ -109,10 +110,10 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { 'return ${customClass.name}.decode(readValue(buffer)! as List);'); }); } - indent.write('default:'); - indent.writeScoped('', '', () { - indent.writeln('return super.readValueOfType(type, buffer);'); - }); + indent.writeln('default:'); + indent.inc(); + indent.writeln('return super.readValueOfType(type, buffer);'); + indent.dec(); }); }); }); @@ -181,7 +182,8 @@ void _writeHostApi(DartOptions opt, Indent indent, Api api, Root root) { /// Constructor for [${api.name}]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. -${api.name}({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; +${api.name}({BinaryMessenger? binaryMessenger}) +\t\t: _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; '''); @@ -220,9 +222,8 @@ final BinaryMessenger? _binaryMessenger; indent.writeln( 'final BasicMessageChannel channel = BasicMessageChannel('); indent.nest(2, () { - indent.writeln( - "'$channelName', codec, binaryMessenger: _binaryMessenger);", - ); + indent.writeln("'$channelName', codec,"); + indent.writeln('binaryMessenger: _binaryMessenger);'); }); final String returnType = _makeGenericTypeArguments(func.returnType); final String castCall = _makeGenericCastCall(func.returnType); @@ -233,7 +234,8 @@ final BinaryMessenger? _binaryMessenger; ? 'return;' : 'return ($accessor as $returnType?)$nullHandler$castCall;'; indent.format(''' -final List? replyList =\n\t\tawait channel.send($sendArgument) as List?; +final List? replyList = +\t\tawait channel.send($sendArgument) as List?; if (replyList == null) { \tthrow PlatformException( \t\tcode: 'channel-error', @@ -290,6 +292,7 @@ void _writeFlutterApi( codecName = _getCodecName(api); _writeCodec(indent, codecName, api, root); } + indent.addln(''); addDocumentationComments(indent, api.documentationComments, _docCommentSpec); indent.write('abstract class ${api.name} '); @@ -309,6 +312,7 @@ void _writeFlutterApi( _getArgumentName, ); indent.writeln('$returnType ${func.name}($argSignature);'); + indent.writeln(''); } indent.write( 'static void setup(${api.name}? api, {BinaryMessenger? binaryMessenger}) '); @@ -323,8 +327,9 @@ void _writeFlutterApi( ? makeChannelName(api, func) : channelNameFunc(func); indent.nest(2, () { + indent.writeln("'$channelName', codec,"); indent.writeln( - "'$channelName', codec, binaryMessenger: binaryMessenger);", + 'binaryMessenger: binaryMessenger);', ); }); final String messageHandlerSetter = @@ -352,9 +357,8 @@ void _writeFlutterApi( indent.writeln('// ignore message'); call = 'api.${func.name}()'; } else { - indent.writeln( - "assert(message != null, 'Argument for $channelName was null.');", - ); + indent.writeln('assert(message != null,'); + indent.writeln("'Argument for $channelName was null.');"); const String argsArray = 'args'; indent.writeln( 'final List $argsArray = (message as List?)!;'); @@ -376,8 +380,9 @@ void _writeFlutterApi( '$leftHandSide = ($argsArray[$count] as $genericArgType?)${castCall.isEmpty ? '' : '?$castCall'};'); } if (!arg.type.isNullable) { + indent.writeln('assert($argName != null,'); indent.writeln( - "assert($argName != null, 'Argument for $channelName was null, expected non-null $argType.');"); + "'Argument for $channelName was null, expected non-null $argType.');"); } }); final Iterable argNames = @@ -605,8 +610,6 @@ result[$index] != null final String datatype = _addGenericTypesNullable(field.type); indent.writeln('$datatype ${field.name};'); - } - if (klass.fields.isNotEmpty) { indent.writeln(''); } writeEncode(); diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index b2eeff2ea977..8d67f7ea15f5 100644 --- a/packages/pigeon/mock_handler_tester/test/message.dart +++ b/packages/pigeon/mock_handler_tester/test/message.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -36,8 +36,10 @@ class MessageSearchRequest { /// This comment is to test field documentation comments. String? query; + /// This comment is to test field documentation comments. int? anInt; + /// This comment is to test field documentation comments. bool? aBool; @@ -71,8 +73,10 @@ class MessageSearchReply { /// /// This comment also tests multiple line comments. String? result; + /// This comment is to test field documentation comments. String? error; + /// This comment is to test field documentation comments. MessageRequestState? state; @@ -121,7 +125,7 @@ class MessageNested { } } -class _MessageApiCodec extends StandardMessageCodec{ +class _MessageApiCodec extends StandardMessageCodec { const _MessageApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -135,18 +139,18 @@ class _MessageApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -158,7 +162,8 @@ class MessageApi { /// Constructor for [MessageApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + MessageApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageApiCodec(); @@ -168,9 +173,9 @@ class MessageApi { /// This comment also tests multiple line comments. Future initialize() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.MessageApi.initialize', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -190,7 +195,8 @@ class MessageApi { /// This comment is to test method documentation comments. Future search(MessageSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -215,7 +221,7 @@ class MessageApi { } } -class _MessageNestedApiCodec extends StandardMessageCodec{ +class _MessageNestedApiCodec extends StandardMessageCodec { const _MessageNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -232,21 +238,21 @@ class _MessageNestedApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -256,7 +262,8 @@ class MessageNestedApi { /// Constructor for [MessageNestedApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MessageNestedApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + MessageNestedApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _MessageNestedApiCodec(); @@ -266,7 +273,8 @@ class MessageNestedApi { /// This comment also tests multiple line comments. Future search(MessageNested arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -291,7 +299,7 @@ class MessageNestedApi { } } -class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ +class _MessageFlutterSearchApiCodec extends StandardMessageCodec { const _MessageFlutterSearchApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -305,39 +313,46 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + /// This comment is to test api documentation comments. abstract class MessageFlutterSearchApi { static const MessageCodec codec = _MessageFlutterSearchApiCodec(); /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); - static void setup(MessageFlutterSearchApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(MessageFlutterSearchApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = + (args[0] as MessageSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/mock_handler_tester/test/test.dart b/packages/pigeon/mock_handler_tester/test/test.dart index eb1b19833974..054047e2543e 100644 --- a/packages/pigeon/mock_handler_tester/test/test.dart +++ b/packages/pigeon/mock_handler_tester/test/test.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -14,7 +14,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'message.dart'; -class _TestHostApiCodec extends StandardMessageCodec{ +class _TestHostApiCodec extends StandardMessageCodec { const _TestHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -28,21 +28,22 @@ class _TestHostApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + /// This comment is to test api documentation comments. /// /// This comment also tests multiple line comments. @@ -53,12 +54,15 @@ abstract class TestHostApi { /// /// This comment also tests multiple line comments. void initialize(); + /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); + static void setup(TestHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageApi.initialize', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { @@ -71,15 +75,19 @@ abstract class TestHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); + final MessageSearchRequest? arg_request = + (args[0] as MessageSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return [output]; }); @@ -88,7 +96,7 @@ abstract class TestHostApi { } } -class _TestNestedApiCodec extends StandardMessageCodec{ +class _TestNestedApiCodec extends StandardMessageCodec { const _TestNestedApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -105,24 +113,25 @@ class _TestNestedApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + /// This comment is to test api documentation comments. abstract class TestNestedApi { static const MessageCodec codec = _TestNestedApiCodec(); @@ -131,18 +140,22 @@ abstract class TestNestedApi { /// /// This comment also tests multiple line comments. MessageSearchReply search(MessageNested nested); + static void setup(TestNestedApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MessageNestedApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MessageNestedApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMockMessageHandler(null); } else { channel.setMockMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); final List args = (message as List?)!; final MessageNested? arg_nested = (args[0] as MessageNested?); - assert(arg_nested != null, 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); + assert(arg_nested != null, + 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); final MessageSearchReply output = api.search(arg_nested!); return [output]; }); diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java index 860e7de136c2..d581c2d8bc2b 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/NullFieldsTest.java @@ -65,8 +65,7 @@ public void requestFromMapWithValues() { ArrayList list = new ArrayList(); list.add("hello"); list.add(1L); - NullFields.NullFieldsSearchRequest request = - NullFields.NullFieldsSearchRequest.fromList(list); + NullFields.NullFieldsSearchRequest request = NullFields.NullFieldsSearchRequest.fromList(list); assertEquals(request.getQuery(), "hello"); } @@ -76,8 +75,7 @@ public void requestFromMapWithNulls() { list.add(null); list.add(1L); - NullFields.NullFieldsSearchRequest request = - NullFields.NullFieldsSearchRequest.fromList(list); + NullFields.NullFieldsSearchRequest request = NullFields.NullFieldsSearchRequest.fromList(list); assertNull(request.getQuery()); } @@ -114,7 +112,6 @@ public void replyFromMapWithNulls() { list.add(null); list.add(null); - NullFields.NullFieldsSearchReply reply = NullFields.NullFieldsSearchReply.fromList(list); assertNull(reply.getResult()); assertNull(reply.getError()); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart index a2710bc6fbaf..9b07455774f6 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/all_datatypes.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -29,17 +29,29 @@ class Everything { }); bool? aBool; + int? anInt; + double? aDouble; + String? aString; + Uint8List? aByteArray; + Int32List? a4ByteArray; + Int64List? a8ByteArray; + Float64List? aFloatArray; + List? aList; + Map? aMap; + List?>? nestedList; + Map? mapWithAnnotations; + Map? mapWithObject; Object encode() { @@ -74,13 +86,15 @@ class Everything { aList: result[8] as List?, aMap: result[9] as Map?, nestedList: (result[10] as List?)?.cast?>(), - mapWithAnnotations: (result[11] as Map?)?.cast(), - mapWithObject: (result[12] as Map?)?.cast(), + mapWithAnnotations: + (result[11] as Map?)?.cast(), + mapWithObject: + (result[12] as Map?)?.cast(), ); } } -class _HostEverythingCodec extends StandardMessageCodec{ +class _HostEverythingCodec extends StandardMessageCodec { const _HostEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -91,15 +105,15 @@ class _HostEverythingCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return Everything.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -108,16 +122,17 @@ class HostEverything { /// Constructor for [HostEverything]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - HostEverything({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + HostEverything({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _HostEverythingCodec(); Future giveMeEverything() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -141,7 +156,8 @@ class HostEverything { Future echo(Everything arg_everything) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.echo', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.HostEverything.echo', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_everything]) as List?; if (replyList == null) { @@ -166,7 +182,7 @@ class HostEverything { } } -class _FlutterEverythingCodec extends StandardMessageCodec{ +class _FlutterEverythingCodec extends StandardMessageCodec { const _FlutterEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -177,27 +193,32 @@ class _FlutterEverythingCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return Everything.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + abstract class FlutterEverything { static const MessageCodec codec = _FlutterEverythingCodec(); Everything giveMeEverything(); + Everything echo(Everything everything); - static void setup(FlutterEverything? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(FlutterEverything? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -210,15 +231,18 @@ abstract class FlutterEverything { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.echo', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.echo', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); final List args = (message as List?)!; final Everything? arg_everything = (args[0] as Everything?); - assert(arg_everything != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); + assert(arg_everything != null, + 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); final Everything output = api.echo(arg_everything!); return output; }); 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 f074579252bb..c24498804bc3 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -11,19 +11,20 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class MultipleArityHostApi { /// Constructor for [MultipleArityHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - MultipleArityHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + MultipleArityHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future subtract(int arg_x, int arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MultipleArityHostApi.subtract', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.MultipleArityHostApi.subtract', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x, arg_y]) as List?; if (replyList == null) { @@ -52,20 +53,26 @@ abstract class MultipleArityFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int subtract(int x, int y); - static void setup(MultipleArityFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(MultipleArityFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); - assert(arg_x != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + assert(arg_x != null, + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int? arg_y = (args[1] as int?); - assert(arg_y != null, 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + assert(arg_y != null, + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int output = api.subtract(arg_x!, arg_y!); return output; }); 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 93a0a74a50da..0fb639aed238 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -44,6 +44,7 @@ class ExtraData { }); String detailA; + String detailB; Object encode() { @@ -72,9 +73,13 @@ class NonNullFieldSearchReply { }); String result; + String error; + List indices; + ExtraData extraData; + ReplyType type; Object encode() { @@ -93,15 +98,13 @@ class NonNullFieldSearchReply { result: result[0]! as String, error: result[1]! as String, indices: (result[2] as List?)!.cast(), - extraData: ExtraData.decode(result[3]! as List) -, - type: ReplyType.values[result[4]! as int] -, + extraData: ExtraData.decode(result[3]! as List), + type: ReplyType.values[result[4]! as int], ); } } -class _NonNullFieldHostApiCodec extends StandardMessageCodec{ +class _NonNullFieldHostApiCodec extends StandardMessageCodec { const _NonNullFieldHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -118,21 +121,23 @@ class _NonNullFieldHostApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ExtraData.decode(readValue(buffer)! as List); - - case 129: - return NonNullFieldSearchReply.decode(readValue(buffer)! as List); - - case 130: - return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); - - default: + + case 129: + return NonNullFieldSearchReply.decode( + readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } @@ -141,14 +146,17 @@ class NonNullFieldHostApi { /// Constructor for [NonNullFieldHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NonNullFieldHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NonNullFieldHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _NonNullFieldHostApiCodec(); - Future search(NonNullFieldSearchRequest arg_nested) async { + Future search( + NonNullFieldSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -173,7 +181,7 @@ class NonNullFieldHostApi { } } -class _NonNullFieldFlutterApiCodec extends StandardMessageCodec{ +class _NonNullFieldFlutterApiCodec extends StandardMessageCodec { const _NonNullFieldFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -190,40 +198,49 @@ class _NonNullFieldFlutterApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ExtraData.decode(readValue(buffer)! as List); - - case 129: - return NonNullFieldSearchReply.decode(readValue(buffer)! as List); - - case 130: - return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); - - default: + + case 129: + return NonNullFieldSearchReply.decode( + readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } + abstract class NonNullFieldFlutterApi { static const MessageCodec codec = _NonNullFieldFlutterApiCodec(); NonNullFieldSearchReply search(NonNullFieldSearchRequest request); - static void setup(NonNullFieldFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(NonNullFieldFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); final List args = (message as List?)!; - final NonNullFieldSearchRequest? arg_request = (args[0] as NonNullFieldSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); + final NonNullFieldSearchRequest? arg_request = + (args[0] as NonNullFieldSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); final NonNullFieldSearchReply output = api.search(arg_request!); return output; }); 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 e255d93aeff2..3eb644e4ff4d 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -23,6 +23,7 @@ class NullFieldsSearchRequest { }); String? query; + int identifier; Object encode() { @@ -51,9 +52,13 @@ class NullFieldsSearchReply { }); String? result; + String? error; + List? indices; + NullFieldsSearchRequest? request; + NullFieldsSearchReplyType? type; Object encode() { @@ -82,7 +87,7 @@ class NullFieldsSearchReply { } } -class _NullFieldsHostApiCodec extends StandardMessageCodec{ +class _NullFieldsHostApiCodec extends StandardMessageCodec { const _NullFieldsHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -96,18 +101,20 @@ class _NullFieldsHostApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode(readValue(buffer)! as List); - - case 129: - return NullFieldsSearchRequest.decode(readValue(buffer)! as List); - - default: + case 128: + return NullFieldsSearchReply.decode( + readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } @@ -116,14 +123,17 @@ class NullFieldsHostApi { /// Constructor for [NullFieldsHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullFieldsHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullFieldsHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _NullFieldsHostApiCodec(); - Future search(NullFieldsSearchRequest arg_nested) async { + Future search( + NullFieldsSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_nested]) as List?; if (replyList == null) { @@ -148,7 +158,7 @@ class NullFieldsHostApi { } } -class _NullFieldsFlutterApiCodec extends StandardMessageCodec{ +class _NullFieldsFlutterApiCodec extends StandardMessageCodec { const _NullFieldsFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -162,37 +172,46 @@ class _NullFieldsFlutterApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode(readValue(buffer)! as List); - - case 129: - return NullFieldsSearchRequest.decode(readValue(buffer)! as List); - - default: + case 128: + return NullFieldsSearchReply.decode( + readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } + abstract class NullFieldsFlutterApi { static const MessageCodec codec = _NullFieldsFlutterApiCodec(); NullFieldsSearchReply search(NullFieldsSearchRequest request); - static void setup(NullFieldsFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(NullFieldsFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); final List args = (message as List?)!; - final NullFieldsSearchRequest? arg_request = (args[0] as NullFieldsSearchRequest?); - assert(arg_request != null, 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); + final NullFieldsSearchRequest? arg_request = + (args[0] as NullFieldsSearchRequest?); + assert(arg_request != null, + 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); final NullFieldsSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart index af219415950d..8b4c026c36bb 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -39,6 +39,7 @@ class FlutterSearchReply { }); String? result; + String? error; Object encode() { @@ -99,7 +100,7 @@ class FlutterSearchReplies { } } -class _ApiCodec extends StandardMessageCodec{ +class _ApiCodec extends StandardMessageCodec { const _ApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -119,24 +120,25 @@ class _ApiCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return FlutterSearchReplies.decode(readValue(buffer)! as List); - - case 129: + + case 129: return FlutterSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return FlutterSearchRequest.decode(readValue(buffer)! as List); - - case 131: - return FlutterSearchRequests.decode(readValue(buffer)! as List); - - default: + + case 131: + return FlutterSearchRequests.decode( + readValue(buffer)! as List); + + default: return super.readValueOfType(type, buffer); - } } } @@ -152,7 +154,8 @@ class Api { Future search(FlutterSearchRequest arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.search', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.search', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -176,9 +179,11 @@ class Api { } } - Future doSearches(FlutterSearchRequests arg_request) async { + Future doSearches( + FlutterSearchRequests arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.doSearches', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.doSearches', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_request]) as List?; if (replyList == null) { @@ -204,7 +209,8 @@ class Api { Future echo(FlutterSearchRequests arg_requests) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.echo', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.echo', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_requests]) as List?; if (replyList == null) { @@ -230,7 +236,8 @@ class Api { Future anInt(int arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.Api.anInt', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.Api.anInt', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { 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 9336aac4c8c3..8e5fd5a430e7 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -11,21 +11,21 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class NullableReturnHostApi { /// Constructor for [NullableReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableReturnHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullableReturnHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -47,10 +47,13 @@ abstract class NullableReturnFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int? doit(); - static void setup(NullableReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(NullableReturnFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -64,19 +67,20 @@ abstract class NullableReturnFlutterApi { } } - class NullableArgHostApi { /// Constructor for [NullableArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableArgHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullableArgHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future doit(int? arg_x) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableArgHostApi.doit', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullableArgHostApi.doit', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x]) as List?; if (replyList == null) { @@ -105,15 +109,19 @@ abstract class NullableArgFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int doit(int? x); - static void setup(NullableArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(NullableArgFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); final int output = api.doit(arg_x); @@ -124,21 +132,21 @@ abstract class NullableArgFlutterApi { } } - class NullableCollectionReturnHostApi { /// Constructor for [NullableCollectionReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableCollectionReturnHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullableCollectionReturnHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future?> doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -160,10 +168,13 @@ abstract class NullableCollectionReturnFlutterApi { static const MessageCodec codec = StandardMessageCodec(); List? doit(); - static void setup(NullableCollectionReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(NullableCollectionReturnFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -177,19 +188,20 @@ abstract class NullableCollectionReturnFlutterApi { } } - class NullableCollectionArgHostApi { /// Constructor for [NullableCollectionArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - NullableCollectionArgHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + NullableCollectionArgHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future> doit(List? arg_x) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionArgHostApi.doit', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_x]) as List?; if (replyList == null) { @@ -218,17 +230,22 @@ abstract class NullableCollectionArgFlutterApi { static const MessageCodec codec = StandardMessageCodec(); List doit(List? x); - static void setup(NullableCollectionArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(NullableCollectionArgFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); final List args = (message as List?)!; - final List? arg_x = (args[0] as List?)?.cast(); + final List? arg_x = + (args[0] as List?)?.cast(); final List output = api.doit(arg_x); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart index b4dc5b5f762c..c65ae7e1b1af 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -11,19 +11,20 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class PrimitiveHostApi { /// Constructor for [PrimitiveHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - PrimitiveHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + PrimitiveHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future anInt(int arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.anInt', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.anInt', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -49,7 +50,8 @@ class PrimitiveHostApi { Future aBool(bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aBool', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aBool', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -75,7 +77,8 @@ class PrimitiveHostApi { Future aString(String arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aString', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aString', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -101,7 +104,8 @@ class PrimitiveHostApi { Future aDouble(double arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aDouble', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aDouble', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -127,7 +131,8 @@ class PrimitiveHostApi { Future> aMap(Map arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aMap', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aMap', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -153,7 +158,8 @@ class PrimitiveHostApi { Future> aList(List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aList', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aList', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -179,7 +185,8 @@ class PrimitiveHostApi { Future anInt32List(Int32List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.anInt32List', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.anInt32List', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -205,7 +212,8 @@ class PrimitiveHostApi { Future> aBoolList(List arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aBoolList', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aBoolList', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -231,7 +239,8 @@ class PrimitiveHostApi { Future> aStringIntMap(Map arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveHostApi.aStringIntMap', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.PrimitiveHostApi.aStringIntMap', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_value]) as List?; if (replyList == null) { @@ -260,26 +269,39 @@ abstract class PrimitiveFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int anInt(int value); + bool aBool(bool value); + String aString(String value); + double aDouble(double value); + Map aMap(Map value); + List aList(List value); + Int32List anInt32List(Int32List value); + List aBoolList(List value); + Map aStringIntMap(Map value); - static void setup(PrimitiveFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(PrimitiveFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); final List args = (message as List?)!; final int? arg_value = (args[0] as int?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); final int output = api.anInt(arg_value!); return output; }); @@ -287,15 +309,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aBool', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aBool', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); final List args = (message as List?)!; final bool? arg_value = (args[0] as bool?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); final bool output = api.aBool(arg_value!); return output; }); @@ -303,15 +328,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aString', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aString', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); final List args = (message as List?)!; final String? arg_value = (args[0] as String?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); final String output = api.aString(arg_value!); return output; }); @@ -319,15 +347,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aDouble', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aDouble', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); final List args = (message as List?)!; final double? arg_value = (args[0] as double?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); final double output = api.aDouble(arg_value!); return output; }); @@ -335,15 +366,19 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aMap', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aMap', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); final List args = (message as List?)!; - final Map? arg_value = (args[0] as Map?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); + final Map? arg_value = + (args[0] as Map?); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); final Map output = api.aMap(arg_value!); return output; }); @@ -351,15 +386,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aList', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aList', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); final List args = (message as List?)!; final List? arg_value = (args[0] as List?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); final List output = api.aList(arg_value!); return output; }); @@ -367,15 +405,18 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); final List args = (message as List?)!; final Int32List? arg_value = (args[0] as Int32List?); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); final Int32List output = api.anInt32List(arg_value!); return output; }); @@ -383,15 +424,19 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); final List args = (message as List?)!; - final List? arg_value = (args[0] as List?)?.cast(); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); + final List? arg_value = + (args[0] as List?)?.cast(); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); final List output = api.aBoolList(arg_value!); return output; }); @@ -399,15 +444,19 @@ abstract class PrimitiveFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); final List args = (message as List?)!; - final Map? arg_value = (args[0] as Map?)?.cast(); - assert(arg_value != null, 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); + final Map? arg_value = + (args[0] as Map?)?.cast(); + assert(arg_value != null, + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); final Map output = api.aStringIntMap(arg_value!); return output; }); diff --git a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_datatypes.gen.dart b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_datatypes.gen.dart index a2710bc6fbaf..9b07455774f6 100644 --- a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_datatypes.gen.dart +++ b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_datatypes.gen.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -29,17 +29,29 @@ class Everything { }); bool? aBool; + int? anInt; + double? aDouble; + String? aString; + Uint8List? aByteArray; + Int32List? a4ByteArray; + Int64List? a8ByteArray; + Float64List? aFloatArray; + List? aList; + Map? aMap; + List?>? nestedList; + Map? mapWithAnnotations; + Map? mapWithObject; Object encode() { @@ -74,13 +86,15 @@ class Everything { aList: result[8] as List?, aMap: result[9] as Map?, nestedList: (result[10] as List?)?.cast?>(), - mapWithAnnotations: (result[11] as Map?)?.cast(), - mapWithObject: (result[12] as Map?)?.cast(), + mapWithAnnotations: + (result[11] as Map?)?.cast(), + mapWithObject: + (result[12] as Map?)?.cast(), ); } } -class _HostEverythingCodec extends StandardMessageCodec{ +class _HostEverythingCodec extends StandardMessageCodec { const _HostEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -91,15 +105,15 @@ class _HostEverythingCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return Everything.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } @@ -108,16 +122,17 @@ class HostEverything { /// Constructor for [HostEverything]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - HostEverything({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + HostEverything({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _HostEverythingCodec(); Future giveMeEverything() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.HostEverything.giveMeEverything', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -141,7 +156,8 @@ class HostEverything { Future echo(Everything arg_everything) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostEverything.echo', codec, binaryMessenger: _binaryMessenger); + 'dev.flutter.pigeon.HostEverything.echo', codec, + binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_everything]) as List?; if (replyList == null) { @@ -166,7 +182,7 @@ class HostEverything { } } -class _FlutterEverythingCodec extends StandardMessageCodec{ +class _FlutterEverythingCodec extends StandardMessageCodec { const _FlutterEverythingCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { @@ -177,27 +193,32 @@ class _FlutterEverythingCodec extends StandardMessageCodec{ super.writeValue(buffer, value); } } + @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return Everything.decode(readValue(buffer)! as List); - - default: + + default: return super.readValueOfType(type, buffer); - } } } + abstract class FlutterEverything { static const MessageCodec codec = _FlutterEverythingCodec(); Everything giveMeEverything(); + Everything echo(Everything everything); - static void setup(FlutterEverything? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(FlutterEverything? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.giveMeEverything', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -210,15 +231,18 @@ abstract class FlutterEverything { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.FlutterEverything.echo', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.FlutterEverything.echo', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { - assert(message != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); + assert(message != null, + 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null.'); final List args = (message as List?)!; final Everything? arg_everything = (args[0] as Everything?); - assert(arg_everything != null, 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); + assert(arg_everything != null, + 'Argument for dev.flutter.pigeon.FlutterEverything.echo was null, expected non-null Everything.'); final Everything output = api.echo(arg_everything!); return output; }); diff --git a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_void.gen.dart b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_void.gen.dart index e90b32e44a9b..76b40827d4d6 100644 --- a/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_void.gen.dart +++ b/packages/pigeon/platform_tests/shared_test_plugin_code/lib/src/generated/all_void.gen.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -15,10 +15,13 @@ abstract class AllVoidFlutterApi { static const MessageCodec codec = StandardMessageCodec(); void doit(); - static void setup(AllVoidFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + + static void setup(AllVoidFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.AllVoidFlutterApi.doit', codec, binaryMessenger: binaryMessenger); + 'dev.flutter.pigeon.AllVoidFlutterApi.doit', codec, + binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { @@ -32,21 +35,21 @@ abstract class AllVoidFlutterApi { } } - class AllVoidHostApi { /// Constructor for [AllVoidHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - AllVoidHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; + AllVoidHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = StandardMessageCodec(); Future doit() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.AllVoidHostApi.doit', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + 'dev.flutter.pigeon.AllVoidHostApi.doit', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', From b2eb193e35b1483db363b5c19127c266b3c15cfe Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 1 Dec 2022 03:01:19 -0800 Subject: [PATCH 29/55] format --- .../mock_handler_tester/test/message.dart | 43 +++++++------- .../pigeon/mock_handler_tester/test/test.dart | 33 +++++------ .../ios/RunnerTests/AllDatatypesTest.m | 30 +++++----- .../lib/core_tests.gen.dart | 30 +++++----- .../lib/multiple_arity.gen.dart | 13 ++--- .../lib/non_null_fields.gen.dart | 57 ++++++++++--------- .../lib/null_fields.gen.dart | 43 ++++++++------ .../lib/null_safe_pigeon.dart | 27 ++++----- .../lib/nullable_returns.gen.dart | 35 +++++------- .../lib/primitive.dart | 52 +++++++++-------- .../lib/src/generated/core_tests.gen.dart | 30 +++++----- 11 files changed, 202 insertions(+), 191 deletions(-) diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index a49135479616..8d67f7ea15f5 100644 --- a/packages/pigeon/mock_handler_tester/test/message.dart +++ b/packages/pigeon/mock_handler_tester/test/message.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -143,12 +143,12 @@ class _MessageApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -175,8 +175,7 @@ class MessageApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.MessageApi.initialize', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -243,15 +242,15 @@ class _MessageNestedApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -318,12 +317,12 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -337,7 +336,8 @@ abstract class MessageFlutterSearchApi { /// This comment is to test method documentation comments. MessageSearchReply search(MessageSearchRequest request); - static void setup(MessageFlutterSearchApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(MessageFlutterSearchApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.MessageFlutterSearchApi.search', codec, @@ -347,11 +347,12 @@ abstract class MessageFlutterSearchApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); + 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); + final MessageSearchRequest? arg_request = + (args[0] as MessageSearchRequest?); assert(arg_request != null, - 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); + 'Argument for dev.flutter.pigeon.MessageFlutterSearchApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/mock_handler_tester/test/test.dart b/packages/pigeon/mock_handler_tester/test/test.dart index a0e1bb2cd0bc..054047e2543e 100644 --- a/packages/pigeon/mock_handler_tester/test/test.dart +++ b/packages/pigeon/mock_handler_tester/test/test.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -32,12 +32,12 @@ class _TestHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchRequest.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -82,11 +82,12 @@ abstract class TestHostApi { } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); + 'Argument for dev.flutter.pigeon.MessageApi.search was null.'); final List args = (message as List?)!; - final MessageSearchRequest? arg_request = (args[0] as MessageSearchRequest?); + final MessageSearchRequest? arg_request = + (args[0] as MessageSearchRequest?); assert(arg_request != null, - 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); + 'Argument for dev.flutter.pigeon.MessageApi.search was null, expected non-null MessageSearchRequest.'); final MessageSearchReply output = api.search(arg_request!); return [output]; }); @@ -116,15 +117,15 @@ class _TestNestedApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return MessageNested.decode(readValue(buffer)! as List); - - case 129: + + case 129: return MessageSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return MessageSearchRequest.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -150,11 +151,11 @@ abstract class TestNestedApi { } else { channel.setMockMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); + 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null.'); final List args = (message as List?)!; final MessageNested? arg_nested = (args[0] as MessageNested?); assert(arg_nested != null, - 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); + 'Argument for dev.flutter.pigeon.MessageNestedApi.search was null, expected non-null MessageNested.'); final MessageSearchReply output = api.search(arg_nested!); return [output]; }); diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AllDatatypesTest.m b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AllDatatypesTest.m index 86c8a443dd53..faf67bc3ec6e 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AllDatatypesTest.m +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AllDatatypesTest.m @@ -28,21 +28,21 @@ - (void)testAllNull { [[FlutterIntegrationCoreApi alloc] initWithBinaryMessenger:binaryMessenger]; XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [api echoAllTypes:everything - completion:^(AllTypes *_Nonnull result, NSError *_Nullable error) { - XCTAssertNil(error); - XCTAssertNotNil(result); - XCTAssert([result.aBool isEqual:[NSNull null]]); - XCTAssert([result.anInt isEqual:[NSNull null]]); - XCTAssert([result.aDouble isEqual:[NSNull null]]); - XCTAssert([result.aString isEqual:[NSNull null]]); - XCTAssert([result.aByteArray isEqual:[NSNull null]]); - XCTAssert([result.a4ByteArray isEqual:[NSNull null]]); - XCTAssert([result.a8ByteArray isEqual:[NSNull null]]); - XCTAssert([result.aFloatArray isEqual:[NSNull null]]); - XCTAssert([result.aList isEqual:[NSNull null]]); - XCTAssert([result.aMap isEqual:[NSNull null]]); - [expectation fulfill]; - }]; + completion:^(AllTypes *_Nonnull result, NSError *_Nullable error) { + XCTAssertNil(error); + XCTAssertNotNil(result); + XCTAssert([result.aBool isEqual:[NSNull null]]); + XCTAssert([result.anInt isEqual:[NSNull null]]); + XCTAssert([result.aDouble isEqual:[NSNull null]]); + XCTAssert([result.aString isEqual:[NSNull null]]); + XCTAssert([result.aByteArray isEqual:[NSNull null]]); + XCTAssert([result.a4ByteArray isEqual:[NSNull null]]); + XCTAssert([result.a8ByteArray isEqual:[NSNull null]]); + XCTAssert([result.aFloatArray isEqual:[NSNull null]]); + XCTAssert([result.aList isEqual:[NSNull null]]); + XCTAssert([result.aMap isEqual:[NSNull null]]); + [expectation fulfill]; + }]; [self waitForExpectations:@[ expectation ] timeout:1.0]; } 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 ff4715e18552..c5c74b06c412 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -86,8 +86,10 @@ class AllTypes { aList: result[8] as List?, aMap: result[9] as Map?, nestedList: (result[10] as List?)?.cast?>(), - mapWithAnnotations: (result[11] as Map?)?.cast(), - mapWithObject: (result[12] as Map?)?.cast(), + mapWithAnnotations: + (result[11] as Map?)?.cast(), + mapWithObject: + (result[12] as Map?)?.cast(), ); } } @@ -107,9 +109,9 @@ class _HostIntegrationCoreApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return AllTypes.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -134,8 +136,7 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.noop', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -196,9 +197,9 @@ class _FlutterIntegrationCoreApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return AllTypes.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -217,7 +218,8 @@ abstract class FlutterIntegrationCoreApi { /// Returns the passed object, to test serialization and deserialization. AllTypes echoAllTypes(AllTypes everything); - static void setup(FlutterIntegrationCoreApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(FlutterIntegrationCoreApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.FlutterIntegrationCoreApi.noop', codec, @@ -241,11 +243,11 @@ abstract class FlutterIntegrationCoreApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes was null.'); + 'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes was null.'); final List args = (message as List?)!; final AllTypes? arg_everything = (args[0] as AllTypes?); assert(arg_everything != null, - 'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes was null, expected non-null AllTypes.'); + 'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes was null, expected non-null AllTypes.'); final AllTypes output = api.echoAllTypes(arg_everything!); return output; }); @@ -254,7 +256,6 @@ abstract class FlutterIntegrationCoreApi { } } - /// An API that can be implemented for minimal, compile-only tests. class HostTrivialApi { /// Constructor for [HostTrivialApi]. The [binaryMessenger] named argument is @@ -270,8 +271,7 @@ class HostTrivialApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostTrivialApi.noop', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', 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 52c756587ddb..c24498804bc3 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -11,7 +11,6 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class MultipleArityHostApi { /// Constructor for [MultipleArityHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default @@ -50,13 +49,13 @@ class MultipleArityHostApi { } } - abstract class MultipleArityFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int subtract(int x, int y); - static void setup(MultipleArityFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(MultipleArityFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.MultipleArityFlutterApi.subtract', codec, @@ -66,14 +65,14 @@ abstract class MultipleArityFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); assert(arg_x != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int? arg_y = (args[1] as int?); assert(arg_y != null, - 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); + 'Argument for dev.flutter.pigeon.MultipleArityFlutterApi.subtract was null, expected non-null int.'); final int output = api.subtract(arg_x!, arg_y!); return output; }); 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 2eb489a4d2a5..0fb639aed238 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -98,10 +98,8 @@ class NonNullFieldSearchReply { result: result[0]! as String, error: result[1]! as String, indices: (result[2] as List?)!.cast(), - extraData: ExtraData.decode(result[3]! as List) -, - type: ReplyType.values[result[4]! as int] -, + extraData: ExtraData.decode(result[3]! as List), + type: ReplyType.values[result[4]! as int], ); } } @@ -127,15 +125,17 @@ class _NonNullFieldHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ExtraData.decode(readValue(buffer)! as List); - - case 129: - return NonNullFieldSearchReply.decode(readValue(buffer)! as List); - - case 130: - return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); - + + case 129: + return NonNullFieldSearchReply.decode( + readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode( + readValue(buffer)! as List); + default: return super.readValueOfType(type, buffer); } @@ -152,7 +152,8 @@ class NonNullFieldHostApi { static const MessageCodec codec = _NonNullFieldHostApiCodec(); - Future search(NonNullFieldSearchRequest arg_nested) async { + Future search( + NonNullFieldSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NonNullFieldHostApi.search', codec, binaryMessenger: _binaryMessenger); @@ -201,15 +202,17 @@ class _NonNullFieldFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ExtraData.decode(readValue(buffer)! as List); - - case 129: - return NonNullFieldSearchReply.decode(readValue(buffer)! as List); - - case 130: - return NonNullFieldSearchRequest.decode(readValue(buffer)! as List); - + + case 129: + return NonNullFieldSearchReply.decode( + readValue(buffer)! as List); + + case 130: + return NonNullFieldSearchRequest.decode( + readValue(buffer)! as List); + default: return super.readValueOfType(type, buffer); } @@ -221,7 +224,8 @@ abstract class NonNullFieldFlutterApi { NonNullFieldSearchReply search(NonNullFieldSearchRequest request); - static void setup(NonNullFieldFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NonNullFieldFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NonNullFieldFlutterApi.search', codec, @@ -231,11 +235,12 @@ abstract class NonNullFieldFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); + 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null.'); final List args = (message as List?)!; - final NonNullFieldSearchRequest? arg_request = (args[0] as NonNullFieldSearchRequest?); + final NonNullFieldSearchRequest? arg_request = + (args[0] as NonNullFieldSearchRequest?); assert(arg_request != null, - 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); + 'Argument for dev.flutter.pigeon.NonNullFieldFlutterApi.search was null, expected non-null NonNullFieldSearchRequest.'); final NonNullFieldSearchReply output = api.search(arg_request!); return output; }); 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 3a838d530e83..3eb644e4ff4d 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -105,12 +105,14 @@ class _NullFieldsHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode(readValue(buffer)! as List); - - case 129: - return NullFieldsSearchRequest.decode(readValue(buffer)! as List); - + case 128: + return NullFieldsSearchReply.decode( + readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode( + readValue(buffer)! as List); + default: return super.readValueOfType(type, buffer); } @@ -127,7 +129,8 @@ class NullFieldsHostApi { static const MessageCodec codec = _NullFieldsHostApiCodec(); - Future search(NullFieldsSearchRequest arg_nested) async { + Future search( + NullFieldsSearchRequest arg_nested) async { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NullFieldsHostApi.search', codec, binaryMessenger: _binaryMessenger); @@ -173,12 +176,14 @@ class _NullFieldsFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: - return NullFieldsSearchReply.decode(readValue(buffer)! as List); - - case 129: - return NullFieldsSearchRequest.decode(readValue(buffer)! as List); - + case 128: + return NullFieldsSearchReply.decode( + readValue(buffer)! as List); + + case 129: + return NullFieldsSearchRequest.decode( + readValue(buffer)! as List); + default: return super.readValueOfType(type, buffer); } @@ -190,7 +195,8 @@ abstract class NullFieldsFlutterApi { NullFieldsSearchReply search(NullFieldsSearchRequest request); - static void setup(NullFieldsFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullFieldsFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NullFieldsFlutterApi.search', codec, @@ -200,11 +206,12 @@ abstract class NullFieldsFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); + 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null.'); final List args = (message as List?)!; - final NullFieldsSearchRequest? arg_request = (args[0] as NullFieldsSearchRequest?); + final NullFieldsSearchRequest? arg_request = + (args[0] as NullFieldsSearchRequest?); assert(arg_request != null, - 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); + 'Argument for dev.flutter.pigeon.NullFieldsFlutterApi.search was null, expected non-null NullFieldsSearchRequest.'); final NullFieldsSearchReply output = api.search(arg_request!); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart index bd4cabf93da5..8b4c026c36bb 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -124,18 +124,19 @@ class _ApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return FlutterSearchReplies.decode(readValue(buffer)! as List); - - case 129: + + case 129: return FlutterSearchReply.decode(readValue(buffer)! as List); - - case 130: + + case 130: return FlutterSearchRequest.decode(readValue(buffer)! as List); - - case 131: - return FlutterSearchRequests.decode(readValue(buffer)! as List); - + + case 131: + return FlutterSearchRequests.decode( + readValue(buffer)! as List); + default: return super.readValueOfType(type, buffer); } @@ -146,8 +147,7 @@ class Api { /// Constructor for [Api]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - Api({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; + Api({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; static const MessageCodec codec = _ApiCodec(); @@ -179,7 +179,8 @@ class Api { } } - Future doSearches(FlutterSearchRequests arg_request) async { + Future doSearches( + FlutterSearchRequests arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.Api.doSearches', codec, binaryMessenger: _binaryMessenger); 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 b88d6b0d0e13..8e5fd5a430e7 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -11,7 +11,6 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class NullableReturnHostApi { /// Constructor for [NullableReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default @@ -26,8 +25,7 @@ class NullableReturnHostApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NullableReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -45,13 +43,13 @@ class NullableReturnHostApi { } } - abstract class NullableReturnFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int? doit(); - static void setup(NullableReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullableReturnFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NullableReturnFlutterApi.doit', codec, @@ -69,7 +67,6 @@ abstract class NullableReturnFlutterApi { } } - class NullableArgHostApi { /// Constructor for [NullableArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default @@ -108,13 +105,13 @@ class NullableArgHostApi { } } - abstract class NullableArgFlutterApi { static const MessageCodec codec = StandardMessageCodec(); int doit(int? x); - static void setup(NullableArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullableArgFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NullableArgFlutterApi.doit', codec, @@ -124,7 +121,7 @@ abstract class NullableArgFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); + 'Argument for dev.flutter.pigeon.NullableArgFlutterApi.doit was null.'); final List args = (message as List?)!; final int? arg_x = (args[0] as int?); final int output = api.doit(arg_x); @@ -135,7 +132,6 @@ abstract class NullableArgFlutterApi { } } - class NullableCollectionReturnHostApi { /// Constructor for [NullableCollectionReturnHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default @@ -150,8 +146,7 @@ class NullableCollectionReturnHostApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NullableCollectionReturnHostApi.doit', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -169,13 +164,13 @@ class NullableCollectionReturnHostApi { } } - abstract class NullableCollectionReturnFlutterApi { static const MessageCodec codec = StandardMessageCodec(); List? doit(); - static void setup(NullableCollectionReturnFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullableCollectionReturnFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NullableCollectionReturnFlutterApi.doit', codec, @@ -193,7 +188,6 @@ abstract class NullableCollectionReturnFlutterApi { } } - class NullableCollectionArgHostApi { /// Constructor for [NullableCollectionArgHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default @@ -232,13 +226,13 @@ class NullableCollectionArgHostApi { } } - abstract class NullableCollectionArgFlutterApi { static const MessageCodec codec = StandardMessageCodec(); List doit(List? x); - static void setup(NullableCollectionArgFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(NullableCollectionArgFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit', codec, @@ -248,9 +242,10 @@ abstract class NullableCollectionArgFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); + 'Argument for dev.flutter.pigeon.NullableCollectionArgFlutterApi.doit was null.'); final List args = (message as List?)!; - final List? arg_x = (args[0] as List?)?.cast(); + final List? arg_x = + (args[0] as List?)?.cast(); final List output = api.doit(arg_x); return output; }); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart index 620ef5457daf..c65ae7e1b1af 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -11,7 +11,6 @@ import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer; import 'package:flutter/services.dart'; - class PrimitiveHostApi { /// Constructor for [PrimitiveHostApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default @@ -266,7 +265,6 @@ class PrimitiveHostApi { } } - abstract class PrimitiveFlutterApi { static const MessageCodec codec = StandardMessageCodec(); @@ -288,7 +286,8 @@ abstract class PrimitiveFlutterApi { Map aStringIntMap(Map value); - static void setup(PrimitiveFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(PrimitiveFlutterApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.PrimitiveFlutterApi.anInt', codec, @@ -298,11 +297,11 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null.'); final List args = (message as List?)!; final int? arg_value = (args[0] as int?); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt was null, expected non-null int.'); final int output = api.anInt(arg_value!); return output; }); @@ -317,11 +316,11 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null.'); final List args = (message as List?)!; final bool? arg_value = (args[0] as bool?); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBool was null, expected non-null bool.'); final bool output = api.aBool(arg_value!); return output; }); @@ -336,11 +335,11 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null.'); final List args = (message as List?)!; final String? arg_value = (args[0] as String?); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aString was null, expected non-null String.'); final String output = api.aString(arg_value!); return output; }); @@ -355,11 +354,11 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null.'); final List args = (message as List?)!; final double? arg_value = (args[0] as double?); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aDouble was null, expected non-null double.'); final double output = api.aDouble(arg_value!); return output; }); @@ -374,11 +373,12 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null.'); final List args = (message as List?)!; - final Map? arg_value = (args[0] as Map?); + final Map? arg_value = + (args[0] as Map?); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aMap was null, expected non-null Map.'); final Map output = api.aMap(arg_value!); return output; }); @@ -393,11 +393,11 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null.'); final List args = (message as List?)!; final List? arg_value = (args[0] as List?); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aList was null, expected non-null List.'); final List output = api.aList(arg_value!); return output; }); @@ -412,11 +412,11 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null.'); final List args = (message as List?)!; final Int32List? arg_value = (args[0] as Int32List?); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.anInt32List was null, expected non-null Int32List.'); final Int32List output = api.anInt32List(arg_value!); return output; }); @@ -431,11 +431,12 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null.'); final List args = (message as List?)!; - final List? arg_value = (args[0] as List?)?.cast(); + final List? arg_value = + (args[0] as List?)?.cast(); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aBoolList was null, expected non-null List.'); final List output = api.aBoolList(arg_value!); return output; }); @@ -450,11 +451,12 @@ abstract class PrimitiveFlutterApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null.'); final List args = (message as List?)!; - final Map? arg_value = (args[0] as Map?)?.cast(); + final Map? arg_value = + (args[0] as Map?)?.cast(); assert(arg_value != null, - 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); + 'Argument for dev.flutter.pigeon.PrimitiveFlutterApi.aStringIntMap was null, expected non-null Map.'); final Map output = api.aStringIntMap(arg_value!); return output; }); 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 ff4715e18552..c5c74b06c412 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 @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// +// // Autogenerated from Pigeon (v4.2.9), 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 @@ -86,8 +86,10 @@ class AllTypes { aList: result[8] as List?, aMap: result[9] as Map?, nestedList: (result[10] as List?)?.cast?>(), - mapWithAnnotations: (result[11] as Map?)?.cast(), - mapWithObject: (result[12] as Map?)?.cast(), + mapWithAnnotations: + (result[11] as Map?)?.cast(), + mapWithObject: + (result[12] as Map?)?.cast(), ); } } @@ -107,9 +109,9 @@ class _HostIntegrationCoreApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return AllTypes.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -134,8 +136,7 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.noop', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -196,9 +197,9 @@ class _FlutterIntegrationCoreApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return AllTypes.decode(readValue(buffer)! as List); - + default: return super.readValueOfType(type, buffer); } @@ -217,7 +218,8 @@ abstract class FlutterIntegrationCoreApi { /// Returns the passed object, to test serialization and deserialization. AllTypes echoAllTypes(AllTypes everything); - static void setup(FlutterIntegrationCoreApi? api, {BinaryMessenger? binaryMessenger}) { + static void setup(FlutterIntegrationCoreApi? api, + {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.FlutterIntegrationCoreApi.noop', codec, @@ -241,11 +243,11 @@ abstract class FlutterIntegrationCoreApi { } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes was null.'); + 'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes was null.'); final List args = (message as List?)!; final AllTypes? arg_everything = (args[0] as AllTypes?); assert(arg_everything != null, - 'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes was null, expected non-null AllTypes.'); + 'Argument for dev.flutter.pigeon.FlutterIntegrationCoreApi.echoAllTypes was null, expected non-null AllTypes.'); final AllTypes output = api.echoAllTypes(arg_everything!); return output; }); @@ -254,7 +256,6 @@ abstract class FlutterIntegrationCoreApi { } } - /// An API that can be implemented for minimal, compile-only tests. class HostTrivialApi { /// Constructor for [HostTrivialApi]. The [binaryMessenger] named argument is @@ -270,8 +271,7 @@ class HostTrivialApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostTrivialApi.noop', codec, binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send(null) as List?; + final List? replyList = await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', From b54362b76bf90d51d4c76ee0375f42379b73a33c Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 2 Dec 2022 17:40:11 -0800 Subject: [PATCH 30/55] more gen files --- .../lib/core_tests.gen.dart | 102 ++++++++++++++++++ .../lib/src/generated/core_tests.gen.dart | 67 ++++++------ 2 files changed, 132 insertions(+), 37 deletions(-) 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 c5c74b06c412..9cebb71bc205 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 @@ -94,6 +94,27 @@ class AllTypes { } } +class AllTypesWrapper { + AllTypesWrapper({ + required this.values, + }); + + AllTypes values; + + Object encode() { + final List pigeonList = []; + pigeonList.add(values.encode()); + return pigeonList; + } + + static AllTypesWrapper decode(Object result) { + result as List; + return AllTypesWrapper( + values: AllTypes.decode(result[0]! as List), + ); + } +} + class _HostIntegrationCoreApiCodec extends StandardMessageCodec { const _HostIntegrationCoreApiCodec(); @override @@ -101,6 +122,9 @@ class _HostIntegrationCoreApiCodec extends StandardMessageCodec { if (value is AllTypes) { buffer.putUint8(128); writeValue(buffer, value.encode()); + } else if (value is AllTypesWrapper) { + buffer.putUint8(129); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -112,6 +136,9 @@ class _HostIntegrationCoreApiCodec extends StandardMessageCodec { case 128: return AllTypes.decode(readValue(buffer)! as List); + case 129: + return AllTypesWrapper.decode(readValue(buffer)! as List); + default: return super.readValueOfType(type, buffer); } @@ -180,6 +207,81 @@ class HostIntegrationCoreApi { return (replyList[0] as AllTypes?)!; } } + + /// Returns an error, to test error handling. + Future throwError() async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.HostIntegrationCoreApi.throwError', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = await channel.send(null) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return; + } + } + + /// Returns the inner `aString` value from the wrapped object, to test + /// sending of nested objects. + Future extractNestedString(AllTypesWrapper arg_wrapper) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.HostIntegrationCoreApi.extractNestedString', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_wrapper]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return (replyList[0] as String?); + } + } + + /// Returns the inner `aString` value from the wrapped object, to test + /// sending of nested objects. + Future createNestedString(String arg_string) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.HostIntegrationCoreApi.createNestedString', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_string]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], + ); + } else if (replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (replyList[0] as AllTypesWrapper?)!; + } + } } class _FlutterIntegrationCoreApiCodec extends StandardMessageCodec { 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 4a265b41cf62..9cebb71bc205 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 @@ -102,15 +102,15 @@ class AllTypesWrapper { AllTypes values; Object encode() { - final Map pigeonMap = {}; - pigeonMap['values'] = values.encode(); - return pigeonMap; + final List pigeonList = []; + pigeonList.add(values.encode()); + return pigeonList; } - static AllTypesWrapper decode(Object message) { - final Map pigeonMap = message as Map; + static AllTypesWrapper decode(Object result) { + result as List; return AllTypesWrapper( - values: AllTypes.decode(pigeonMap['values']!), + values: AllTypes.decode(result[0]! as List), ); } } @@ -137,7 +137,7 @@ class _HostIntegrationCoreApiCodec extends StandardMessageCodec { return AllTypes.decode(readValue(buffer)! as List); case 129: - return AllTypesWrapper.decode(readValue(buffer)!); + return AllTypesWrapper.decode(readValue(buffer)! as List); default: return super.readValueOfType(type, buffer); @@ -213,20 +213,17 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.throwError', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + final List? replyList = await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { return; @@ -239,23 +236,21 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.extractNestedString', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_wrapper]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_wrapper]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { - return (replyMap['result'] as String?); + return (replyList[0] as String?); } } @@ -265,28 +260,26 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.createNestedString', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_string]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_string]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as AllTypesWrapper?)!; + return (replyList[0] as AllTypesWrapper?)!; } } } From 84a83c07f91b7a95e8c94498838e041c563381df Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 8 Dec 2022 10:42:05 -0800 Subject: [PATCH 31/55] gen files --- .../mock_handler_tester/test/message.dart | 2 +- .../pigeon/mock_handler_tester/test/test.dart | 2 +- .../lib/core_tests.gen.dart | 240 +++++------------- .../lib/multiple_arity.gen.dart | 2 +- .../lib/non_null_fields.gen.dart | 2 +- .../lib/null_fields.gen.dart | 2 +- .../lib/null_safe_pigeon.dart | 2 +- .../lib/nullable_returns.gen.dart | 2 +- .../lib/primitive.dart | 2 +- .../lib/src/generated/core_tests.gen.dart | 134 +++++----- 10 files changed, 126 insertions(+), 264 deletions(-) diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index 8d67f7ea15f5..c6f2cf02ba77 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 (v4.2.9), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; diff --git a/packages/pigeon/mock_handler_tester/test/test.dart b/packages/pigeon/mock_handler_tester/test/test.dart index 054047e2543e..de319e08ac73 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 (v4.2.9), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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/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 2f654262d22a..aee24cf9cf10 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 (v4.2.10), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; @@ -115,27 +115,6 @@ class AllTypesWrapper { } } -class AllTypesWrapper { - AllTypesWrapper({ - required this.values, - }); - - AllTypes values; - - Object encode() { - final Map pigeonMap = {}; - pigeonMap['values'] = values.encode(); - return pigeonMap; - } - - static AllTypesWrapper decode(Object message) { - final Map pigeonMap = message as Map; - return AllTypesWrapper( - values: AllTypes.decode(pigeonMap['values']!), - ); - } -} - class _HostIntegrationCoreApiCodec extends StandardMessageCodec { const _HostIntegrationCoreApiCodec(); @override @@ -160,9 +139,6 @@ class _HostIntegrationCoreApiCodec extends StandardMessageCodec { case 129: return AllTypesWrapper.decode(readValue(buffer)! as List); - case 129: - return AllTypesWrapper.decode(readValue(buffer)!); - default: return super.readValueOfType(type, buffer); } @@ -307,117 +283,32 @@ class HostIntegrationCoreApi { } } - /// Returns an error, to test error handling. - Future throwError() async { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostIntegrationCoreApi.throwError', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { - throw PlatformException( - code: 'channel-error', - message: 'Unable to establish connection on channel.', - ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; - throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], - ); - } else { - return; - } - } - - /// Returns the inner `aString` value from the wrapped object, to test - /// sending of nested objects. - Future extractNestedString(AllTypesWrapper arg_wrapper) async { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostIntegrationCoreApi.extractNestedString', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_wrapper]) as Map?; - if (replyMap == null) { - throw PlatformException( - code: 'channel-error', - message: 'Unable to establish connection on channel.', - ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; - throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], - ); - } else { - return (replyMap['result'] as String?); - } - } - - /// Returns the inner `aString` value from the wrapped object, to test - /// sending of nested objects. - Future createNestedString(String arg_string) async { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.HostIntegrationCoreApi.createNestedString', codec, - binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_string]) as Map?; - if (replyMap == null) { - throw PlatformException( - code: 'channel-error', - message: 'Unable to establish connection on channel.', - ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; - throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], - ); - } else if (replyMap['result'] == null) { - throw PlatformException( - code: 'null-error', - message: 'Host platform returned null value for non-null return value.', - ); - } else { - return (replyMap['result'] as AllTypesWrapper?)!; - } - } - /// Returns passed in arguments of multiple types. Future sendMultipleTypes( bool arg_aBool, int arg_anInt, String arg_aString) async { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.sendMultipleTypes', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_aBool, arg_anInt, arg_aString]) - as Map?; - if (replyMap == null) { + final List? replyList = await channel + .send([arg_aBool, arg_anInt, arg_aString]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as AllTypes?)!; + return (replyList[0] as AllTypes?)!; } } @@ -426,28 +317,26 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.echoInt', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_anInt]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_anInt]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as int?)!; + return (replyList[0] as int?)!; } } @@ -456,28 +345,26 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.echoBool', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_aBool]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_aBool]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as bool?)!; + return (replyList[0] as bool?)!; } } @@ -487,20 +374,17 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.noopAsync', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + final List? replyList = await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { return; @@ -512,28 +396,26 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.echoAsyncString', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_aString]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_aString]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as String?)!; + return (replyList[0] as String?)!; } } @@ -541,20 +423,17 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterNoop', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + final List? replyList = await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { return; @@ -566,28 +445,26 @@ class HostIntegrationCoreApi { 'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoString', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_aString]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_aString]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as String?)!; + return (replyList[0] as String?)!; } } } @@ -630,6 +507,7 @@ abstract class FlutterIntegrationCoreApi { /// Returns the passed string, to test serialization and deserialization. String echoString(String aString); + static void setup(FlutterIntegrationCoreApi? api, {BinaryMessenger? binaryMessenger}) { { 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 c24498804bc3..52b637ddee96 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 (v4.2.9), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; 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 0fb639aed238..56f0808c6fbf 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 (v4.2.9), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; 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 3eb644e4ff4d..69d428ce3390 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 (v4.2.9), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart index 8b4c026c36bb..5d325fc6bc73 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.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 (v4.2.9), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; 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 8e5fd5a430e7..9dc01be967f1 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 (v4.2.9), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart index c65ae7e1b1af..3fe59dff5ce7 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.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 (v4.2.9), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; 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 6cbfce8757bc..aee24cf9cf10 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 (v4.2.10), do not edit directly. +// Autogenerated from Pigeon (v4.2.11), 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 import 'dart:async'; @@ -289,29 +289,26 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.sendMultipleTypes', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_aBool, arg_anInt, arg_aString]) - as Map?; - if (replyMap == null) { + final List? replyList = await channel + .send([arg_aBool, arg_anInt, arg_aString]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as AllTypes?)!; + return (replyList[0] as AllTypes?)!; } } @@ -320,28 +317,26 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.echoInt', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_anInt]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_anInt]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as int?)!; + return (replyList[0] as int?)!; } } @@ -350,28 +345,26 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.echoBool', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_aBool]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_aBool]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as bool?)!; + return (replyList[0] as bool?)!; } } @@ -381,20 +374,17 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.noopAsync', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + final List? replyList = await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { return; @@ -406,28 +396,26 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.echoAsyncString', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_aString]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_aString]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as String?)!; + return (replyList[0] as String?)!; } } @@ -435,20 +423,17 @@ class HostIntegrationCoreApi { final BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterNoop', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send(null) as Map?; - if (replyMap == null) { + final List? replyList = await channel.send(null) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); } else { return; @@ -460,28 +445,26 @@ class HostIntegrationCoreApi { 'dev.flutter.pigeon.HostIntegrationCoreApi.callFlutterEchoString', codec, binaryMessenger: _binaryMessenger); - final Map? replyMap = - await channel.send([arg_aString]) as Map?; - if (replyMap == null) { + final List? replyList = + await channel.send([arg_aString]) as List?; + if (replyList == null) { throw PlatformException( code: 'channel-error', message: 'Unable to establish connection on channel.', ); - } else if (replyMap['error'] != null) { - final Map error = - (replyMap['error'] as Map?)!; + } else if (replyList.length > 1) { throw PlatformException( - code: (error['code'] as String?)!, - message: error['message'] as String?, - details: error['details'], + code: (replyList[0] as String?)!, + message: replyList[1] as String?, + details: replyList[2], ); - } else if (replyMap['result'] == null) { + } else if (replyList[0] == null) { throw PlatformException( code: 'null-error', message: 'Host platform returned null value for non-null return value.', ); } else { - return (replyMap['result'] as String?)!; + return (replyList[0] as String?)!; } } } @@ -524,6 +507,7 @@ abstract class FlutterIntegrationCoreApi { /// Returns the passed string, to test serialization and deserialization. String echoString(String aString); + static void setup(FlutterIntegrationCoreApi? api, {BinaryMessenger? binaryMessenger}) { { From 23221fec7606f7c6fc310e3bc7adae6d23ae32d1 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 8 Dec 2022 20:35:49 -0800 Subject: [PATCH 32/55] generator reviews pt1 --- packages/pigeon/CHANGELOG.md | 2 +- packages/pigeon/lib/cpp_generator.dart | 3 +-- packages/pigeon/lib/dart_generator.dart | 6 +++--- packages/pigeon/lib/objc_generator.dart | 15 +++++++-------- packages/pigeon/test/objc_generator_test.dart | 5 +---- 5 files changed, 13 insertions(+), 18 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index c16d3227f3f1..2d9dd4f18752 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,6 +1,6 @@ ## 4.2.11 -* Updates serialisation to use lists instead of maps. +* Updates serialisation to use lists instead of maps to improve performance. ## 4.2.10 diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 394b9b3061c1..35406cfda848 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -330,7 +330,6 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { final String instanceVariable = _makeInstanceVariableName(field); - // final String encodableKey = 'flutter::EncodableValue("${field.name}")'; String encodableValue = ''; if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { @@ -392,7 +391,7 @@ else if (const int64_t* ${pointerFieldName}_64 = std::get_if(&$encodabl .map((Class x) => x.name) .contains(field.type.baseName)) { indent.write( - 'if (const flutter::EncodableList* $pointerFieldName = std::get_if(&$encodableFieldName)) '); //might need to change reference + 'if (const flutter::EncodableList* $pointerFieldName = std::get_if(&$encodableFieldName)) '); indent.scoped('{', '}', () { indent.writeln( '$instanceVariableName = ${hostDatatype.datatype}(*$pointerFieldName);'); diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index e02bd35b5403..2680ea0f5db6 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -111,9 +111,9 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { }); } indent.writeln('default:'); - indent.inc(); - indent.writeln('return super.readValueOfType(type, buffer);'); - indent.dec(); + indent.scoped('', '', () { + indent.writeln('return super.readValueOfType(type, buffer);'); + }); }); }); }); diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 1e4bea429bce..af2b8e97b5e1 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -615,7 +615,7 @@ String _listGetter(List classNames, String list, NamedType field, if (prefix != null) { className = '$prefix$className'; } - return '[$className fromList:($list[$index] == [NSNull null] ? nil : $list[$index])]'; + return '[$className fromList:($list[$index])]'; } else { return '$list[$index]'; } @@ -932,8 +932,6 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { final String className = _className(options.prefix, klass.name); indent.writeln('@interface $className ()'); indent.writeln('+ ($className *)fromList:(NSMutableArray *)list;'); - indent.writeln( - '+ (nullable $className *)nullableFromList:(NSMutableArray *)list;'); indent.writeln('- (NSMutableArray *)toList;'); indent.writeln('@end'); } @@ -959,8 +957,9 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { const String resultName = 'pigeonResult'; indent.writeln('$className *$resultName = [[$className alloc] init];'); final int len = klass.fields.length; - indent.scoped('if (list == nil) {', '}', () { - indent.writeln('list = [[NSMutableArray alloc] init];'); + indent.scoped('if (list == nil || list == [NSNull null]) {', '}', () { + indent.writeln( + 'list = [[NSMutableArray alloc] initWithCapacity: $len];'); indent.write('for (int i = 0; i < $len; i++) '); indent.scoped('{', '}', () { indent.writeln('[list addObject: [NSNull null]];'); @@ -984,14 +983,14 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { }); indent.writeln('return $resultName;'); }); - indent.writeln( - '+ (nullable $className *)nullableFromList:(NSMutableArray *)list { return (list) ? [$className fromList:list] : nil; }'); } void writeToList() { indent.write('- (NSMutableArray *)toList '); indent.scoped('{', '}', () { - indent.writeln('NSMutableArray *list = [[NSMutableArray alloc] init];'); + final int len = klass.fields.length; + indent.writeln( + 'NSMutableArray *list = [[NSMutableArray alloc] initWithCapacity: $len];'); klass.fields .toList() .asMap() diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index e2ec6f719476..c04fb0b7b079 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -386,10 +386,7 @@ void main() { final StringBuffer sink = StringBuffer(); generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); final String code = sink.toString(); - expect( - code, - contains( - 'pigeonResult.nested = [Input fromList:(list[0] == [NSNull null] ? nil : list[0])];')); + expect(code, contains('pigeonResult.nested = [Input fromList:(list[0])];')); expect( code, contains( From 01e20723d6c299f32a98b230c34a45521ea34f92 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 8 Dec 2022 21:10:06 -0800 Subject: [PATCH 33/55] test fixes pt1 --- .../alternate_language_test_plugin/AllDatatypesTest.java | 1 + .../example/ios/RunnerTests/AsyncHandlersTest.m | 1 - .../test_plugin/windows/test/null_fields_test.cpp | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java index 9b624393a0ec..2704605d482b 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/test/java/com/example/alternate_language_test_plugin/AllDatatypesTest.java @@ -145,6 +145,7 @@ public void integerToLong() { assertNotNull(list); assertNull(list.get(0)); assertNotNull(list.get(1)); + list.set(1, 123); AllTypes readEverything = AllTypes.fromList(list); assertEquals(readEverything.getAnInt(), everything.getAnInt()); } diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AsyncHandlersTest.m b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AsyncHandlersTest.m index 31bc66c09305..223857dfd715 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AsyncHandlersTest.m +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AsyncHandlersTest.m @@ -81,7 +81,6 @@ - (void)testAsyncFlutter2HostVoidVoid { binaryMessenger.handlers[channelName](nil, ^(NSData *data) { NSArray *outputList = [binaryMessenger.codec decode:data]; XCTAssertEqualObjects(outputList[0], [NSNull null]); - // XCTAssertEqualObjects(outputMap[@"error"], [NSNull null]); [expectation fulfill]; }); [self waitForExpectationsWithTimeout:1.0 handler:nil]; diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index d3feef1f3b92..2044240537fd 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -158,9 +158,9 @@ TEST_F(NullFieldsTest, RequestToMapWithNulls) { EXPECT_EQ(wrapped.size(), 2); - EncodableList list = wrapped[0] + EncodableList list = wrapped[0]; - EXPECT_EQ(list.size(), 2); + EXPECT_EQ(list.size(), 2); EXPECT_TRUE(list[0].IsNull()); EXPECT_EQ(list[1], 1); } From d579798fa054bfd24a937b89254ed5f07b4f06e4 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 02:55:48 -0800 Subject: [PATCH 34/55] fixed nits and nil issues with objc --- packages/pigeon/lib/cpp_generator.dart | 17 +++-- packages/pigeon/lib/java_generator.dart | 14 ++-- packages/pigeon/lib/objc_generator.dart | 31 ++------ .../ios/RunnerTests/AllDatatypesTest.m | 20 ++--- .../example/ios/RunnerTests/NullFieldsTest.m | 10 +-- .../example/ios/RunnerTests/RunnerTests.m | 2 +- .../windows/test/null_fields_test.cpp | 76 +++++++++++-------- packages/pigeon/test/cpp_generator_test.dart | 13 ++-- 8 files changed, 90 insertions(+), 93 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 35406cfda848..b9c17dfa6582 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -334,7 +334,8 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { if (!hostDatatype.isBuiltin && rootClassNameSet.contains(field.type.baseName)) { final String operator = field.type.isNullable ? '->' : '.'; - encodableValue = '$instanceVariable${operator}ToEncodableList()'; + encodableValue = + 'EncodeableValue($instanceVariable${operator}ToEncodableList())'; } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { final String nonNullValue = @@ -351,7 +352,7 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { '$instanceVariable ? $encodableValue : flutter::EncodableValue()'; } - indent.writeln('{$encodableValue},'); + indent.writeln('$encodableValue,'); } }); }); @@ -1146,16 +1147,16 @@ void generateCppSource(CppOptions options, Root root, StringSink sink) { indent.format(''' flutter::EncodableList ${api.name}::WrapError(std::string_view error_message) { \treturn flutter::EncodableList({ -\t\t{flutter::EncodableValue(std::string(error_message))}, -\t\t{flutter::EncodableValue("Error")}, -\t\t{flutter::EncodableValue()} +\t\tflutter::EncodableValue(std::string(error_message)), +\t\tflutter::EncodableValue("Error"), +\t\tflutter::EncodableValue() \t}); } flutter::EncodableList ${api.name}::WrapError(const FlutterError& error) { \treturn flutter::EncodableList({ -\t\t{flutter::EncodableValue(error.message())}, -\t\t{flutter::EncodableValue(error.code())}, -\t\t{error.details()} +\t\tflutter::EncodableValue(error.message()), +\t\tflutter::EncodableValue(error.code()), +\t\terror.details() \t}); }'''); indent.addln(''); diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index cbb4eb0bb99e..d355b1ee98d4 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -265,10 +265,7 @@ Result<$returnType> $resultName = new Result<$returnType>() { \t} \tpublic void error(Throwable error) { \t\tArrayList wrappedError = wrapError(error); -\t\twrapped.add(wrappedError.get(0)); -\t\twrapped.add(wrappedError.get(1)); -\t\twrapped.add(wrappedError.get(2)); -\t\treply.reply(wrapped); +\t\treply.reply(wrappedError); \t} }; '''); @@ -290,11 +287,12 @@ Result<$returnType> $resultName = new Result<$returnType>() { indent.scoped('{', '}', () { indent.writeln( 'ArrayList wrappedError = wrapError(exception);'); - indent.writeln('wrapped.add(wrappedError.get(0));'); - indent.writeln('wrapped.add(wrappedError.get(1));'); - indent.writeln('wrapped.add(wrappedError.get(2));'); if (method.isAsynchronous) { - indent.writeln('reply.reply(wrapped);'); + indent.writeln('reply.reply(wrappedError);'); + } else { + indent.writeln('wrapped.add(wrappedError.get(0));'); + indent.writeln('wrapped.add(wrappedError.get(1));'); + indent.writeln('wrapped.add(wrappedError.get(2));'); } }); if (!method.isAsynchronous) { diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index af2b8e97b5e1..ede72d95c0ca 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -615,9 +615,9 @@ String _listGetter(List classNames, String list, NamedType field, if (prefix != null) { className = '$prefix$className'; } - return '[$className fromList:($list[$index])]'; + return 'GetNullableObjectAtIndex($list, $index) != nil ? [$className fromList:(GetNullableObjectAtIndex($list, $index))] : nil'; } else { - return '$list[$index]'; + return 'GetNullableObjectAtIndex($list, $index)'; } } @@ -902,19 +902,11 @@ void generateObjcSource(ObjcOptions options, Root root, StringSink sink) { void writeHelperFunctions() { indent.format(''' -static NSMutableArray *wrapResult(id result, FlutterError *error) { -\tNSMutableArray *resultList = [[NSMutableArray alloc] init]; +static NSArray *wrapResult(id result, FlutterError *error) { \tif (error) { - -\t\t[resultList addObject:(error.code ?: [NSNull null])]; -\t\t[resultList addObject:(error.message ?: [NSNull null])]; -\t\t[resultList addObject:(error.details ?: [NSNull null])]; - -\t} else { -\t\t[resultList addObject:(result ?: [NSNull null])]; +\t\treturn @[ error.code ?: [NSNull null], error.message ?: [NSNull null], error.details ?: [NSNull null] ]; \t} - -\treturn resultList; +\treturn @[ result ?: [NSNull null] ]; }'''); indent.format(''' static id GetNullableObject(NSDictionary* dict, id key) { @@ -956,22 +948,13 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { indent.scoped('{', '}', () { const String resultName = 'pigeonResult'; indent.writeln('$className *$resultName = [[$className alloc] init];'); - final int len = klass.fields.length; - indent.scoped('if (list == nil || list == [NSNull null]) {', '}', () { - indent.writeln( - 'list = [[NSMutableArray alloc] initWithCapacity: $len];'); - indent.write('for (int i = 0; i < $len; i++) '); - indent.scoped('{', '}', () { - indent.writeln('[list addObject: [NSNull null]];'); - }); - }); klass.fields .toList() .asMap() .forEach((int index, final NamedType field) { if (enumNames.contains(field.type.baseName)) { indent.writeln( - '$resultName.${field.name} = [(${_listGetter(classNames, 'list', field, index, options.prefix)} == [NSNull null] ? 0 : ${_listGetter(classNames, 'list', field, index, options.prefix)}) integerValue];'); + '$resultName.${field.name} = [${_listGetter(classNames, 'list', field, index, options.prefix)} integerValue];'); } else { indent.writeln( '$resultName.${field.name} = ${_listGetter(classNames, 'list', field, index, options.prefix)};'); @@ -990,7 +973,7 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { indent.scoped('{', '}', () { final int len = klass.fields.length; indent.writeln( - 'NSMutableArray *list = [[NSMutableArray alloc] initWithCapacity: $len];'); + 'NSMutableArray *list = [[NSMutableArray alloc] initWithCapacity:$len];'); klass.fields .toList() .asMap() diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AllDatatypesTest.m b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AllDatatypesTest.m index faf67bc3ec6e..12d88a161137 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AllDatatypesTest.m +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/AllDatatypesTest.m @@ -31,16 +31,16 @@ - (void)testAllNull { completion:^(AllTypes *_Nonnull result, NSError *_Nullable error) { XCTAssertNil(error); XCTAssertNotNil(result); - XCTAssert([result.aBool isEqual:[NSNull null]]); - XCTAssert([result.anInt isEqual:[NSNull null]]); - XCTAssert([result.aDouble isEqual:[NSNull null]]); - XCTAssert([result.aString isEqual:[NSNull null]]); - XCTAssert([result.aByteArray isEqual:[NSNull null]]); - XCTAssert([result.a4ByteArray isEqual:[NSNull null]]); - XCTAssert([result.a8ByteArray isEqual:[NSNull null]]); - XCTAssert([result.aFloatArray isEqual:[NSNull null]]); - XCTAssert([result.aList isEqual:[NSNull null]]); - XCTAssert([result.aMap isEqual:[NSNull null]]); + XCTAssertNil(result.aBool); + XCTAssertNil(result.anInt); + XCTAssertNil(result.aDouble); + XCTAssertNil(result.aString); + XCTAssertNil(result.aByteArray); + XCTAssertNil(result.a4ByteArray); + XCTAssertNil(result.a8ByteArray); + XCTAssertNil(result.aFloatArray); + XCTAssertNil(result.aList); + XCTAssertNil(result.aMap); [expectation fulfill]; }]; [self waitForExpectations:@[ expectation ] timeout:1.0]; diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/NullFieldsTest.m b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/NullFieldsTest.m index 7d5a296815f2..fe05d5bc0d81 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/NullFieldsTest.m +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/NullFieldsTest.m @@ -84,7 +84,7 @@ - (void)testRequestFromListWithNulls { @1, ]; NullFieldsSearchRequest *request = [NullFieldsSearchRequest fromList:list]; - XCTAssertEqualObjects(request.query, [NSNull null]); + XCTAssertNil(request.query); } - (void)testReplyFromListWithValues { @@ -117,10 +117,10 @@ - (void)testReplyFromListWithNulls { [NSNull null], ]; NullFieldsSearchReply *reply = [NullFieldsSearchReply fromList:list]; - XCTAssertEqualObjects(reply.result, [NSNull null]); - XCTAssertEqualObjects(reply.error, [NSNull null]); - XCTAssertEqualObjects(reply.indices, [NSNull null]); - XCTAssertEqualObjects(reply.request.query, [NSNull null]); + XCTAssertNil(reply.result); + XCTAssertNil(reply.error); + XCTAssertNil(reply.indices); + XCTAssertNil(reply.request.query); XCTAssertEqual(NullFieldsSearchReplyTypeSuccess, reply.type); } diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/RunnerTests.m b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/RunnerTests.m index 6f438f562907..130788fe2bac 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/RunnerTests.m +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/example/ios/RunnerTests/RunnerTests.m @@ -34,7 +34,7 @@ - (void)testHandlesNull { reply.result = nil; NSArray *list = [reply toList]; ACMessageSearchReply *copy = [ACMessageSearchReply fromList:list]; - XCTAssertEqualObjects(copy.result, [NSNull null]); + XCTAssertNil(copy.result); } - (void)testHandlesNullFirst { diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index 2044240537fd..abda24b54a37 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -15,6 +15,21 @@ using flutter::EncodableList; using flutter::EncodableMap; using flutter::EncodableValue; +// EXPECTs that 'map' contains 'key', and then returns a pointer to its value. +// +// This gives useful test failure messages instead of silent crashes when the +// value isn't present, or has the wrong type. +template +const T* ExpectAndGetIndex(const EncodableList& list, const int i) { + EXPECT_LT(i, list.size()) << "Index " << i << " is out of bounds; size is " << list.size(); + if (i >= list.size()) { + return nullptr; + } + const T* value_ptr = std::get_if(&(list[i])); + EXPECT_NE(value_ptr, nullptr) << "Value for index " << i << " has incorrect type"; + return value_ptr; +} + } // namespace class NullFieldsTest : public ::testing::Test { @@ -74,8 +89,8 @@ TEST(NullFields, BuildReplyWithNulls) { TEST_F(NullFieldsTest, RequestFromListWithValues) { EncodableList list{ - {EncodableValue("hello")}, - {EncodableValue(1)}, + EncodableValue("hello"), + EncodableValue(1), }; NullFieldsSearchRequest request = RequestFromList(list); @@ -85,8 +100,8 @@ TEST_F(NullFieldsTest, RequestFromListWithValues) { TEST_F(NullFieldsTest, RequestFromListWithNulls) { EncodableList list{ - {EncodableValue()}, - {EncodableValue(1)}, + EncodableValue(), + EncodableValue(1), }; NullFieldsSearchRequest request = RequestFromList(list); @@ -96,18 +111,18 @@ TEST_F(NullFieldsTest, RequestFromListWithNulls) { TEST_F(NullFieldsTest, ReplyFromListWithValues) { EncodableList list{ - {EncodableValue("result")}, - {EncodableValue("error")}, - {EncodableValue(EncodableList{ + EncodableValue("result"), + EncodableValue("error"), + EncodableValue(EncodableList{ EncodableValue(1), EncodableValue(2), EncodableValue(3), - })}, - {EncodableValue(EncodableList{ - {EncodableValue("hello")}, - {EncodableValue(1)}, - })}, - {EncodableValue(0)}, + }), + EncodableValue(EncodableList{ + EncodableValue("hello"), + EncodableValue(1), + }), + EncodableValue(0), }; NullFieldsSearchReply reply = ReplyFromList(list); @@ -121,8 +136,8 @@ TEST_F(NullFieldsTest, ReplyFromListWithValues) { TEST_F(NullFieldsTest, ReplyFromListWithNulls) { EncodableList list{ - {EncodableValue()}, {EncodableValue()}, {EncodableValue()}, - {EncodableValue()}, {EncodableValue()}, + EncodableValue(), EncodableValue(), EncodableValue(), + EncodableValue(), EncodableValue(), }; NullFieldsSearchReply reply = ReplyFromList(list); @@ -142,11 +157,11 @@ TEST_F(NullFieldsTest, RequestToListWithValues) { EXPECT_EQ(wrapped.size(), 1); - EncodableList list = wrapped[0]; + EncodableList list = ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 2); - EXPECT_EQ(list[0], "hello"); - EXPECT_EQ(list[1], 1); + EXPECT_EQ(*ExpectAndGet(list, 0), "hello"); + EXPECT_EQ(*ExpectAndGet(list, 1), 1); } TEST_F(NullFieldsTest, RequestToMapWithNulls) { @@ -158,11 +173,11 @@ TEST_F(NullFieldsTest, RequestToMapWithNulls) { EXPECT_EQ(wrapped.size(), 2); - EncodableList list = wrapped[0]; + EncodableList list = ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 2); EXPECT_TRUE(list[0].IsNull()); - EXPECT_EQ(list[1], 1); + EXPECT_EQ(*ExpectAndGet(list, 1), 1); } TEST_F(NullFieldsTest, ReplyToMapWithValues) { @@ -180,30 +195,29 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { EXPECT_EQ(wrapped.size(), 1); - EncodableList list = wrapped[0]; + EncodableList list = ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 5); - EXPECT_EQ(list[0], "result"); - EXPECT_EQ(list[1], "error"); - const EncodableList& indices = list[2]; + EXPECT_EQ(*ExpectAndGetIndex(list, 0), "result"); + EXPECT_EQ(*ExpectAndGet(list, 1), "error"); + const EncodableList& indices = ExpectAndGetIndex(list, 2); EXPECT_EQ(indices.size(), 3); EXPECT_EQ(indices[0].LongValue(), 1L); EXPECT_EQ(indices[1].LongValue(), 2L); EXPECT_EQ(indices[2].LongValue(), 3L); - const EncodableList& wrapped_request_list = list[4]; - const EncodableList& request_list = - wrapped_request_list[0] EXPECT_EQ(request_list[0], "hello"); - EXPECT_EQ(request_list[1], 0); + const EncodableList& request_list = ExpectAndGetIndex(list, 4); + EXPECT_EQ(*ExpectAndGet(request_list, 0), "hello"); + EXPECT_EQ(*ExpectAndGet(request_list, 1), 0); } TEST_F(NullFieldsTest, ReplyToListWithNulls) { NullFieldsSearchReply reply; - EncodableList unwrapped = ListFromReply(reply); + EncodableList wrapped = ListFromReply(reply); - EXPECT_EQ(unwrapped.size(), 1); + EXPECT_EQ(wrapped.size(), 1); - EncodableList list = wrapped[0]; + EncodableList list = ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 5); EXPECT_TRUE(list[0].IsNull()); diff --git a/packages/pigeon/test/cpp_generator_test.dart b/packages/pigeon/test/cpp_generator_test.dart index 841cc10d8dd9..8e16662fc172 100644 --- a/packages/pigeon/test/cpp_generator_test.dart +++ b/packages/pigeon/test/cpp_generator_test.dart @@ -457,12 +457,13 @@ void main() { // Serialization handles optionals. expect( code, - contains('{nullable_bool_ ? flutter::EncodableValue(*nullable_bool_) ' - ': flutter::EncodableValue()}')); + contains('nullable_bool_ ? flutter::EncodableValue(*nullable_bool_) ' + ': flutter::EncodableValue()')); expect( code, - contains('{nullable_nested_ ? nullable_nested_->ToEncodableList() ' - ': flutter::EncodableValue()}')); + contains( + 'nullable_nested_ ? EncodeableValue(nullable_nested_->ToEncodableList()) ' + ': flutter::EncodableValue()')); } }); @@ -558,8 +559,8 @@ void main() { expect(code, contains('non_nullable_string_ = value_arg;')); expect(code, contains('non_nullable_nested_ = value_arg;')); // Serialization uses the value directly. - expect(code, contains('{flutter::EncodableValue(non_nullable_bool_)}')); - expect(code, contains('{non_nullable_nested_.ToEncodableList()}')); + expect(code, contains('flutter::EncodableValue(non_nullable_bool_)')); + expect(code, contains('non_nullable_nested_.ToEncodableList()')); } }); From 0a34031829d9cd03e2f4f2685019b3bc86ae1048 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 03:18:13 -0800 Subject: [PATCH 35/55] better fix for objc null classes --- packages/pigeon/lib/objc_generator.dart | 7 ++++++- .../test_plugin/windows/test/null_fields_test.cpp | 8 +++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index ede72d95c0ca..396f7e8aa672 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -615,7 +615,7 @@ String _listGetter(List classNames, String list, NamedType field, if (prefix != null) { className = '$prefix$className'; } - return 'GetNullableObjectAtIndex($list, $index) != nil ? [$className fromList:(GetNullableObjectAtIndex($list, $index))] : nil'; + return '[$className nullableFromList:(GetNullableObjectAtIndex($list, $index))]'; } else { return 'GetNullableObjectAtIndex($list, $index)'; } @@ -924,6 +924,8 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { final String className = _className(options.prefix, klass.name); indent.writeln('@interface $className ()'); indent.writeln('+ ($className *)fromList:(NSMutableArray *)list;'); + indent.writeln( + '+ (nullable $className *)nullableFromList:(NSMutableArray *)list;'); indent.writeln('- (NSMutableArray *)toList;'); indent.writeln('@end'); } @@ -966,6 +968,9 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { }); indent.writeln('return $resultName;'); }); + + indent.writeln( + '+ (nullable $className *)nullableFromList:(NSMutableArray *)list { return (list) ? [$className fromList:list] : nil; }'); } void writeToList() { diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index abda24b54a37..9628821e8895 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -21,12 +21,14 @@ using flutter::EncodableValue; // value isn't present, or has the wrong type. template const T* ExpectAndGetIndex(const EncodableList& list, const int i) { - EXPECT_LT(i, list.size()) << "Index " << i << " is out of bounds; size is " << list.size(); + EXPECT_LT(i, list.size()) + << "Index " << i << " is out of bounds; size is " << list.size(); if (i >= list.size()) { return nullptr; } const T* value_ptr = std::get_if(&(list[i])); - EXPECT_NE(value_ptr, nullptr) << "Value for index " << i << " has incorrect type"; + EXPECT_NE(value_ptr, nullptr) + << "Value for index " << i << " has incorrect type"; return value_ptr; } @@ -200,7 +202,7 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { EXPECT_EQ(list.size(), 5); EXPECT_EQ(*ExpectAndGetIndex(list, 0), "result"); EXPECT_EQ(*ExpectAndGet(list, 1), "error"); - const EncodableList& indices = ExpectAndGetIndex(list, 2); + const EncodableList& indices = ExpectAndGetIndex(list, 2); EXPECT_EQ(indices.size(), 3); EXPECT_EQ(indices[0].LongValue(), 1L); EXPECT_EQ(indices[1].LongValue(), 2L); From 8b11d201670b91c7262ef7f10c3c8d7f5273244b Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 03:20:27 -0800 Subject: [PATCH 36/55] fix doc comment --- .../test_plugin/windows/test/null_fields_test.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index 9628821e8895..ec74de54e4ad 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -15,10 +15,10 @@ using flutter::EncodableList; using flutter::EncodableMap; using flutter::EncodableValue; -// EXPECTs that 'map' contains 'key', and then returns a pointer to its value. -// -// This gives useful test failure messages instead of silent crashes when the -// value isn't present, or has the wrong type. +/// EXPECTs that 'list' contains 'index', and then returns a pointer to its value. +/// +/// This gives useful test failure messages instead of silent crashes when the +/// value isn't present, or has the wrong type. template const T* ExpectAndGetIndex(const EncodableList& list, const int i) { EXPECT_LT(i, list.size()) From b29a0b7cb4d39a6421291f2b0c13ac00e1db71d7 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 03:28:56 -0800 Subject: [PATCH 37/55] unit test updates --- packages/pigeon/test/objc_generator_test.dart | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index c04fb0b7b079..6d4df6c89ab4 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -110,7 +110,7 @@ void main() { expect( code, contains( - 'pigeonResult.enum1 = [(list[1] == [NSNull null] ? 0 : list[1]) integerValue];')); + 'pigeonResult.enum1 = [GetNullableObjectAtIndex(list, 1) integerValue];')); }); test('primitive enum host', () { @@ -347,7 +347,8 @@ void main() { generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('@implementation Foobar')); - expect(code, contains('pigeonResult.aBool = list[0];')); + expect(code, + contains('pigeonResult.aBool = GetNullableObjectAtIndex(list, 0);')); }); test('nested class header', () { @@ -386,7 +387,10 @@ void main() { final StringBuffer sink = StringBuffer(); generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); final String code = sink.toString(); - expect(code, contains('pigeonResult.nested = [Input fromList:(list[0])];')); + expect( + code, + contains( + 'pigeonResult.nested = [Input nullableFromList:(GetNullableObjectAtIndex(list, 0))];')); expect( code, contains( From a01e8195ddef802d3e8ec821e8fd5f565a70baa9 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 03:34:55 -0800 Subject: [PATCH 38/55] format --- .../test_plugin/windows/test/null_fields_test.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index ec74de54e4ad..228b57ee5905 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -15,7 +15,8 @@ using flutter::EncodableList; using flutter::EncodableMap; using flutter::EncodableValue; -/// EXPECTs that 'list' contains 'index', and then returns a pointer to its value. +/// EXPECTs that 'list' contains 'index', and then returns a pointer to its +/// value. /// /// This gives useful test failure messages instead of silent crashes when the /// value isn't present, or has the wrong type. From bf0af6cd6392327cdaa538354b219fb8171b0e38 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 06:54:08 -0800 Subject: [PATCH 39/55] some c++ fixes --- packages/pigeon/lib/cpp_generator.dart | 2 +- .../windows/test/null_fields_test.cpp | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index b9c17dfa6582..02b979ed5f56 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -335,7 +335,7 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { rootClassNameSet.contains(field.type.baseName)) { final String operator = field.type.isNullable ? '->' : '.'; encodableValue = - 'EncodeableValue($instanceVariable${operator}ToEncodableList())'; + 'flutter::EncodableValue($instanceVariable${operator}ToEncodableList())'; } else if (!hostDatatype.isBuiltin && rootEnumNameSet.contains(field.type.baseName)) { final String nonNullValue = diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index 228b57ee5905..cc2246dd3f50 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -160,11 +160,11 @@ TEST_F(NullFieldsTest, RequestToListWithValues) { EXPECT_EQ(wrapped.size(), 1); - EncodableList list = ExpectAndGetIndex(wrapped, 0); + const EncodableList list = *ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 2); - EXPECT_EQ(*ExpectAndGet(list, 0), "hello"); - EXPECT_EQ(*ExpectAndGet(list, 1), 1); + EXPECT_EQ(*ExpectAndGetIndex(list, 0), "hello"); + EXPECT_EQ(*ExpectAndGetIndex(list, 1), 1); } TEST_F(NullFieldsTest, RequestToMapWithNulls) { @@ -176,11 +176,11 @@ TEST_F(NullFieldsTest, RequestToMapWithNulls) { EXPECT_EQ(wrapped.size(), 2); - EncodableList list = ExpectAndGetIndex(wrapped, 0); + const EncodableList list = *ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 2); EXPECT_TRUE(list[0].IsNull()); - EXPECT_EQ(*ExpectAndGet(list, 1), 1); + EXPECT_EQ(*ExpectAndGetIndex(list, 1), 1); } TEST_F(NullFieldsTest, ReplyToMapWithValues) { @@ -194,33 +194,33 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { reply.set_request(request); reply.set_type(NullFieldsSearchReplyType::success); - EncodableList wrapped = ListFromReply(reply); + const EncodableList wrapped = ListFromReply(reply); EXPECT_EQ(wrapped.size(), 1); - EncodableList list = ExpectAndGetIndex(wrapped, 0); + const EncodableList list = *ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 5); EXPECT_EQ(*ExpectAndGetIndex(list, 0), "result"); - EXPECT_EQ(*ExpectAndGet(list, 1), "error"); - const EncodableList& indices = ExpectAndGetIndex(list, 2); + EXPECT_EQ(*ExpectAndGetIndex(list, 1), "error"); + const EncodableList& indices = *ExpectAndGetIndex(list, 2); EXPECT_EQ(indices.size(), 3); EXPECT_EQ(indices[0].LongValue(), 1L); EXPECT_EQ(indices[1].LongValue(), 2L); EXPECT_EQ(indices[2].LongValue(), 3L); - const EncodableList& request_list = ExpectAndGetIndex(list, 4); - EXPECT_EQ(*ExpectAndGet(request_list, 0), "hello"); - EXPECT_EQ(*ExpectAndGet(request_list, 1), 0); + const EncodableList& request_list = *ExpectAndGetIndex(list, 4); + EXPECT_EQ(*ExpectAndGetIndex(request_list, 0), "hello"); + EXPECT_EQ(*ExpectAndGetIndex(request_list, 1), 0); } TEST_F(NullFieldsTest, ReplyToListWithNulls) { NullFieldsSearchReply reply; - EncodableList wrapped = ListFromReply(reply); + const EncodableList wrapped = ListFromReply(reply); EXPECT_EQ(wrapped.size(), 1); - EncodableList list = ExpectAndGetIndex(wrapped, 0); + const EncodableList list = *ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 5); EXPECT_TRUE(list[0].IsNull()); From 7cbb9b84dd5219aae2facb79b7e0cfbf7207a3c6 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 07:11:42 -0800 Subject: [PATCH 40/55] typo --- packages/pigeon/test/cpp_generator_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/test/cpp_generator_test.dart b/packages/pigeon/test/cpp_generator_test.dart index 8e16662fc172..4d7c21800d81 100644 --- a/packages/pigeon/test/cpp_generator_test.dart +++ b/packages/pigeon/test/cpp_generator_test.dart @@ -462,7 +462,7 @@ void main() { expect( code, contains( - 'nullable_nested_ ? EncodeableValue(nullable_nested_->ToEncodableList()) ' + 'nullable_nested_ ? flutter::EncodableValue(nullable_nested_->ToEncodableList()) ' ': flutter::EncodableValue()')); } }); From dfc12e4e7858926c94aec243e9de5b9dee167e86 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 07:18:35 -0800 Subject: [PATCH 41/55] format --- .../test_plugin/windows/test/null_fields_test.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index cc2246dd3f50..14c1711026e3 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -208,7 +208,8 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { EXPECT_EQ(indices[0].LongValue(), 1L); EXPECT_EQ(indices[1].LongValue(), 2L); EXPECT_EQ(indices[2].LongValue(), 3L); - const EncodableList& request_list = *ExpectAndGetIndex(list, 4); + const EncodableList& request_list = + *ExpectAndGetIndex(list, 4); EXPECT_EQ(*ExpectAndGetIndex(request_list, 0), "hello"); EXPECT_EQ(*ExpectAndGetIndex(request_list, 1), 0); } From 9bfe05e5bb65300af0b0107165b36dee7c822b9e Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 12 Dec 2022 21:29:08 -0800 Subject: [PATCH 42/55] Some nits and such --- packages/pigeon/lib/cpp_generator.dart | 13 ++-- packages/pigeon/lib/dart_generator.dart | 65 +++++++++--------- packages/pigeon/lib/generator_tools.dart | 5 ++ packages/pigeon/lib/java_generator.dart | 12 ++-- packages/pigeon/lib/kotlin_generator.dart | 13 ++-- packages/pigeon/lib/objc_generator.dart | 16 ++--- packages/pigeon/lib/pigeon_lib.dart | 2 +- packages/pigeon/lib/swift_generator.dart | 14 ++-- .../mock_handler_tester/test/message.dart | 46 ++++++------- .../pigeon/mock_handler_tester/test/test.dart | 10 +-- .../lib/core_tests.gen.dart | 68 +++++++++---------- .../lib/multiple_arity.gen.dart | 2 +- .../lib/non_null_fields.gen.dart | 46 ++++++------- .../lib/null_fields.gen.dart | 36 +++++----- .../lib/null_safe_pigeon.dart | 43 ++++++------ .../lib/nullable_returns.gen.dart | 8 +-- .../lib/primitive.dart | 18 ++--- .../lib/src/generated/core_tests.gen.dart | 68 +++++++++---------- packages/pigeon/test/dart_generator_test.dart | 8 +-- 19 files changed, 248 insertions(+), 245 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 02b979ed5f56..e5d3e51b7b8f 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -207,7 +207,7 @@ void _writeDataClassDeclaration(Indent indent, Class klass, Root root, indent.scoped('{', '};', () { indent.scoped(' public:', '', () { indent.writeln('${klass.name}();'); - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { addDocumentationComments( indent, field.documentationComments, _docCommentSpec); final HostDatatype baseDatatype = getFieldHostDatatype( @@ -251,7 +251,7 @@ void _writeDataClassDeclaration(Indent indent, Class klass, Root root, indent.writeln('friend class $testFriend;'); } - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getFieldHostDatatype( field, root.classes, @@ -280,7 +280,7 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { indent.addln(''); // Getters and setters. - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getFieldHostDatatype(field, root.classes, root.enums, (TypeDeclaration x) => _baseCppTypeForBuiltinDartType(x)); final String instanceVariableName = _makeInstanceVariableName(field); @@ -321,7 +321,7 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { .write('flutter::EncodableList ${klass.name}::ToEncodableList() const '); indent.scoped('{', '}', () { indent.scoped('return flutter::EncodableList{', '};', () { - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getFieldHostDatatype( field, root.classes, @@ -365,7 +365,10 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { // Deserialization. indent.write('${klass.name}::${klass.name}(flutter::EncodableList list) '); indent.scoped('{', '}', () { - klass.fields.toList().asMap().forEach((int index, final NamedType field) { + getFieldsInSerializationOrder(klass) + .toList() + .asMap() + .forEach((int index, final NamedType field) { final String instanceVariableName = _makeInstanceVariableName(field); final String pointerFieldName = '${_pointerPrefix}_${_makeVariableName(field)}'; diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 2680ea0f5db6..a1d39aae6966 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -107,7 +107,7 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { indent.write('case ${customClass.enumeration}: '); indent.writeScoped('', '', () { indent.writeln( - 'return ${customClass.name}.decode(readValue(buffer)! as List);'); + 'return ${customClass.name}.decode(readValue(buffer)!);'); }); } indent.writeln('default:'); @@ -243,7 +243,7 @@ if (replyList == null) { \t); } else if (replyList.length > 1) { \tthrow PlatformException( -\t\tcode: (replyList[0] as String?)!, +\t\tcode: replyList[0]! as String, \t\tmessage: replyList[1] as String?, \t\tdetails: replyList[2], \t);'''); @@ -380,9 +380,8 @@ void _writeFlutterApi( '$leftHandSide = ($argsArray[$count] as $genericArgType?)${castCall.isEmpty ? '' : '?$castCall'};'); } if (!arg.type.isNullable) { - indent.writeln('assert($argName != null,'); indent.writeln( - "'Argument for $channelName was null, expected non-null $argType.');"); + "assert($argName != null, 'Argument for $channelName was null, expected non-null $argType.');"); } }); final Iterable argNames = @@ -501,7 +500,7 @@ void generateDart(DartOptions opt, Root root, StringSink sink) { void writeConstructor() { indent.write(klass.name); indent.scoped('({', '});', () { - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final String required = field.type.isNullable ? '' : 'required '; indent.writeln('${required}this.${field.name},'); } @@ -511,37 +510,38 @@ void generateDart(DartOptions opt, Root root, StringSink sink) { void writeEncode() { indent.write('Object encode() '); indent.scoped('{', '}', () { - indent.writeln( - 'final List pigeonList = [];', + indent.write( + 'return ', ); - for (final NamedType field in klass.fields) { - indent.write('pigeonList.add('); - final String conditional = field.type.isNullable ? '?' : ''; - if (customClassNames.contains(field.type.baseName)) { - indent.addln( - '${field.name}$conditional.encode());', - ); - } else if (customEnumNames.contains(field.type.baseName)) { - indent.addln( - '${field.name}$conditional.index);', - ); - } else { - indent.addln('${field.name});'); + indent.scoped('[', '];', () { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { + final String conditional = field.type.isNullable ? '?' : ''; + if (customClassNames.contains(field.type.baseName)) { + indent.writeln( + '${field.name}$conditional.encode(),', + ); + } else if (customEnumNames.contains(field.type.baseName)) { + indent.writeln( + '${field.name}$conditional.index,', + ); + } else { + indent.writeln('${field.name},'); + } } - } - indent.writeln('return pigeonList;'); + }); }); } void writeDecode() { void writeValueDecode(NamedType field, int index) { + final String resultAt = 'result[$index]'; if (customClassNames.contains(field.type.baseName)) { final String nonNullValue = - '${field.type.baseName}.decode(result[$index]! as List)'; + '${field.type.baseName}.decode($resultAt! as List)'; indent.format( field.type.isNullable ? ''' -result[$index] != null +$resultAt != null \t\t? $nonNullValue \t\t: null''' : nonNullValue, @@ -549,11 +549,11 @@ result[$index] != null trailingNewline: false); } else if (customEnumNames.contains(field.type.baseName)) { final String nonNullValue = - '${field.type.baseName}.values[result[$index]! as int]'; + '${field.type.baseName}.values[$resultAt! as int]'; indent.format( field.type.isNullable ? ''' -result[$index] != null +$resultAt != null \t\t? $nonNullValue \t\t: null''' : nonNullValue, @@ -564,17 +564,17 @@ result[$index] != null final String castCall = _makeGenericCastCall(field.type); final String castCallPrefix = field.type.isNullable ? '?' : '!'; indent.add( - '(result[$index] as $genericType?)$castCallPrefix$castCall', + '($resultAt as $genericType?)$castCallPrefix$castCall', ); } else { final String genericdType = _addGenericTypesNullable(field.type); if (field.type.isNullable) { indent.add( - 'result[$index] as $genericdType', + '$resultAt as $genericdType', ); } else { indent.add( - 'result[$index]! as $genericdType', + '$resultAt! as $genericdType', ); } } @@ -587,11 +587,12 @@ result[$index] != null indent.writeln('result as List;'); indent.write('return ${klass.name}'); indent.scoped('(', ');', () { - for (int index = 0; index < klass.fields.length; index += 1) { - final NamedType field = klass.fields[index]; + int index = 0; + for (final NamedType field in getFieldsInSerializationOrder(klass)) { indent.write('${field.name}: '); writeValueDecode(field, index); indent.addln(','); + index++; } }); }); @@ -604,7 +605,7 @@ result[$index] != null indent.scoped('{', '}', () { writeConstructor(); indent.addln(''); - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { addDocumentationComments( indent, field.documentationComments, _docCommentSpec); diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index 526afd7366a6..e5e05b072b75 100644 --- a/packages/pigeon/lib/generator_tools.dart +++ b/packages/pigeon/lib/generator_tools.dart @@ -491,3 +491,8 @@ void addDocumentationComments( ); } } + +/// Returns a consistent ordered list of fields for serialisation order. +Iterable getFieldsInSerializationOrder(Class klass) { + return klass.fields; +} diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index d355b1ee98d4..48db3dc501f3 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -624,7 +624,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { indent.scoped('{', '}', () { indent.writeln( 'ArrayList toListResult = new ArrayList();'); - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getFieldHostDatatype( field, root.classes, @@ -653,7 +653,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { indent.scoped('{', '}', () { const String result = 'pigeonResult'; indent.writeln('${klass.name} $result = new ${klass.name}();'); - klass.fields + getFieldsInSerializationOrder(klass) .toList() .asMap() .forEach((int index, final NamedType field) { @@ -675,7 +675,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { void writeBuilder() { indent.write('public static final class Builder '); indent.scoped('{', '}', () { - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getFieldHostDatatype( field, root.classes, @@ -696,7 +696,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { indent.scoped('{', '}', () { const String returnVal = 'pigeonReturn'; indent.writeln('${klass.name} $returnVal = new ${klass.name}();'); - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { indent.writeln('$returnVal.${_makeSetter(field)}(${field.name});'); } indent.writeln('return $returnVal;'); @@ -713,12 +713,12 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { indent.write('public static class ${klass.name} '); indent.scoped('{', '}', () { - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { writeField(field); indent.addln(''); } - if (klass.fields + if (getFieldsInSerializationOrder(klass) .map((NamedType e) => !e.type.isNullable) .any((bool e) => e)) { indent.writeln( diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index 27db8fb80a6a..b7da07bc7873 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -513,7 +513,7 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.scoped('{', '}', () { indent.writeln('val list = mutableListOf()'); - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getHostDatatype(field); String toWriteValue = ''; final String fieldName = field.name; @@ -546,7 +546,7 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.write('fun fromList(list: List): $className '); indent.scoped('{', '}', () { - klass.fields + getFieldsInSerializationOrder(klass) .toList() .asMap() .forEach((int index, final NamedType field) { @@ -599,8 +599,9 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.writeln(''); indent.write('return $className('); - for (final NamedType field in klass.fields) { - final String comma = klass.fields.last == field ? '' : ', '; + for (final NamedType field in getFieldsInSerializationOrder(klass)) { + final String comma = + getFieldsInSerializationOrder(klass).last == field ? '' : ', '; indent.add('${field.name}$comma'); } indent.addln(')'); @@ -617,9 +618,9 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.write('data class ${klass.name} '); indent.scoped('(', '', () { - for (final NamedType element in klass.fields) { + for (final NamedType element in getFieldsInSerializationOrder(klass)) { writeField(element); - if (klass.fields.last != element) { + if (getFieldsInSerializationOrder(klass).last != element) { indent.addln(','); } else { indent.addln(''); diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 396f7e8aa672..5cba6fc470f4 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -168,7 +168,7 @@ void _writeInitializerDeclaration(Indent indent, Class klass, indent.write('+ (instancetype)makeWith'); bool isFirst = true; indent.nest(2, () { - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final String label = isFirst ? _capitalize(field.name) : field.name; final void Function(String) printer = isFirst ? indent.add @@ -206,8 +206,8 @@ void _writeClassDeclarations( indent, klass.documentationComments, _docCommentSpec); indent.writeln('@interface ${_className(prefix, klass.name)} : NSObject'); - if (klass.fields.isNotEmpty) { - if (klass.fields + if (getFieldsInSerializationOrder(klass).isNotEmpty) { + if (getFieldsInSerializationOrder(klass) .map((NamedType e) => !e.type.isNullable) .any((bool e) => e)) { indent.writeln( @@ -217,7 +217,7 @@ void _writeClassDeclarations( _writeInitializerDeclaration(indent, klass, classes, enums, prefix); indent.addln(';'); } - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getFieldHostDatatype( field, classes, @@ -938,7 +938,7 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { indent.writeScoped(' {', '}', () { const String result = 'pigeonResult'; indent.writeln('$className* $result = [[$className alloc] init];'); - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { indent.writeln('$result.${field.name} = ${field.name};'); } indent.writeln('return $result;'); @@ -950,7 +950,7 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { indent.scoped('{', '}', () { const String resultName = 'pigeonResult'; indent.writeln('$className *$resultName = [[$className alloc] init];'); - klass.fields + getFieldsInSerializationOrder(klass) .toList() .asMap() .forEach((int index, final NamedType field) { @@ -976,10 +976,10 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { void writeToList() { indent.write('- (NSMutableArray *)toList '); indent.scoped('{', '}', () { - final int len = klass.fields.length; + final int len = getFieldsInSerializationOrder(klass).length; indent.writeln( 'NSMutableArray *list = [[NSMutableArray alloc] initWithCapacity:$len];'); - klass.fields + getFieldsInSerializationOrder(klass) .toList() .asMap() .forEach((int index, final NamedType field) { diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index f8752126a3e3..386d505a91b9 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -634,7 +634,7 @@ List _validateAst(Root root, String source) { root.classes.map((Class x) => x.name).toList(); final Iterable customEnums = root.enums.map((Enum x) => x.name); for (final Class klass in root.classes) { - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { if (field.type.typeArguments != null) { for (final TypeDeclaration typeArgument in field.type.typeArguments) { if (!typeArgument.isNullable) { diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index c873ce70dadf..72c3eac1d362 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -498,7 +498,7 @@ import FlutterMacOS indent.scoped('{', '}', () { indent.write('return '); indent.scoped('[', ']', () { - for (final NamedType field in klass.fields) { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getHostDatatype(field); String toWriteValue = ''; final String fieldName = field.name; @@ -513,7 +513,8 @@ import FlutterMacOS toWriteValue = field.name; } - final String comma = klass.fields.last == field ? '' : ','; + final String comma = + getFieldsInSerializationOrder(klass).last == field ? '' : ','; indent.writeln('$toWriteValue$comma'); } @@ -526,7 +527,7 @@ import FlutterMacOS indent.write('static func fromList(_ list: [Any?]) -> $className? '); indent.scoped('{', '}', () { - klass.fields + getFieldsInSerializationOrder(klass) .toList() .asMap() .forEach((int index, final NamedType field) { @@ -574,8 +575,9 @@ import FlutterMacOS indent.writeln(''); indent.write('return '); indent.scoped('$className(', ')', () { - for (final NamedType field in klass.fields) { - final String comma = klass.fields.last == field ? '' : ','; + for (final NamedType field in getFieldsInSerializationOrder(klass)) { + final String comma = + getFieldsInSerializationOrder(klass).last == field ? '' : ','; indent.writeln('${field.name}: ${field.name}$comma'); } }); @@ -591,7 +593,7 @@ import FlutterMacOS indent.write('struct ${klass.name} '); indent.scoped('{', '}', () { - klass.fields.forEach(writeField); + getFieldsInSerializationOrder(klass).forEach(writeField); indent.writeln(''); writeFromList(); diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index c6f2cf02ba77..f64aa5dc1427 100644 --- a/packages/pigeon/mock_handler_tester/test/message.dart +++ b/packages/pigeon/mock_handler_tester/test/message.dart @@ -44,11 +44,11 @@ class MessageSearchRequest { bool? aBool; Object encode() { - final List pigeonList = []; - pigeonList.add(query); - pigeonList.add(anInt); - pigeonList.add(aBool); - return pigeonList; + return [ + query, + anInt, + aBool, + ]; } static MessageSearchRequest decode(Object result) { @@ -81,11 +81,11 @@ class MessageSearchReply { MessageRequestState? state; Object encode() { - final List pigeonList = []; - pigeonList.add(result); - pigeonList.add(error); - pigeonList.add(state?.index); - return pigeonList; + return [ + result, + error, + state?.index, + ]; } static MessageSearchReply decode(Object result) { @@ -110,9 +110,9 @@ class MessageNested { MessageSearchRequest? request; Object encode() { - final List pigeonList = []; - pigeonList.add(request?.encode()); - return pigeonList; + return [ + request?.encode(), + ]; } static MessageNested decode(Object result) { @@ -144,10 +144,10 @@ class _MessageApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return MessageSearchReply.decode(readValue(buffer)! as List); + return MessageSearchReply.decode(readValue(buffer)!); case 129: - return MessageSearchRequest.decode(readValue(buffer)! as List); + return MessageSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -183,7 +183,7 @@ class MessageApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -206,7 +206,7 @@ class MessageApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -243,13 +243,13 @@ class _MessageNestedApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return MessageNested.decode(readValue(buffer)! as List); + return MessageNested.decode(readValue(buffer)!); case 129: - return MessageSearchReply.decode(readValue(buffer)! as List); + return MessageSearchReply.decode(readValue(buffer)!); case 130: - return MessageSearchRequest.decode(readValue(buffer)! as List); + return MessageSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -284,7 +284,7 @@ class MessageNestedApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -318,10 +318,10 @@ class _MessageFlutterSearchApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return MessageSearchReply.decode(readValue(buffer)! as List); + return MessageSearchReply.decode(readValue(buffer)!); case 129: - return MessageSearchRequest.decode(readValue(buffer)! as List); + return MessageSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); diff --git a/packages/pigeon/mock_handler_tester/test/test.dart b/packages/pigeon/mock_handler_tester/test/test.dart index de319e08ac73..d0ecdc5d2053 100644 --- a/packages/pigeon/mock_handler_tester/test/test.dart +++ b/packages/pigeon/mock_handler_tester/test/test.dart @@ -33,10 +33,10 @@ class _TestHostApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return MessageSearchReply.decode(readValue(buffer)! as List); + return MessageSearchReply.decode(readValue(buffer)!); case 129: - return MessageSearchRequest.decode(readValue(buffer)! as List); + return MessageSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -118,13 +118,13 @@ class _TestNestedApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return MessageNested.decode(readValue(buffer)! as List); + return MessageNested.decode(readValue(buffer)!); case 129: - return MessageSearchReply.decode(readValue(buffer)! as List); + return MessageSearchReply.decode(readValue(buffer)!); case 130: - return MessageSearchRequest.decode(readValue(buffer)! as List); + return MessageSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); 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 aee24cf9cf10..3273ce2ccfa3 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 @@ -55,21 +55,21 @@ class AllTypes { Map? mapWithObject; Object encode() { - final List pigeonList = []; - pigeonList.add(aBool); - pigeonList.add(anInt); - pigeonList.add(aDouble); - pigeonList.add(aString); - pigeonList.add(aByteArray); - pigeonList.add(a4ByteArray); - pigeonList.add(a8ByteArray); - pigeonList.add(aFloatArray); - pigeonList.add(aList); - pigeonList.add(aMap); - pigeonList.add(nestedList); - pigeonList.add(mapWithAnnotations); - pigeonList.add(mapWithObject); - return pigeonList; + return [ + aBool, + anInt, + aDouble, + aString, + aByteArray, + a4ByteArray, + a8ByteArray, + aFloatArray, + aList, + aMap, + nestedList, + mapWithAnnotations, + mapWithObject, + ]; } static AllTypes decode(Object result) { @@ -102,9 +102,9 @@ class AllTypesWrapper { AllTypes values; Object encode() { - final List pigeonList = []; - pigeonList.add(values.encode()); - return pigeonList; + return [ + values.encode(), + ]; } static AllTypesWrapper decode(Object result) { @@ -134,10 +134,10 @@ class _HostIntegrationCoreApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return AllTypes.decode(readValue(buffer)! as List); + return AllTypes.decode(readValue(buffer)!); case 129: - return AllTypesWrapper.decode(readValue(buffer)! as List); + return AllTypesWrapper.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -171,7 +171,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -194,7 +194,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -221,7 +221,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -245,7 +245,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -269,7 +269,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -298,7 +298,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -326,7 +326,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -354,7 +354,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -382,7 +382,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -405,7 +405,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -431,7 +431,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -454,7 +454,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -485,7 +485,7 @@ class _FlutterIntegrationCoreApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return AllTypes.decode(readValue(buffer)! as List); + return AllTypes.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -588,7 +588,7 @@ class HostTrivialApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); 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 52b637ddee96..a3145679319b 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 @@ -34,7 +34,7 @@ class MultipleArityHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); 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 56f0808c6fbf..0dafa6890856 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 @@ -24,9 +24,9 @@ class NonNullFieldSearchRequest { String query; Object encode() { - final List pigeonList = []; - pigeonList.add(query); - return pigeonList; + return [ + query, + ]; } static NonNullFieldSearchRequest decode(Object result) { @@ -48,10 +48,10 @@ class ExtraData { String detailB; Object encode() { - final List pigeonList = []; - pigeonList.add(detailA); - pigeonList.add(detailB); - return pigeonList; + return [ + detailA, + detailB, + ]; } static ExtraData decode(Object result) { @@ -83,13 +83,13 @@ class NonNullFieldSearchReply { ReplyType type; Object encode() { - final List pigeonList = []; - pigeonList.add(result); - pigeonList.add(error); - pigeonList.add(indices); - pigeonList.add(extraData.encode()); - pigeonList.add(type.index); - return pigeonList; + return [ + result, + error, + indices, + extraData.encode(), + type.index, + ]; } static NonNullFieldSearchReply decode(Object result) { @@ -126,15 +126,13 @@ class _NonNullFieldHostApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return ExtraData.decode(readValue(buffer)! as List); + return ExtraData.decode(readValue(buffer)!); case 129: - return NonNullFieldSearchReply.decode( - readValue(buffer)! as List); + return NonNullFieldSearchReply.decode(readValue(buffer)!); case 130: - return NonNullFieldSearchRequest.decode( - readValue(buffer)! as List); + return NonNullFieldSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -166,7 +164,7 @@ class NonNullFieldHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -203,15 +201,13 @@ class _NonNullFieldFlutterApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return ExtraData.decode(readValue(buffer)! as List); + return ExtraData.decode(readValue(buffer)!); case 129: - return NonNullFieldSearchReply.decode( - readValue(buffer)! as List); + return NonNullFieldSearchReply.decode(readValue(buffer)!); case 130: - return NonNullFieldSearchRequest.decode( - readValue(buffer)! as List); + return NonNullFieldSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); 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 69d428ce3390..94c9b86a8a5e 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 @@ -27,10 +27,10 @@ class NullFieldsSearchRequest { int identifier; Object encode() { - final List pigeonList = []; - pigeonList.add(query); - pigeonList.add(identifier); - return pigeonList; + return [ + query, + identifier, + ]; } static NullFieldsSearchRequest decode(Object result) { @@ -62,13 +62,13 @@ class NullFieldsSearchReply { NullFieldsSearchReplyType? type; Object encode() { - final List pigeonList = []; - pigeonList.add(result); - pigeonList.add(error); - pigeonList.add(indices); - pigeonList.add(request?.encode()); - pigeonList.add(type?.index); - return pigeonList; + return [ + result, + error, + indices, + request?.encode(), + type?.index, + ]; } static NullFieldsSearchReply decode(Object result) { @@ -106,12 +106,10 @@ class _NullFieldsHostApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return NullFieldsSearchReply.decode( - readValue(buffer)! as List); + return NullFieldsSearchReply.decode(readValue(buffer)!); case 129: - return NullFieldsSearchRequest.decode( - readValue(buffer)! as List); + return NullFieldsSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -143,7 +141,7 @@ class NullFieldsHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -177,12 +175,10 @@ class _NullFieldsFlutterApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return NullFieldsSearchReply.decode( - readValue(buffer)! as List); + return NullFieldsSearchReply.decode(readValue(buffer)!); case 129: - return NullFieldsSearchRequest.decode( - readValue(buffer)! as List); + return NullFieldsSearchRequest.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart index 5d325fc6bc73..f376a13a9323 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart @@ -19,9 +19,9 @@ class FlutterSearchRequest { String? query; Object encode() { - final List pigeonList = []; - pigeonList.add(query); - return pigeonList; + return [ + query, + ]; } static FlutterSearchRequest decode(Object result) { @@ -43,10 +43,10 @@ class FlutterSearchReply { String? error; Object encode() { - final List pigeonList = []; - pigeonList.add(result); - pigeonList.add(error); - return pigeonList; + return [ + result, + error, + ]; } static FlutterSearchReply decode(Object result) { @@ -66,9 +66,9 @@ class FlutterSearchRequests { List? requests; Object encode() { - final List pigeonList = []; - pigeonList.add(requests); - return pigeonList; + return [ + requests, + ]; } static FlutterSearchRequests decode(Object result) { @@ -87,9 +87,9 @@ class FlutterSearchReplies { List? replies; Object encode() { - final List pigeonList = []; - pigeonList.add(replies); - return pigeonList; + return [ + replies, + ]; } static FlutterSearchReplies decode(Object result) { @@ -125,17 +125,16 @@ class _ApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return FlutterSearchReplies.decode(readValue(buffer)! as List); + return FlutterSearchReplies.decode(readValue(buffer)!); case 129: - return FlutterSearchReply.decode(readValue(buffer)! as List); + return FlutterSearchReply.decode(readValue(buffer)!); case 130: - return FlutterSearchRequest.decode(readValue(buffer)! as List); + return FlutterSearchRequest.decode(readValue(buffer)!); case 131: - return FlutterSearchRequests.decode( - readValue(buffer)! as List); + return FlutterSearchRequests.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -165,7 +164,7 @@ class Api { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -193,7 +192,7 @@ class Api { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -220,7 +219,7 @@ class Api { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -247,7 +246,7 @@ class Api { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); 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 9dc01be967f1..e88028363d87 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 @@ -33,7 +33,7 @@ class NullableReturnHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -90,7 +90,7 @@ class NullableArgHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -154,7 +154,7 @@ class NullableCollectionReturnHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -211,7 +211,7 @@ class NullableCollectionArgHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart index 3fe59dff5ce7..178e3154578f 100644 --- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart +++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/primitive.dart @@ -34,7 +34,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -61,7 +61,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -88,7 +88,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -115,7 +115,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -142,7 +142,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -169,7 +169,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -196,7 +196,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -223,7 +223,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -250,7 +250,7 @@ class PrimitiveHostApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); 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 aee24cf9cf10..3273ce2ccfa3 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 @@ -55,21 +55,21 @@ class AllTypes { Map? mapWithObject; Object encode() { - final List pigeonList = []; - pigeonList.add(aBool); - pigeonList.add(anInt); - pigeonList.add(aDouble); - pigeonList.add(aString); - pigeonList.add(aByteArray); - pigeonList.add(a4ByteArray); - pigeonList.add(a8ByteArray); - pigeonList.add(aFloatArray); - pigeonList.add(aList); - pigeonList.add(aMap); - pigeonList.add(nestedList); - pigeonList.add(mapWithAnnotations); - pigeonList.add(mapWithObject); - return pigeonList; + return [ + aBool, + anInt, + aDouble, + aString, + aByteArray, + a4ByteArray, + a8ByteArray, + aFloatArray, + aList, + aMap, + nestedList, + mapWithAnnotations, + mapWithObject, + ]; } static AllTypes decode(Object result) { @@ -102,9 +102,9 @@ class AllTypesWrapper { AllTypes values; Object encode() { - final List pigeonList = []; - pigeonList.add(values.encode()); - return pigeonList; + return [ + values.encode(), + ]; } static AllTypesWrapper decode(Object result) { @@ -134,10 +134,10 @@ class _HostIntegrationCoreApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return AllTypes.decode(readValue(buffer)! as List); + return AllTypes.decode(readValue(buffer)!); case 129: - return AllTypesWrapper.decode(readValue(buffer)! as List); + return AllTypesWrapper.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -171,7 +171,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -194,7 +194,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -221,7 +221,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -245,7 +245,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -269,7 +269,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -298,7 +298,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -326,7 +326,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -354,7 +354,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -382,7 +382,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -405,7 +405,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -431,7 +431,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -454,7 +454,7 @@ class HostIntegrationCoreApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); @@ -485,7 +485,7 @@ class _FlutterIntegrationCoreApiCodec extends StandardMessageCodec { Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { case 128: - return AllTypes.decode(readValue(buffer)! as List); + return AllTypes.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -588,7 +588,7 @@ class HostTrivialApi { ); } else if (replyList.length > 1) { throw PlatformException( - code: (replyList[0] as String?)!, + code: replyList[0]! as String, message: replyList[1] as String?, details: replyList[2], ); diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart index bd0946346858..f56fe0aa21aa 100644 --- a/packages/pigeon/test/dart_generator_test.dart +++ b/packages/pigeon/test/dart_generator_test.dart @@ -187,7 +187,7 @@ void main() { expect( code, contains( - 'pigeonList.add(nested?.encode())', + 'nested?.encode(),', ), ); expect( @@ -229,7 +229,7 @@ void main() { expect( code, contains( - 'pigeonList.add(nested.encode())', + 'nested.encode(),', ), ); expect( @@ -417,7 +417,7 @@ void main() { final StringBuffer sink = StringBuffer(); generateDart(const DartOptions(), root, sink); final String code = sink.toString(); - expect(code, contains('pigeonList.add(enum1?.index);')); + expect(code, contains('enum1?.index,')); expect(code, contains('? Enum.values[result[0]! as int]')); expect(code, contains('EnumClass doSomething(EnumClass arg0);')); }); @@ -484,7 +484,7 @@ void main() { final StringBuffer sink = StringBuffer(); generateDart(const DartOptions(), root, sink); final String code = sink.toString(); - expect(code, contains('pigeonList.add(enum1.index);')); + expect(code, contains('enum1.index,')); expect(code, contains('enum1: Enum.values[result[0]! as int]')); }); From 2bf4593c3dfcd4cbfe18ed0b8d7a2169536aeac9 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 13 Dec 2022 03:13:52 -0800 Subject: [PATCH 43/55] comment --- packages/pigeon/lib/generator_tools.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index e5e05b072b75..0ce570a33c0b 100644 --- a/packages/pigeon/lib/generator_tools.dart +++ b/packages/pigeon/lib/generator_tools.dart @@ -492,7 +492,7 @@ void addDocumentationComments( } } -/// Returns a consistent ordered list of fields for serialisation order. +/// Returns an ordered list of fields to provide consistent serialisation order. Iterable getFieldsInSerializationOrder(Class klass) { return klass.fields; } From 1af4f27acac670fa2801a08f9be0c0e3ea209b64 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 13 Dec 2022 03:17:42 -0800 Subject: [PATCH 44/55] remove deleted files --- .../test_objc/ios/Flutter/Flutter.podspec | 18 - .../e2e_tests/test_objc/ios/Runner/dartle.h | 117 ----- .../e2e_tests/test_objc/ios/Runner/dartle.m | 413 ------------------ 3 files changed, 548 deletions(-) delete mode 100644 packages/pigeon/e2e_tests/test_objc/ios/Flutter/Flutter.podspec delete mode 100644 packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.h delete mode 100644 packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.m diff --git a/packages/pigeon/e2e_tests/test_objc/ios/Flutter/Flutter.podspec b/packages/pigeon/e2e_tests/test_objc/ios/Flutter/Flutter.podspec deleted file mode 100644 index 8ce4394396b8..000000000000 --- a/packages/pigeon/e2e_tests/test_objc/ios/Flutter/Flutter.podspec +++ /dev/null @@ -1,18 +0,0 @@ -# -# NOTE: This podspec is NOT to be published. It is only used as a local source! -# This is a generated file; do not edit or check into version control. -# - -Pod::Spec.new do |s| - s.name = 'Flutter' - s.version = '1.0.0' - s.summary = 'A UI toolkit for beautiful and fast apps.' - s.homepage = 'https://flutter.dev' - s.license = { :type => 'BSD' } - s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } - s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } - s.ios.deployment_target = '11.0' - # Framework linking is handled by Flutter tooling, not CocoaPods. - # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs. - s.vendored_frameworks = 'path/to/nothing' -end diff --git a/packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.h b/packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.h deleted file mode 100644 index 03562ae4dfd5..000000000000 --- a/packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.h +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.9), do not edit directly. -// See also: https://pub.dev/packages/pigeon -#import -@protocol FlutterBinaryMessenger; -@protocol FlutterMessageCodec; -@class FlutterError; -@class FlutterStandardTypedData; - -NS_ASSUME_NONNULL_BEGIN - -/// This comment is to test enum documentation comments. -/// -/// This comment also tests multiple line comments. -/// -/// //////////////////////// -/// This comment also tests comments that start with '/' -/// //////////////////////// -typedef NS_ENUM(NSUInteger, ACMessageRequestState) { - ACMessageRequestStatePending = 0, - ACMessageRequestStateSuccess = 1, - ACMessageRequestStateFailure = 2, -}; - -@class ACMessageSearchRequest; -@class ACMessageSearchReply; -@class ACMessageNested; - -/// This comment is to test class documentation comments. -/// -/// This comment also tests multiple line comments. -@interface ACMessageSearchRequest : NSObject -+ (instancetype)makeWithQuery:(nullable NSString *)query - anInt:(nullable NSNumber *)anInt - aBool:(nullable NSNumber *)aBool; -/// This comment is to test field documentation comments. -@property(nonatomic, copy, nullable) NSString *query; -/// This comment is to test field documentation comments. -@property(nonatomic, strong, nullable) NSNumber *anInt; -/// This comment is to test field documentation comments. -@property(nonatomic, strong, nullable) NSNumber *aBool; -@end - -/// This comment is to test class documentation comments. -@interface ACMessageSearchReply : NSObject -+ (instancetype)makeWithResult:(nullable NSString *)result - error:(nullable NSString *)error - state:(ACMessageRequestState)state; -/// This comment is to test field documentation comments. -/// -/// This comment also tests multiple line comments. -@property(nonatomic, copy, nullable) NSString *result; -/// This comment is to test field documentation comments. -@property(nonatomic, copy, nullable) NSString *error; -/// This comment is to test field documentation comments. -@property(nonatomic, assign) ACMessageRequestState state; -@end - -/// This comment is to test class documentation comments. -@interface ACMessageNested : NSObject -+ (instancetype)makeWithRequest:(nullable ACMessageSearchRequest *)request; -/// This comment is to test field documentation comments. -@property(nonatomic, strong, nullable) ACMessageSearchRequest *request; -@end - -/// The codec used by ACMessageApi. -NSObject *ACMessageApiGetCodec(void); - -/// This comment is to test api documentation comments. -/// -/// This comment also tests multiple line comments. -@protocol ACMessageApi -/// This comment is to test documentation comments. -/// -/// This comment also tests multiple line comments. -- (void)initializeWithError:(FlutterError *_Nullable *_Nonnull)error; -/// This comment is to test method documentation comments. -/// -/// @return `nil` only when `error != nil`. -- (nullable ACMessageSearchReply *)searchRequest:(ACMessageSearchRequest *)request - error:(FlutterError *_Nullable *_Nonnull)error; -@end - -extern void ACMessageApiSetup(id binaryMessenger, - NSObject *_Nullable api); - -/// The codec used by ACMessageNestedApi. -NSObject *ACMessageNestedApiGetCodec(void); - -/// This comment is to test api documentation comments. -@protocol ACMessageNestedApi -/// This comment is to test method documentation comments. -/// -/// This comment also tests multiple line comments. -/// -/// @return `nil` only when `error != nil`. -- (nullable ACMessageSearchReply *)searchNested:(ACMessageNested *)nested - error:(FlutterError *_Nullable *_Nonnull)error; -@end - -extern void ACMessageNestedApiSetup(id binaryMessenger, - NSObject *_Nullable api); - -/// The codec used by ACMessageFlutterSearchApi. -NSObject *ACMessageFlutterSearchApiGetCodec(void); - -/// This comment is to test api documentation comments. -@interface ACMessageFlutterSearchApi : NSObject -- (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -/// This comment is to test method documentation comments. -- (void)searchRequest:(ACMessageSearchRequest *)request - completion:(void (^)(ACMessageSearchReply *_Nullable, NSError *_Nullable))completion; -@end -NS_ASSUME_NONNULL_END diff --git a/packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.m b/packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.m deleted file mode 100644 index 593b59001b02..000000000000 --- a/packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.m +++ /dev/null @@ -1,413 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// Autogenerated from Pigeon (v4.2.9), do not edit directly. -// See also: https://pub.dev/packages/pigeon -#import "dartle.h" -#import - -#if !__has_feature(objc_arc) -#error File requires ARC to be enabled. -#endif - -static NSMutableArray *wrapResult(id result, FlutterError *error) { - NSMutableArray *resultList = [[NSMutableArray alloc] init]; - if (error) { - [resultList addObject:(error.code ?: [NSNull null])]; - [resultList addObject:(error.message ?: [NSNull null])]; - [resultList addObject:(error.details ?: [NSNull null])]; - - } else { - [resultList addObject:(result ?: [NSNull null])]; - } - - return resultList; -} -static id GetNullableObject(NSDictionary *dict, id key) { - id result = dict[key]; - return (result == [NSNull null]) ? nil : result; -} -static id GetNullableObjectAtIndex(NSArray *array, NSInteger key) { - id result = array[key]; - return (result == [NSNull null]) ? nil : result; -} - -@interface ACMessageSearchRequest () -+ (ACMessageSearchRequest *)fromList:(NSMutableArray *)list; -+ (nullable ACMessageSearchRequest *)nullableFromList:(NSMutableArray *)list; -- (NSMutableArray *)toList; -@end -@interface ACMessageSearchReply () -+ (ACMessageSearchReply *)fromList:(NSMutableArray *)list; -+ (nullable ACMessageSearchReply *)nullableFromList:(NSMutableArray *)list; -- (NSMutableArray *)toList; -@end -@interface ACMessageNested () -+ (ACMessageNested *)fromList:(NSMutableArray *)list; -+ (nullable ACMessageNested *)nullableFromList:(NSMutableArray *)list; -- (NSMutableArray *)toList; -@end - -@implementation ACMessageSearchRequest -+ (instancetype)makeWithQuery:(nullable NSString *)query - anInt:(nullable NSNumber *)anInt - aBool:(nullable NSNumber *)aBool { - ACMessageSearchRequest *pigeonResult = [[ACMessageSearchRequest alloc] init]; - pigeonResult.query = query; - pigeonResult.anInt = anInt; - pigeonResult.aBool = aBool; - return pigeonResult; -} -+ (ACMessageSearchRequest *)fromList:(NSMutableArray *)list { - ACMessageSearchRequest *pigeonResult = [[ACMessageSearchRequest alloc] init]; - if (list == nil) { - list = [[NSMutableArray alloc] init]; - for (int i = 0; i < 3; i++) { - [list addObject:[NSNull null]]; - } - } - pigeonResult.query = list[0]; - pigeonResult.anInt = list[1]; - pigeonResult.aBool = list[2]; - return pigeonResult; -} -+ (nullable ACMessageSearchRequest *)nullableFromList:(NSMutableArray *)list { - return (list) ? [ACMessageSearchRequest fromList:list] : nil; -} -- (NSMutableArray *)toList { - NSMutableArray *list = [[NSMutableArray alloc] init]; - [list addObject:(self.query ?: [NSNull null])]; - [list addObject:(self.anInt ?: [NSNull null])]; - [list addObject:(self.aBool ?: [NSNull null])]; - return list; -} -@end - -@implementation ACMessageSearchReply -+ (instancetype)makeWithResult:(nullable NSString *)result - error:(nullable NSString *)error - state:(ACMessageRequestState)state { - ACMessageSearchReply *pigeonResult = [[ACMessageSearchReply alloc] init]; - pigeonResult.result = result; - pigeonResult.error = error; - pigeonResult.state = state; - return pigeonResult; -} -+ (ACMessageSearchReply *)fromList:(NSMutableArray *)list { - ACMessageSearchReply *pigeonResult = [[ACMessageSearchReply alloc] init]; - if (list == nil) { - list = [[NSMutableArray alloc] init]; - for (int i = 0; i < 3; i++) { - [list addObject:[NSNull null]]; - } - } - pigeonResult.result = list[0]; - pigeonResult.error = list[1]; - pigeonResult.state = [(list[2] == [NSNull null] ? 0 : list[2]) integerValue]; - return pigeonResult; -} -+ (nullable ACMessageSearchReply *)nullableFromList:(NSMutableArray *)list { - return (list) ? [ACMessageSearchReply fromList:list] : nil; -} -- (NSMutableArray *)toList { - NSMutableArray *list = [[NSMutableArray alloc] init]; - [list addObject:(self.result ?: [NSNull null])]; - [list addObject:(self.error ?: [NSNull null])]; - [list addObject:@(self.state)]; - return list; -} -@end - -@implementation ACMessageNested -+ (instancetype)makeWithRequest:(nullable ACMessageSearchRequest *)request { - ACMessageNested *pigeonResult = [[ACMessageNested alloc] init]; - pigeonResult.request = request; - return pigeonResult; -} -+ (ACMessageNested *)fromList:(NSMutableArray *)list { - ACMessageNested *pigeonResult = [[ACMessageNested alloc] init]; - if (list == nil) { - list = [[NSMutableArray alloc] init]; - for (int i = 0; i < 1; i++) { - [list addObject:[NSNull null]]; - } - } - pigeonResult.request = - [ACMessageSearchRequest fromList:(list[0] == [NSNull null] ? nil : list[0])]; - return pigeonResult; -} -+ (nullable ACMessageNested *)nullableFromList:(NSMutableArray *)list { - return (list) ? [ACMessageNested fromList:list] : nil; -} -- (NSMutableArray *)toList { - NSMutableArray *list = [[NSMutableArray alloc] init]; - [list addObject:(self.request ? [self.request toList] : [NSNull null])]; - return list; -} -@end - -@interface ACMessageApiCodecReader : FlutterStandardReader -@end -@implementation ACMessageApiCodecReader -- (nullable id)readValueOfType:(UInt8)type { - switch (type) { - case 128: - return [ACMessageSearchReply fromList:[self readValue]]; - - case 129: - return [ACMessageSearchRequest fromList:[self readValue]]; - - default: - return [super readValueOfType:type]; - } -} -@end - -@interface ACMessageApiCodecWriter : FlutterStandardWriter -@end -@implementation ACMessageApiCodecWriter -- (void)writeValue:(id)value { - if ([value isKindOfClass:[ACMessageSearchReply class]]) { - [self writeByte:128]; - [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[ACMessageSearchRequest class]]) { - [self writeByte:129]; - [self writeValue:[value toList]]; - } else { - [super writeValue:value]; - } -} -@end - -@interface ACMessageApiCodecReaderWriter : FlutterStandardReaderWriter -@end -@implementation ACMessageApiCodecReaderWriter -- (FlutterStandardWriter *)writerWithData:(NSMutableData *)data { - return [[ACMessageApiCodecWriter alloc] initWithData:data]; -} -- (FlutterStandardReader *)readerWithData:(NSData *)data { - return [[ACMessageApiCodecReader alloc] initWithData:data]; -} -@end - -NSObject *ACMessageApiGetCodec() { - static FlutterStandardMessageCodec *sSharedObject = nil; - static dispatch_once_t sPred = 0; - dispatch_once(&sPred, ^{ - ACMessageApiCodecReaderWriter *readerWriter = [[ACMessageApiCodecReaderWriter alloc] init]; - sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; - }); - return sSharedObject; -} - -void ACMessageApiSetup(id binaryMessenger, NSObject *api) { - /// This comment is to test documentation comments. - /// - /// This comment also tests multiple line comments. - { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] initWithName:@"dev.flutter.pigeon.MessageApi.initialize" - binaryMessenger:binaryMessenger - codec:ACMessageApiGetCodec()]; - if (api) { - NSCAssert([api respondsToSelector:@selector(initializeWithError:)], - @"ACMessageApi api (%@) doesn't respond to @selector(initializeWithError:)", api); - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - FlutterError *error; - [api initializeWithError:&error]; - callback(wrapResult(nil, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } - /// This comment is to test method documentation comments. - { - FlutterBasicMessageChannel *channel = - [[FlutterBasicMessageChannel alloc] initWithName:@"dev.flutter.pigeon.MessageApi.search" - binaryMessenger:binaryMessenger - codec:ACMessageApiGetCodec()]; - if (api) { - NSCAssert([api respondsToSelector:@selector(searchRequest:error:)], - @"ACMessageApi api (%@) doesn't respond to @selector(searchRequest:error:)", api); - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - NSArray *args = message; - ACMessageSearchRequest *arg_request = GetNullableObjectAtIndex(args, 0); - FlutterError *error; - ACMessageSearchReply *output = [api searchRequest:arg_request error:&error]; - callback(wrapResult(output, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } -} -@interface ACMessageNestedApiCodecReader : FlutterStandardReader -@end -@implementation ACMessageNestedApiCodecReader -- (nullable id)readValueOfType:(UInt8)type { - switch (type) { - case 128: - return [ACMessageNested fromList:[self readValue]]; - - case 129: - return [ACMessageSearchReply fromList:[self readValue]]; - - case 130: - return [ACMessageSearchRequest fromList:[self readValue]]; - - default: - return [super readValueOfType:type]; - } -} -@end - -@interface ACMessageNestedApiCodecWriter : FlutterStandardWriter -@end -@implementation ACMessageNestedApiCodecWriter -- (void)writeValue:(id)value { - if ([value isKindOfClass:[ACMessageNested class]]) { - [self writeByte:128]; - [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[ACMessageSearchReply class]]) { - [self writeByte:129]; - [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[ACMessageSearchRequest class]]) { - [self writeByte:130]; - [self writeValue:[value toList]]; - } else { - [super writeValue:value]; - } -} -@end - -@interface ACMessageNestedApiCodecReaderWriter : FlutterStandardReaderWriter -@end -@implementation ACMessageNestedApiCodecReaderWriter -- (FlutterStandardWriter *)writerWithData:(NSMutableData *)data { - return [[ACMessageNestedApiCodecWriter alloc] initWithData:data]; -} -- (FlutterStandardReader *)readerWithData:(NSData *)data { - return [[ACMessageNestedApiCodecReader alloc] initWithData:data]; -} -@end - -NSObject *ACMessageNestedApiGetCodec() { - static FlutterStandardMessageCodec *sSharedObject = nil; - static dispatch_once_t sPred = 0; - dispatch_once(&sPred, ^{ - ACMessageNestedApiCodecReaderWriter *readerWriter = - [[ACMessageNestedApiCodecReaderWriter alloc] init]; - sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; - }); - return sSharedObject; -} - -void ACMessageNestedApiSetup(id binaryMessenger, - NSObject *api) { - /// This comment is to test method documentation comments. - /// - /// This comment also tests multiple line comments. - { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.MessageNestedApi.search" - binaryMessenger:binaryMessenger - codec:ACMessageNestedApiGetCodec()]; - if (api) { - NSCAssert([api respondsToSelector:@selector(searchNested:error:)], - @"ACMessageNestedApi api (%@) doesn't respond to @selector(searchNested:error:)", - api); - [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { - NSArray *args = message; - ACMessageNested *arg_nested = GetNullableObjectAtIndex(args, 0); - FlutterError *error; - ACMessageSearchReply *output = [api searchNested:arg_nested error:&error]; - callback(wrapResult(output, error)); - }]; - } else { - [channel setMessageHandler:nil]; - } - } -} -@interface ACMessageFlutterSearchApiCodecReader : FlutterStandardReader -@end -@implementation ACMessageFlutterSearchApiCodecReader -- (nullable id)readValueOfType:(UInt8)type { - switch (type) { - case 128: - return [ACMessageSearchReply fromList:[self readValue]]; - - case 129: - return [ACMessageSearchRequest fromList:[self readValue]]; - - default: - return [super readValueOfType:type]; - } -} -@end - -@interface ACMessageFlutterSearchApiCodecWriter : FlutterStandardWriter -@end -@implementation ACMessageFlutterSearchApiCodecWriter -- (void)writeValue:(id)value { - if ([value isKindOfClass:[ACMessageSearchReply class]]) { - [self writeByte:128]; - [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[ACMessageSearchRequest class]]) { - [self writeByte:129]; - [self writeValue:[value toList]]; - } else { - [super writeValue:value]; - } -} -@end - -@interface ACMessageFlutterSearchApiCodecReaderWriter : FlutterStandardReaderWriter -@end -@implementation ACMessageFlutterSearchApiCodecReaderWriter -- (FlutterStandardWriter *)writerWithData:(NSMutableData *)data { - return [[ACMessageFlutterSearchApiCodecWriter alloc] initWithData:data]; -} -- (FlutterStandardReader *)readerWithData:(NSData *)data { - return [[ACMessageFlutterSearchApiCodecReader alloc] initWithData:data]; -} -@end - -NSObject *ACMessageFlutterSearchApiGetCodec() { - static FlutterStandardMessageCodec *sSharedObject = nil; - static dispatch_once_t sPred = 0; - dispatch_once(&sPred, ^{ - ACMessageFlutterSearchApiCodecReaderWriter *readerWriter = - [[ACMessageFlutterSearchApiCodecReaderWriter alloc] init]; - sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; - }); - return sSharedObject; -} - -@interface ACMessageFlutterSearchApi () -@property(nonatomic, strong) NSObject *binaryMessenger; -@end - -@implementation ACMessageFlutterSearchApi - -- (instancetype)initWithBinaryMessenger:(NSObject *)binaryMessenger { - self = [super init]; - if (self) { - _binaryMessenger = binaryMessenger; - } - return self; -} -- (void)searchRequest:(ACMessageSearchRequest *)arg_request - completion:(void (^)(ACMessageSearchReply *_Nullable, NSError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.MessageFlutterSearchApi.search" - binaryMessenger:self.binaryMessenger - codec:ACMessageFlutterSearchApiGetCodec()]; - [channel sendMessage:@[ arg_request ?: [NSNull null] ] - reply:^(id reply) { - ACMessageSearchReply *output = reply; - completion(output, nil); - }]; -} -@end From 9b4bbcc87ef949352c1bdc36b4bb7ac3351a2444 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 13 Dec 2022 03:29:13 -0800 Subject: [PATCH 45/55] c++ nits --- packages/pigeon/lib/cpp_generator.dart | 9 ++++----- packages/pigeon/lib/pigeon_lib.dart | 14 ++++++-------- .../test_plugin/windows/test/null_fields_test.cpp | 11 +++++------ 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index e5d3e51b7b8f..27281cc6a5e4 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -131,7 +131,7 @@ void _writeCodecSource(Indent indent, Api api, Root root) { indent.scoped('{', '}', () { indent.writeln('stream->WriteByte(${customClass.enumeration});'); indent.writeln( - 'WriteValue(std::any_cast<${customClass.name}>(*custom_value).ToEncodableList(), stream);'); + 'WriteValue(flutter::EncodableValue(std::any_cast<${customClass.name}>(*custom_value).ToEncodableList()), stream);'); indent.writeln('return;'); }); } @@ -591,7 +591,7 @@ const flutter::StandardMessageCodec& ${api.name}::GetCodec() { indent.write('if ($encodableArgName.IsNull()) '); indent.scoped('{', '}', () { indent.writeln( - 'wrapped = WrapError("$argName unexpectedly null.");'); + 'reply(WrapError("$argName unexpectedly null."));'); indent.writeln('reply(wrapped);'); indent.writeln('return;'); }); @@ -643,11 +643,10 @@ $prefix\t}${indent.newline}'''; } return '${prefix}if ($ifCondition) {${indent.newline}' '$prefix\twrapped = WrapError(output.$errorGetter());${indent.newline}' - '$prefix$reply' '$prefix} else {${indent.newline}' '$elseBody' - '$prefix$reply' - '$prefix}'; + '$prefix}' + '$prefix$reply'; } final HostDatatype returnType = getHostDatatype( diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 386d505a91b9..46203f67987b 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -246,30 +246,28 @@ class PigeonOptions { objcHeaderOut: map['objcHeaderOut'] as String?, objcSourceOut: map['objcSourceOut'] as String?, objcOptions: map.containsKey('objcOptions') - ? ObjcOptions.fromMap((map['objcOptions'] as Map?)!) + ? ObjcOptions.fromMap(map['objcOptions']! as Map) : null, javaOut: map['javaOut'] as String?, javaOptions: map.containsKey('javaOptions') - ? JavaOptions.fromMap((map['javaOptions'] as Map?)!) + ? JavaOptions.fromMap(map['javaOptions']! as Map) : null, swiftOut: map['swiftOut'] as String?, swiftOptions: map.containsKey('swiftOptions') - ? SwiftOptions.fromList( - (map['swiftOptions'] as Map?)!) + ? SwiftOptions.fromList(map['swiftOptions']! as Map) : null, kotlinOut: map['kotlinOut'] as String?, kotlinOptions: map.containsKey('kotlinOptions') - ? KotlinOptions.fromMap( - (map['kotlinOptions'] as Map?)!) + ? KotlinOptions.fromMap(map['kotlinOptions']! as Map) : null, cppHeaderOut: map['experimental_cppHeaderOut'] as String?, cppSourceOut: map['experimental_cppSourceOut'] as String?, cppOptions: map.containsKey('experimental_cppOptions') ? CppOptions.fromMap( - (map['experimental_cppOptions'] as Map?)!) + map['experimental_cppOptions']! as Map) : null, dartOptions: map.containsKey('dartOptions') - ? DartOptions.fromMap((map['dartOptions'] as Map?)!) + ? DartOptions.fromMap(map['dartOptions']! as Map) : null, copyrightHeader: map['copyrightHeader'] as String?, oneLanguage: map['oneLanguage'] as bool?, diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index 14c1711026e3..5bb24f0b1f1a 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -223,12 +223,11 @@ TEST_F(NullFieldsTest, ReplyToListWithNulls) { const EncodableList list = *ExpectAndGetIndex(wrapped, 0); - EXPECT_EQ(list.size(), 5); - EXPECT_TRUE(list[0].IsNull()); - EXPECT_TRUE(list[1].IsNull()); - EXPECT_TRUE(list[2].IsNull()); - EXPECT_TRUE(list[3].IsNull()); - EXPECT_TRUE(list[4].IsNull()); + const int field_count = 5; + EXPECT_EQ(list.size(), field_count); + for (int i = 0; i < field_count; ++i) { + EXPECT_TRUE(list[i].IsNull()); + } } } // namespace null_fields_pigeontest From 6c782fa472b404a3df81a64f555cbfb3cf68f6d6 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 13 Dec 2022 03:41:46 -0800 Subject: [PATCH 46/55] objc nits --- packages/pigeon/lib/objc_generator.dart | 31 ++++++++----------- packages/pigeon/test/objc_generator_test.dart | 4 +-- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 5cba6fc470f4..fe3ebfa3d528 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -621,7 +621,7 @@ String _listGetter(List classNames, String list, NamedType field, } } -String _dictValue( +String _arrayValue( List classNames, List enumNames, NamedType field) { if (classNames.contains(field.type.baseName)) { return '(self.${field.name} ? [self.${field.name} toList] : [NSNull null])'; @@ -923,10 +923,10 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { void writeDataClassExtension(Class klass) { final String className = _className(options.prefix, klass.name); indent.writeln('@interface $className ()'); - indent.writeln('+ ($className *)fromList:(NSMutableArray *)list;'); - indent.writeln( - '+ (nullable $className *)nullableFromList:(NSMutableArray *)list;'); - indent.writeln('- (NSMutableArray *)toList;'); + indent.writeln('+ ($className *)fromList:(NSArray *)list;'); + indent + .writeln('+ (nullable $className *)nullableFromList:(NSArray *)list;'); + indent.writeln('- (NSArray *)toList;'); indent.writeln('@end'); } @@ -946,7 +946,7 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { } void writeFromList() { - indent.write('+ ($className *)fromList:(NSMutableArray *)list '); + indent.write('+ ($className *)fromList:(NSArray *)list '); indent.scoped('{', '}', () { const String resultName = 'pigeonResult'; indent.writeln('$className *$resultName = [[$className alloc] init];'); @@ -970,23 +970,18 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { }); indent.writeln( - '+ (nullable $className *)nullableFromList:(NSMutableArray *)list { return (list) ? [$className fromList:list] : nil; }'); + '+ (nullable $className *)nullableFromList:(NSArray *)list { return (list) ? [$className fromList:list] : nil; }'); } void writeToList() { - indent.write('- (NSMutableArray *)toList '); + indent.write('- (NSArray *)toList '); indent.scoped('{', '}', () { - final int len = getFieldsInSerializationOrder(klass).length; - indent.writeln( - 'NSMutableArray *list = [[NSMutableArray alloc] initWithCapacity:$len];'); - getFieldsInSerializationOrder(klass) - .toList() - .asMap() - .forEach((int index, final NamedType field) { - indent.writeln( - '[list addObject:${_dictValue(classNames, enumNames, field)}];'); + indent.write('return'); + indent.scoped(' @[', '];', () { + for (final NamedType field in klass.fields) { + indent.writeln('${_arrayValue(classNames, enumNames, field)},'); + } }); - indent.writeln('return list;'); }); } diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index 6d4df6c89ab4..fef464163aea 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -392,9 +392,7 @@ void main() { contains( 'pigeonResult.nested = [Input nullableFromList:(GetNullableObjectAtIndex(list, 0))];')); expect( - code, - contains( - '[list addObject:(self.nested ? [self.nested toList] : [NSNull null])]')); + code, contains('self.nested ? [self.nested toList] : [NSNull null]')); }); test('prefix class header', () { From 4b77db995a7f687eef03df3367439bc8db842895 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 13 Dec 2022 06:39:21 -0800 Subject: [PATCH 47/55] all but one c++ bug --- .../windows/test/multiple_arity_test.cpp | 2 +- .../windows/test/null_fields_test.cpp | 25 ++++--------------- .../windows/test/nullable_returns_test.cpp | 2 +- .../windows/test/primitive_test.cpp | 2 +- 4 files changed, 8 insertions(+), 23 deletions(-) diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/multiple_arity_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/multiple_arity_test.cpp index 7577afd98245..fc48a81f2f95 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/multiple_arity_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/multiple_arity_test.cpp @@ -25,7 +25,7 @@ class TestHostApi : public MultipleArityHostApi { }; const EncodableValue& GetResult(const EncodableValue& pigeon_response) { - return std::get(pigeon_response).at(EncodableValue("result")); + return std::get(pigeon_response)[0]; } } // namespace diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index 14c1711026e3..6a08bdee22da 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -156,11 +156,8 @@ TEST_F(NullFieldsTest, RequestToListWithValues) { request.set_query("hello"); request.set_identifier(1); - EncodableList wrapped = ListFromRequest(request); + EncodableList list = ListFromRequest(request); - EXPECT_EQ(wrapped.size(), 1); - - const EncodableList list = *ExpectAndGetIndex(wrapped, 0); EXPECT_EQ(list.size(), 2); EXPECT_EQ(*ExpectAndGetIndex(list, 0), "hello"); @@ -172,11 +169,7 @@ TEST_F(NullFieldsTest, RequestToMapWithNulls) { // TODO(gaaclarke): This needs a way to be enforced. request.set_identifier(1); - EncodableList wrapped = ListFromRequest(request); - - EXPECT_EQ(wrapped.size(), 2); - - const EncodableList list = *ExpectAndGetIndex(wrapped, 0); + EncodableList list = ListFromRequest(request); EXPECT_EQ(list.size(), 2); EXPECT_TRUE(list[0].IsNull()); @@ -194,11 +187,7 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { reply.set_request(request); reply.set_type(NullFieldsSearchReplyType::success); - const EncodableList wrapped = ListFromReply(reply); - - EXPECT_EQ(wrapped.size(), 1); - - const EncodableList list = *ExpectAndGetIndex(wrapped, 0); + const EncodableList list = ListFromReply(reply); EXPECT_EQ(list.size(), 5); EXPECT_EQ(*ExpectAndGetIndex(list, 0), "result"); @@ -209,7 +198,7 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { EXPECT_EQ(indices[1].LongValue(), 2L); EXPECT_EQ(indices[2].LongValue(), 3L); const EncodableList& request_list = - *ExpectAndGetIndex(list, 4); + *ExpectAndGetIndex(list, 3); EXPECT_EQ(*ExpectAndGetIndex(request_list, 0), "hello"); EXPECT_EQ(*ExpectAndGetIndex(request_list, 1), 0); } @@ -217,11 +206,7 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { TEST_F(NullFieldsTest, ReplyToListWithNulls) { NullFieldsSearchReply reply; - const EncodableList wrapped = ListFromReply(reply); - - EXPECT_EQ(wrapped.size(), 1); - - const EncodableList list = *ExpectAndGetIndex(wrapped, 0); + const EncodableList list = ListFromReply(reply); EXPECT_EQ(list.size(), 5); EXPECT_TRUE(list[0].IsNull()); diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/nullable_returns_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/nullable_returns_test.cpp index 356ff44866cc..821df755ff5d 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/nullable_returns_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/nullable_returns_test.cpp @@ -42,7 +42,7 @@ class TestNullableReturnHostApi : public NullableReturnHostApi { }; const EncodableValue& GetResult(const EncodableValue& pigeon_response) { - return std::get(pigeon_response).at(EncodableValue("result")); + return std::get(pigeon_response)[0]; } } // namespace diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/primitive_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/primitive_test.cpp index 782575ac384c..518c5398be84 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/primitive_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/primitive_test.cpp @@ -50,7 +50,7 @@ class TestHostApi : public PrimitiveHostApi { }; const EncodableValue& GetResult(const EncodableValue& pigeon_response) { - return std::get(pigeon_response).at(EncodableValue("result")); + return std::get(pigeon_response)[0]; } } // namespace From f081333cd219ad5ff5d5242928c15e7ba1e40093 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 13 Dec 2022 06:57:36 -0800 Subject: [PATCH 48/55] init all fields --- .../test_plugin/windows/test/null_fields_test.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp index e77ff0d028f2..3e6a54263928 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/test/null_fields_test.cpp @@ -179,6 +179,7 @@ TEST_F(NullFieldsTest, RequestToMapWithNulls) { TEST_F(NullFieldsTest, ReplyToMapWithValues) { NullFieldsSearchRequest request; request.set_query("hello"); + request.set_identifier(1); NullFieldsSearchReply reply; reply.set_result("result"); @@ -200,7 +201,7 @@ TEST_F(NullFieldsTest, ReplyToMapWithValues) { const EncodableList& request_list = *ExpectAndGetIndex(list, 3); EXPECT_EQ(*ExpectAndGetIndex(request_list, 0), "hello"); - EXPECT_EQ(*ExpectAndGetIndex(request_list, 1), 0); + EXPECT_EQ(*ExpectAndGetIndex(request_list, 1), 1); } TEST_F(NullFieldsTest, ReplyToListWithNulls) { From 9b7c24a8d5e945e6a26ada21d63a6c9c018dfbdf Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 13 Dec 2022 07:26:36 -0800 Subject: [PATCH 49/55] start of documenting data shape --- packages/pigeon/lib/dart_generator.dart | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index a1d39aae6966..4ca7dd9d074a 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -166,6 +166,13 @@ String _getMethodArgumentsSignature( /// static const MessageCodec codec = FooCodec(); /// Future add(int x, int y) async {...} /// } +/// +/// Messages will be sent and received in a list. +/// +/// If the message recieved was succesful it will be contained at the 0'th index. +/// +/// If the message was a failure, the list will contain 3 items: +/// a code, a message, and details in that order. void _writeHostApi(DartOptions opt, Indent indent, Api api, Root root) { assert(api.location == ApiLocation.host); String codecName = _standardMessageCodec; From 8c3f1ed418bc3f3463228111105187236937df25 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 14 Dec 2022 07:49:56 -0800 Subject: [PATCH 50/55] nits and error handling --- packages/pigeon/lib/cpp_generator.dart | 12 ++-- packages/pigeon/lib/dart_generator.dart | 15 ++-- packages/pigeon/lib/java_generator.dart | 24 ++----- packages/pigeon/lib/kotlin_generator.dart | 70 +++++++++---------- packages/pigeon/lib/objc_generator.dart | 12 ++-- packages/pigeon/lib/swift_generator.dart | 21 ++---- .../pigeon/test/kotlin_generator_test.dart | 15 ++-- 7 files changed, 68 insertions(+), 101 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 27281cc6a5e4..b6ef192f5b05 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -365,10 +365,8 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { // Deserialization. indent.write('${klass.name}::${klass.name}(flutter::EncodableList list) '); indent.scoped('{', '}', () { - getFieldsInSerializationOrder(klass) - .toList() - .asMap() - .forEach((int index, final NamedType field) { + enumerate(getFieldsInSerializationOrder(klass), + (int index, final NamedType field) { final String instanceVariableName = _makeInstanceVariableName(field); final String pointerFieldName = '${_pointerPrefix}_${_makeVariableName(field)}'; @@ -1061,12 +1059,10 @@ void generateCppHeader( indent, anEnum.documentationComments, _docCommentSpec); indent.write('enum class ${anEnum.name} '); indent.scoped('{', '};', () { - int index = 0; - for (final String member in anEnum.members) { + enumerate(anEnum.members, (int index, final String member) { indent.writeln( '$member = $index${index == anEnum.members.length - 1 ? '' : ','}'); - index++; - } + }); }); } diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 4ca7dd9d074a..4df8a7b6e258 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -78,10 +78,7 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { indent.writeln('@override'); indent.write('void writeValue(WriteBuffer buffer, Object? value) '); indent.scoped('{', '}', () { - codecClasses - .toList() - .asMap() - .forEach((int index, final EnumeratedClass customClass) { + enumerate(codecClasses, (int index, final EnumeratedClass customClass) { final String ifValue = 'if (value is ${customClass.name}) '; if (index == 0) { indent.write(ifValue); @@ -169,7 +166,8 @@ String _getMethodArgumentsSignature( /// /// Messages will be sent and received in a list. /// -/// If the message recieved was succesful it will be contained at the 0'th index. +/// If the message recieved was succesful, +/// the result will be contained at the 0'th index. /// /// If the message was a failure, the list will contain 3 items: /// a code, a message, and details in that order. @@ -594,13 +592,12 @@ $resultAt != null indent.writeln('result as List;'); indent.write('return ${klass.name}'); indent.scoped('(', ');', () { - int index = 0; - for (final NamedType field in getFieldsInSerializationOrder(klass)) { + enumerate(getFieldsInSerializationOrder(klass), + (int index, final NamedType field) { indent.write('${field.name}: '); writeValueDecode(field, index); indent.addln(','); - index++; - } + }); }); }); } diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index 48db3dc501f3..b07826820d31 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -290,9 +290,7 @@ Result<$returnType> $resultName = new Result<$returnType>() { if (method.isAsynchronous) { indent.writeln('reply.reply(wrappedError);'); } else { - indent.writeln('wrapped.add(wrappedError.get(0));'); - indent.writeln('wrapped.add(wrappedError.get(1));'); - indent.writeln('wrapped.add(wrappedError.get(2));'); + indent.writeln('wrapped = wrappedError;'); } }); if (!method.isAsynchronous) { @@ -571,17 +569,11 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { indent.write('public enum ${anEnum.name} '); indent.scoped('{', '}', () { - int index = 0; - for (final String member in anEnum.members) { + enumerate(anEnum.members, (int index, final String member) { indent.writeln( '${camelToSnake(member)}($index)${index == anEnum.members.length - 1 ? ';' : ','}'); - index++; - } + }); indent.writeln(''); - // We use explicit indexing here as use of the ordinal() method is - // discouraged. The toMap and fromMap API matches class API to allow - // the same code to work with enums and classes, but this - // can also be done directly in the host and flutter APIs. indent.writeln('private final int index;'); indent.write('private ${anEnum.name}(final int index) '); indent.scoped('{', '}', () { @@ -623,7 +615,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { indent.write('@NonNull ArrayList toList() '); indent.scoped('{', '}', () { indent.writeln( - 'ArrayList toListResult = new ArrayList();'); + 'ArrayList toListResult = new ArrayList(${klass.fields.length});'); for (final NamedType field in getFieldsInSerializationOrder(klass)) { final HostDatatype hostDatatype = getFieldHostDatatype( field, @@ -653,10 +645,8 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { indent.scoped('{', '}', () { const String result = 'pigeonResult'; indent.writeln('${klass.name} $result = new ${klass.name}();'); - getFieldsInSerializationOrder(klass) - .toList() - .asMap() - .forEach((int index, final NamedType field) { + enumerate(getFieldsInSerializationOrder(klass), + (int index, final NamedType field) { final String fieldVariable = field.name; final String setter = _makeSetter(field); indent.writeln('Object $fieldVariable = list.get($index);'); @@ -751,7 +741,7 @@ void generateJava(JavaOptions options, Root root, StringSink sink) { void writeWrapError() { indent.format(''' @NonNull private static ArrayList wrapError(@NonNull Throwable exception) { -\tArrayList errorList = new ArrayList<>(); +\tArrayList errorList = new ArrayList<>(3); \terrorList.add(exception.toString()); \terrorList.add(exception.getClass().getSimpleName()); \terrorList.add("Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index b7da07bc7873..51ae995bb4ae 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -214,7 +214,7 @@ void _writeHostApi(Indent indent, Api api, Root root) { indent.write('channel.setMessageHandler '); indent.scoped('{ $messageVarName, reply ->', '}', () { indent.writeln('val wrapped = mutableListOf()'); - + indent.writeln('var error = listOf()'); indent.write('try '); indent.scoped('{', '}', () { final List methodArgument = []; @@ -246,13 +246,20 @@ void _writeHostApi(Indent indent, Api api, Root root) { }, addTrailingNewline: false); indent.add(' catch (exception: Error) '); indent.scoped('{', '}', () { - indent.writeln('wrapped.add(wrapError(exception))'); + indent.writeln('error = wrapError(exception)'); if (method.isAsynchronous) { indent.writeln('reply.reply(wrapped)'); } }); if (!method.isAsynchronous) { - indent.writeln('reply.reply(wrapped)'); + indent.write('if (error.size == 0) '); + indent.scoped('{', '}', () { + indent.writeln('reply.reply(wrapped)'); + }, addTrailingNewline: false); + indent.add(' else '); + indent.scoped('{', '}', () { + indent.writeln('reply.reply(error)'); + }); } }); }, addTrailingNewline: false); @@ -472,20 +479,14 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent, anEnum.documentationComments, _docCommentSpec); indent.write('enum class ${anEnum.name}(val raw: Int) '); indent.scoped('{', '}', () { - // We use explicit indexing here as use of the ordinal() method is - // discouraged. The toList and fromList API matches class API to allow - // the same code to work with enums and classes, but this - // can also be done directly in the host and flutter APIs. - int index = 0; - for (final String member in anEnum.members) { + enumerate(anEnum.members, (int index, final String member) { indent.write('${member.toUpperCase()}($index)'); if (index != anEnum.members.length - 1) { indent.addln(','); } else { indent.addln(';'); } - index++; - } + }); indent.writeln(''); indent.write('companion object '); @@ -509,31 +510,26 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { } void writeToList() { - indent.write('fun toList(): MutableList '); + indent.write('fun toList(): List '); indent.scoped('{', '}', () { - indent.writeln('val list = mutableListOf()'); - - for (final NamedType field in getFieldsInSerializationOrder(klass)) { - final HostDatatype hostDatatype = getHostDatatype(field); - String toWriteValue = ''; - final String fieldName = field.name; - if (!hostDatatype.isBuiltin && - rootClassNameSet.contains(field.type.baseName)) { - toWriteValue = '$fieldName?.toList()'; - } else if (!hostDatatype.isBuiltin && - rootEnumNameSet.contains(field.type.baseName)) { - toWriteValue = '$fieldName?.raw'; - } else { - toWriteValue = fieldName; - } - - if (field.type.isNullable) { - indent.writeln('list.add($toWriteValue)'); - } else { - indent.writeln('list.add($toWriteValue)'); + indent.write('return listOf'); + indent.scoped('(', ')', () { + for (final NamedType field in getFieldsInSerializationOrder(klass)) { + final HostDatatype hostDatatype = getHostDatatype(field); + String toWriteValue = ''; + final String fieldName = field.name; + if (!hostDatatype.isBuiltin && + rootClassNameSet.contains(field.type.baseName)) { + toWriteValue = '$fieldName?.toList()'; + } else if (!hostDatatype.isBuiltin && + rootEnumNameSet.contains(field.type.baseName)) { + toWriteValue = '$fieldName?.raw'; + } else { + toWriteValue = fieldName; + } + indent.writeln('$toWriteValue,'); } - } - indent.writeln('return list'); + }); }); } @@ -546,10 +542,8 @@ void generateKotlin(KotlinOptions options, Root root, StringSink sink) { indent.write('fun fromList(list: List): $className '); indent.scoped('{', '}', () { - getFieldsInSerializationOrder(klass) - .toList() - .asMap() - .forEach((int index, final NamedType field) { + enumerate(getFieldsInSerializationOrder(klass), + (int index, final NamedType field) { final HostDatatype hostDatatype = getHostDatatype(field); // The StandardMessageCodec can give us [Integer, Long] for diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index fe3ebfa3d528..90c41c007774 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -561,13 +561,11 @@ void generateObjcHeader(ObjcOptions options, Root root, StringSink sink) { indent.write('typedef NS_ENUM(NSUInteger, $enumName) '); indent.scoped('{', '};', () { - int index = 0; - for (final String member in anEnum.members) { + enumerate(anEnum.members, (int index, final String member) { // Capitalized first letter to ensure Swift compatibility indent.writeln( '$enumName${member[0].toUpperCase()}${member.substring(1)} = $index,'); - index++; - } + }); }); } @@ -950,10 +948,8 @@ static id GetNullableObjectAtIndex(NSArray* array, NSInteger key) { indent.scoped('{', '}', () { const String resultName = 'pigeonResult'; indent.writeln('$className *$resultName = [[$className alloc] init];'); - getFieldsInSerializationOrder(klass) - .toList() - .asMap() - .forEach((int index, final NamedType field) { + enumerate(getFieldsInSerializationOrder(klass), + (int index, final NamedType field) { if (enumNames.contains(field.type.baseName)) { indent.writeln( '$resultName.${field.name} = [${_listGetter(classNames, 'list', field, index, options.prefix)} integerValue];'); diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 72c3eac1d362..f67bba77b7dc 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -470,15 +470,9 @@ import FlutterMacOS indent.write('enum ${anEnum.name}: Int '); indent.scoped('{', '}', () { - // We use explicit indexing here as use of the ordinal() method is - // discouraged. The toList and fromList API matches class API to allow - // the same code to work with enums and classes, but this - // can also be done directly in the host and flutter APIs. - int index = 0; - for (final String member in anEnum.members) { + enumerate(anEnum.members, (int index, final String member) { indent.writeln('case ${_camelCase(member)} = $index'); - index++; - } + }); }); } @@ -513,10 +507,7 @@ import FlutterMacOS toWriteValue = field.name; } - final String comma = - getFieldsInSerializationOrder(klass).last == field ? '' : ','; - - indent.writeln('$toWriteValue$comma'); + indent.writeln('$toWriteValue,'); } }); }); @@ -527,10 +518,8 @@ import FlutterMacOS indent.write('static func fromList(_ list: [Any?]) -> $className? '); indent.scoped('{', '}', () { - getFieldsInSerializationOrder(klass) - .toList() - .asMap() - .forEach((int index, final NamedType field) { + enumerate(getFieldsInSerializationOrder(klass), + (int index, final NamedType field) { final HostDatatype hostDatatype = getHostDatatype(field); final String listValue = 'list[$index]'; diff --git a/packages/pigeon/test/kotlin_generator_test.dart b/packages/pigeon/test/kotlin_generator_test.dart index 2d2a4207a33a..31eb6b25688d 100644 --- a/packages/pigeon/test/kotlin_generator_test.dart +++ b/packages/pigeon/test/kotlin_generator_test.dart @@ -32,7 +32,7 @@ void main() { expect(code, contains('data class Foobar (')); expect(code, contains('val field1: Long? = null')); expect(code, contains('fun fromList(list: List): Foobar')); - expect(code, contains('fun toList(): MutableList')); + expect(code, contains('fun toList(): List')); }); test('gen one enum', () { @@ -130,14 +130,19 @@ void main() { if (api != null) { channel.setMessageHandler { message, reply -> val wrapped = mutableListOf() + var error = listOf() try { val args = message as List val inputArg = args[0] as Input wrapped.add(api.doSomething(inputArg)) } catch (exception: Error) { - wrapped.add(wrapError(exception)) + error = wrapError(exception) + } + if (error.size == 0) { + reply.reply(wrapped) + } else { + reply.reply(error) } - reply.reply(wrapped) } } else { channel.setMessageHandler(null) @@ -368,7 +373,7 @@ void main() { final String code = sink.toString(); expect(code, contains('fun doSomething(): Output')); expect(code, contains('wrapped.add(api.doSomething())')); - expect(code, contains('wrapped.add(wrapError(exception))')); + expect(code, contains('error = wrapError(exception)')); expect(code, contains('reply(wrapped)')); }); @@ -482,7 +487,7 @@ void main() { expect( code, contains('val nested: Nested? = (list[0] as? List)?.let')); expect(code, contains('Nested.fromList(it)')); - expect(code, contains('fun toList(): MutableList')); + expect(code, contains('fun toList(): List')); }); test('gen one async Host Api', () { From aa36dc8e55b79f8012b4f7e7cc4b2011dd9d1f4b Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 15 Dec 2022 05:36:41 -0800 Subject: [PATCH 51/55] more nits and such --- packages/pigeon/lib/cpp_generator.dart | 4 ++-- packages/pigeon/lib/dart_generator.dart | 5 ++--- packages/pigeon/lib/generator_tools.dart | 1 + packages/pigeon/lib/java_generator.dart | 6 +++--- packages/pigeon/lib/kotlin_generator.dart | 18 +++++----------- .../pigeon/test/kotlin_generator_test.dart | 21 +++++++------------ 6 files changed, 21 insertions(+), 34 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index b6ef192f5b05..1a06d0627758 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -363,7 +363,8 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { indent.addln(''); // Deserialization. - indent.write('${klass.name}::${klass.name}(flutter::EncodableList list) '); + indent.write( + '${klass.name}::${klass.name}(const flutter::EncodableList& list) '); indent.scoped('{', '}', () { enumerate(getFieldsInSerializationOrder(klass), (int index, final NamedType field) { @@ -590,7 +591,6 @@ const flutter::StandardMessageCodec& ${api.name}::GetCodec() { indent.scoped('{', '}', () { indent.writeln( 'reply(WrapError("$argName unexpectedly null."));'); - indent.writeln('reply(wrapped);'); indent.writeln('return;'); }); } diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 4df8a7b6e258..3edbe686777e 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -81,10 +81,9 @@ void _writeCodec(Indent indent, String codecName, Api api, Root root) { enumerate(codecClasses, (int index, final EnumeratedClass customClass) { final String ifValue = 'if (value is ${customClass.name}) '; if (index == 0) { - indent.write(ifValue); - } else { - indent.add(ifValue); + indent.write(''); } + indent.add(ifValue); indent.scoped('{', '} else ', () { indent.writeln('buffer.putUint8(${customClass.enumeration});'); indent.writeln('writeValue(buffer, value.encode());'); diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index 0ce570a33c0b..dea87c0d0bd7 100644 --- a/packages/pigeon/lib/generator_tools.dart +++ b/packages/pigeon/lib/generator_tools.dart @@ -494,5 +494,6 @@ void addDocumentationComments( /// Returns an ordered list of fields to provide consistent serialisation order. Iterable getFieldsInSerializationOrder(Class klass) { + // This returns the fields in the order they are declared in the pigeon file. return klass.fields; } diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index b07826820d31..4292e9cb0c55 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -260,7 +260,7 @@ void _writeHostApi(Indent indent, Api api, Root root) { indent.format(''' Result<$returnType> $resultName = new Result<$returnType>() { \tpublic void success($returnType result) { -\t\twrapped.add($resultValue); +\t\twrapped.add(0, $resultValue); \t\treply.reply(wrapped); \t} \tpublic void error(Throwable error) { @@ -277,10 +277,10 @@ Result<$returnType> $resultName = new Result<$returnType>() { indent.writeln('$call;'); } else if (method.returnType.isVoid) { indent.writeln('$call;'); - indent.writeln('wrapped.add(null);'); + indent.writeln('wrapped.add(0, null);'); } else { indent.writeln('$returnType output = $call;'); - indent.writeln('wrapped.add(output);'); + indent.writeln('wrapped.add(0, output);'); } }); indent.write('catch (Error | RuntimeException exception) '); diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index 51ae995bb4ae..c32cb04819a0 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -213,8 +213,7 @@ void _writeHostApi(Indent indent, Api api, Root root) { indent.write('channel.setMessageHandler '); indent.scoped('{ $messageVarName, reply ->', '}', () { - indent.writeln('val wrapped = mutableListOf()'); - indent.writeln('var error = listOf()'); + indent.writeln('var wrapped = listOf()'); indent.write('try '); indent.scoped('{', '}', () { final List methodArgument = []; @@ -239,27 +238,20 @@ void _writeHostApi(Indent indent, Api api, Root root) { }); } else if (method.returnType.isVoid) { indent.writeln(call); - indent.writeln('wrapped.add(null)'); + indent.writeln('wrapped = listOf(null)'); } else { - indent.writeln('wrapped.add($call)'); + indent.writeln('wrapped = listOf($call)'); } }, addTrailingNewline: false); indent.add(' catch (exception: Error) '); indent.scoped('{', '}', () { - indent.writeln('error = wrapError(exception)'); + indent.writeln('wrapped = wrapError(exception)'); if (method.isAsynchronous) { indent.writeln('reply.reply(wrapped)'); } }); if (!method.isAsynchronous) { - indent.write('if (error.size == 0) '); - indent.scoped('{', '}', () { - indent.writeln('reply.reply(wrapped)'); - }, addTrailingNewline: false); - indent.add(' else '); - indent.scoped('{', '}', () { - indent.writeln('reply.reply(error)'); - }); + indent.writeln('reply.reply(wrapped)'); } }); }, addTrailingNewline: false); diff --git a/packages/pigeon/test/kotlin_generator_test.dart b/packages/pigeon/test/kotlin_generator_test.dart index 31eb6b25688d..4ed3a6cf1f54 100644 --- a/packages/pigeon/test/kotlin_generator_test.dart +++ b/packages/pigeon/test/kotlin_generator_test.dart @@ -129,20 +129,15 @@ void main() { expect(code, contains(''' if (api != null) { channel.setMessageHandler { message, reply -> - val wrapped = mutableListOf() - var error = listOf() + var wrapped = listOf() try { val args = message as List val inputArg = args[0] as Input - wrapped.add(api.doSomething(inputArg)) + wrapped = listOf(api.doSomething(inputArg)) } catch (exception: Error) { - error = wrapError(exception) - } - if (error.size == 0) { - reply.reply(wrapped) - } else { - reply.reply(error) + wrapped = wrapError(exception) } + reply.reply(wrapped) } } else { channel.setMessageHandler(null) @@ -372,8 +367,8 @@ void main() { generateKotlin(kotlinOptions, root, sink); final String code = sink.toString(); expect(code, contains('fun doSomething(): Output')); - expect(code, contains('wrapped.add(api.doSomething())')); - expect(code, contains('error = wrapError(exception)')); + expect(code, contains('wrapped = listOf(api.doSomething())')); + expect(code, contains('wrapped = wrapError(exception)')); expect(code, contains('reply(wrapped)')); }); @@ -774,7 +769,7 @@ void main() { generateKotlin(kotlinOptions, root, sink); final String code = sink.toString(); expect(code, contains('fun doit(): List')); - expect(code, contains('wrapped.add(api.doit())')); + expect(code, contains('wrapped = listOf(api.doit())')); expect(code, contains('reply.reply(wrapped)')); }); @@ -838,7 +833,7 @@ void main() { code, contains( 'val yArg = args[1].let { if (it is Int) it.toLong() else it as Long }')); - expect(code, contains('wrapped.add(api.add(xArg, yArg))')); + expect(code, contains('wrapped = listOf(api.add(xArg, yArg))')); expect(code, contains('reply.reply(wrapped)')); }); From 221d864d02d1a0e34438fd219db71e0d073c42ec Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 15 Dec 2022 07:31:52 -0800 Subject: [PATCH 52/55] bug? --- packages/pigeon/lib/cpp_generator.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 1a06d0627758..9bb4bce98dd5 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -364,7 +364,7 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { // Deserialization. indent.write( - '${klass.name}::${klass.name}(const flutter::EncodableList& list) '); + '${klass.name}::${klass.name}(const flutter::EncodableList list) '); indent.scoped('{', '}', () { enumerate(getFieldsInSerializationOrder(klass), (int index, final NamedType field) { From 09e0eefa7a466a127ebc3089b4eb935c98a2fe82 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 15 Dec 2022 08:57:21 -0800 Subject: [PATCH 53/55] references --- packages/pigeon/lib/cpp_generator.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 9bb4bce98dd5..5099ada8338e 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -232,7 +232,7 @@ void _writeDataClassDeclaration(Indent indent, Class klass, Root root, }); indent.scoped(' private:', '', () { - indent.writeln('${klass.name}(flutter::EncodableList list);'); + indent.writeln('${klass.name}(flutter::EncodableList& list);'); indent.writeln('flutter::EncodableList ToEncodableList() const;'); for (final Class friend in root.classes) { if (friend != klass && @@ -364,7 +364,7 @@ void _writeDataClassImplementation(Indent indent, Class klass, Root root) { // Deserialization. indent.write( - '${klass.name}::${klass.name}(const flutter::EncodableList list) '); + '${klass.name}::${klass.name}(const flutter::EncodableList& list) '); indent.scoped('{', '}', () { enumerate(getFieldsInSerializationOrder(klass), (int index, final NamedType field) { From 8b706d1681e4ef9dfc43bbb7ccc74ef5c0837d05 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 15 Dec 2022 09:59:16 -0800 Subject: [PATCH 54/55] const --- packages/pigeon/lib/cpp_generator.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 5099ada8338e..b9d096510776 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -232,7 +232,7 @@ void _writeDataClassDeclaration(Indent indent, Class klass, Root root, }); indent.scoped(' private:', '', () { - indent.writeln('${klass.name}(flutter::EncodableList& list);'); + indent.writeln('${klass.name}(const flutter::EncodableList& list);'); indent.writeln('flutter::EncodableList ToEncodableList() const;'); for (final Class friend in root.classes) { if (friend != klass && From 40feac38e0252cdb3af52ebae960fb064d6ab958 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 16 Dec 2022 11:38:37 -0800 Subject: [PATCH 55/55] new null for larger alltypes --- .../src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt index 525adefff4bb..efaa1691f05b 100644 --- a/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt +++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/AllDatatypesTest.kt @@ -107,7 +107,7 @@ internal class AllDatatypesTest: TestCase() { assertNotNull(list[1]) assertTrue(list[1] == 123L) - val list2 = listOf(null, 123, null, null, null, null, null, null, null, null, null, null, null) + val list2 = listOf(null, 123, null, null, null, null, null, null, null, null, null, null, null, null) val everything2 = AllTypes.fromList(list2) assertEquals(everything.anInt, everything2.anInt)