From df851d59441d8dec12456dc6aad1099cb8c77b69 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 20 Dec 2022 21:29:39 -0800 Subject: [PATCH 01/27] Rename generator class to Adapter --- packages/pigeon/lib/pigeon_lib.dart | 143 ++++++++++++++-------------- 1 file changed, 72 insertions(+), 71 deletions(-) diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 5da91c4a7c5..a8348ea7474 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -355,18 +355,19 @@ IOSink? _openSink(String? output) { return sink; } -/// A generator that will write code to a sink based on the contents of [PigeonOptions]. -abstract class Generator { - /// Returns an [IOSink] instance to be written to if the [Generator] should - /// generate. If it returns `null`, the [Generator] will be skipped. +/// An adapter that will call a generator to write code to a sink +/// based on the contents of [PigeonOptions]. +abstract class Adapter { + /// Returns an [IOSink] instance to be written to if the [Adapter] should + /// generate. If it returns `null`, the [Adapter] will be skipped. IOSink? shouldGenerate(PigeonOptions options); /// Write the generated code described in [root] to [sink] using the /// [options]. void generate(StringSink sink, PigeonOptions options, Root root); - /// Generates errors that would only be appropriate for this [Generator]. For - /// example, maybe a certain feature isn't implemented in a [Generator] yet. + /// Generates errors that would only be appropriate for this [Adapter]. For + /// example, maybe a certain feature isn't implemented in a [Adapter] yet. List validate(PigeonOptions options, Root root); } @@ -378,10 +379,10 @@ DartOptions _dartOptionsWithCopyrightHeader( copyrightHeader != null ? _lineReader(copyrightHeader) : null)); } -/// A [Generator] that generates the AST. -class AstGenerator implements Generator { - /// Constructor for [AstGenerator]. - const AstGenerator(); +/// A [Adapter] that generates the AST. +class AstAdapter implements Adapter { + /// Constructor for [AstAdapter]. + const AstAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -395,10 +396,10 @@ class AstGenerator implements Generator { List validate(PigeonOptions options, Root root) => []; } -/// A [Generator] that generates Dart source code. -class DartGenerator implements Generator { - /// Constructor for [DartGenerator]. - const DartGenerator(); +/// A [Adapter] that generates Dart source code. +class DartAdapter implements Adapter { + /// Constructor for [DartAdapter]. + const DartAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -414,10 +415,10 @@ class DartGenerator implements Generator { List validate(PigeonOptions options, Root root) => []; } -/// A [Generator] that generates Dart test source code. -class DartTestGenerator implements Generator { - /// Constructor for [DartTestGenerator]. - const DartTestGenerator(); +/// A [Adapter] that generates Dart test source code. +class DartTestAdapter implements Adapter { + /// Constructor for [DartTestAdapter]. + const DartTestAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -445,10 +446,10 @@ class DartTestGenerator implements Generator { List validate(PigeonOptions options, Root root) => []; } -/// A [Generator] that generates Objective-C header code. -class ObjcHeaderGenerator implements Generator { - /// Constructor for [ObjcHeaderGenerator]. - const ObjcHeaderGenerator(); +/// A [Adapter] that generates Objective-C header code. +class ObjcHeaderAdapter implements Adapter { + /// Constructor for [ObjcHeaderAdapter]. + const ObjcHeaderAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -469,10 +470,10 @@ class ObjcHeaderGenerator implements Generator { validateObjc(options.objcOptions!, root); } -/// A [Generator] that generates Objective-C source code. -class ObjcSourceGenerator implements Generator { - /// Constructor for [ObjcSourceGenerator]. - const ObjcSourceGenerator(); +/// A [Adapter] that generates Objective-C source code. +class ObjcSourceAdapter implements Adapter { + /// Constructor for [ObjcSourceAdapter]. + const ObjcSourceAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -492,10 +493,10 @@ class ObjcSourceGenerator implements Generator { List validate(PigeonOptions options, Root root) => []; } -/// A [Generator] that generates Java source code. -class JavaGenerator implements Generator { - /// Constructor for [JavaGenerator]. - const JavaGenerator(); +/// A [Adapter] that generates Java source code. +class JavaAdapter implements Adapter { + /// Constructor for [JavaAdapter]. + const JavaAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -516,10 +517,10 @@ class JavaGenerator implements Generator { List validate(PigeonOptions options, Root root) => []; } -/// A [Generator] that generates Swift source code. -class SwiftGenerator implements Generator { - /// Constructor for [SwiftGenerator]. - const SwiftGenerator(); +/// A [Adapter] that generates Swift source code. +class SwiftAdapter implements Adapter { + /// Constructor for [SwiftAdapter]. + const SwiftAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -538,10 +539,10 @@ class SwiftGenerator implements Generator { List validate(PigeonOptions options, Root root) => []; } -/// A [Generator] that generates C++ header code. -class CppHeaderGenerator implements Generator { - /// Constructor for [CppHeaderGenerator]. - const CppHeaderGenerator(); +/// A [Adapter] that generates C++ header code. +class CppHeaderAdapter implements Adapter { + /// Constructor for [CppHeaderAdapter]. + const CppHeaderAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -563,10 +564,10 @@ class CppHeaderGenerator implements Generator { validateCpp(options.cppOptions!, root); } -/// A [Generator] that generates C++ source code. -class CppSourceGenerator implements Generator { - /// Constructor for [CppSourceGenerator]. - const CppSourceGenerator(); +/// A [Adapter] that generates C++ source code. +class CppSourceAdapter implements Adapter { + /// Constructor for [CppSourceAdapter]. + const CppSourceAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -586,10 +587,10 @@ class CppSourceGenerator implements Generator { List validate(PigeonOptions options, Root root) => []; } -/// A [Generator] that generates Kotlin source code. -class KotlinGenerator implements Generator { - /// Constructor for [KotlinGenerator]. - const KotlinGenerator(); +/// A [Adapter] that generates Kotlin source code. +class KotlinAdapter implements Adapter { + /// Constructor for [KotlinAdapter]. + const KotlinAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -1331,37 +1332,37 @@ ${_argParser.usage}'''; } /// The 'main' entrypoint used by the command-line tool. [args] are the - /// command-line arguments. The optional parameter [generators] allows you to + /// command-line arguments. The optional parameter [adapters] allows you to /// customize the generators that pigeon will use. The optional parameter /// [sdkPath] allows you to specify the Dart SDK path. static Future run(List args, - {List? generators, String? sdkPath}) { + {List? adapters, String? sdkPath}) { final PigeonOptions options = Pigeon.parseArgs(args); - return runWithOptions(options, generators: generators, sdkPath: sdkPath); + return runWithOptions(options, adapters: adapters, sdkPath: sdkPath); } /// The 'main' entrypoint used by external packages. [options] is - /// used when running the code generator. The optional parameter [generators] allows you to + /// used when running the code generator. The optional parameter [adapters] allows you to /// customize the generators that pigeon will use. The optional parameter /// [sdkPath] allows you to specify the Dart SDK path. static Future runWithOptions(PigeonOptions options, - {List? generators, String? sdkPath}) async { + {List? adapters, String? sdkPath}) async { final Pigeon pigeon = Pigeon.setup(); if (options.debugGenerators ?? false) { generator_tools.debugGenerators = true; } - final List safeGenerators = generators ?? - [ - const DartGenerator(), - const JavaGenerator(), - const SwiftGenerator(), - const KotlinGenerator(), - const CppHeaderGenerator(), - const CppSourceGenerator(), - const DartTestGenerator(), - const ObjcHeaderGenerator(), - const ObjcSourceGenerator(), - const AstGenerator(), + final List safeAdapters = adapters ?? + [ + const DartAdapter(), + const JavaAdapter(), + const SwiftAdapter(), + const KotlinAdapter(), + const CppHeaderAdapter(), + const CppSourceAdapter(), + const DartTestAdapter(), + const ObjcHeaderAdapter(), + const ObjcSourceAdapter(), + const AstAdapter(), ]; _executeConfigurePigeon(options); @@ -1383,12 +1384,12 @@ ${_argParser.usage}'''; } } - for (final Generator generator in safeGenerators) { - final IOSink? sink = generator.shouldGenerate(options); + for (final Adapter adapter in safeAdapters) { + final IOSink? sink = adapter.shouldGenerate(options); if (sink != null) { - final List generatorErrors = - generator.validate(options, parseResults.root); - errors.addAll(generatorErrors); + final List adapterErrors = + adapter.validate(options, parseResults.root); + errors.addAll(adapterErrors); await releaseSink(sink); } } @@ -1425,10 +1426,10 @@ ${_argParser.usage}'''; CppOptions(header: path.basename(options.cppHeaderOut!))))); } - for (final Generator generator in safeGenerators) { - final IOSink? sink = generator.shouldGenerate(options); + for (final Adapter adapter in safeAdapters) { + final IOSink? sink = adapter.shouldGenerate(options); if (sink != null) { - generator.generate(sink, options, parseResults.root); + adapter.generate(sink, options, parseResults.root); await sink.flush(); await releaseSink(sink); } From e40d679b8bacd7af8b6d913d3c5e5d96462be2da Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 20 Dec 2022 21:30:01 -0800 Subject: [PATCH 02/27] create new generator class and dart subclass --- packages/pigeon/lib/dart_generator.dart | 17 +++++++++++++++ packages/pigeon/lib/generator.dart | 29 +++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 packages/pigeon/lib/generator.dart diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 85956ced69e..c9c672a661d 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -9,6 +9,7 @@ import 'package:yaml/yaml.dart' as yaml; import 'ast.dart'; import 'functional.dart'; +import 'generator.dart'; import 'generator_tools.dart'; /// Documentation comment open symbol. @@ -55,6 +56,22 @@ class DartOptions { } } +/// Class that manages all coe generation. +class DartGenerator extends Generator { + /// Instantiates a Generator. + DartGenerator({ + required DartOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates files for specified language with specified [languageOptions] + @override + void generate() { + // + } +} + String _escapeForDartSingleQuotedString(String raw) { return raw .replaceAll(r'\', r'\\') diff --git a/packages/pigeon/lib/generator.dart b/packages/pigeon/lib/generator.dart new file mode 100644 index 00000000000..f45c113a7b6 --- /dev/null +++ b/packages/pigeon/lib/generator.dart @@ -0,0 +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 'ast.dart'; + +/// A Super class of generator classes. +/// +/// This is meant to provide structure and direction for future generator work. +abstract class Generator { + /// Instantiates a Generator. + const Generator({ + required this.languageOptions, + required this.root, + required this.sink, + }); + + /// + final T languageOptions; + + /// + final Root root; + + /// + final StringSink sink; + + /// Generates files for specified language with specified [languageOptions] + void generate(); +} From 8c4e2a0a2b888f924638ba65d6e0a581836ee604 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 11:57:23 -0800 Subject: [PATCH 03/27] cpp and dart test gen --- packages/pigeon/lib/dart_generator.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index c9c672a661d..f9042b148ac 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -56,16 +56,16 @@ class DartOptions { } } -/// Class that manages all coe generation. +/// Class that manages all Dart code generation. class DartGenerator extends Generator { - /// Instantiates a Generator. + /// Instantiates a Dart Generator. DartGenerator({ required DartOptions languageOptions, required Root root, required StringSink sink, }) : super(languageOptions: languageOptions, root: root, sink: sink); - /// Generates files for specified language with specified [languageOptions] + /// Generates Dart files with specified [DartOptions] @override void generate() { // From bcdbdbcaf089550dac5c14b1c66e6ef5b6838b69 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 11:58:03 -0800 Subject: [PATCH 04/27] added files --- packages/pigeon/lib/cpp_generator.dart | 33 +++++++++++++++++++++++++ packages/pigeon/lib/dart_generator.dart | 16 ++++++++++++ packages/pigeon/lib/pigeon_lib.dart | 20 +++++++-------- 3 files changed, 59 insertions(+), 10 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 744f6e9ffce..584d4792ff2 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -4,6 +4,7 @@ import 'ast.dart'; import 'functional.dart'; +import 'generator.dart'; import 'generator_tools.dart'; import 'pigeon_lib.dart' show Error; @@ -64,6 +65,38 @@ class CppOptions { } } +/// Class that manages all Cpp header code generation. +class CppHeaderGenerator extends Generator { + /// Instantiates a Cpp Generator. + CppHeaderGenerator({ + required CppOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates Cpp header files with specified [CppOptions] + @override + void generate() { + // + } +} + +/// Class that manages all Cpp code generation. +class CppSourceGenerator extends Generator { + /// Instantiates a Cpp Generator. + CppSourceGenerator({ + required CppOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates Cpp files with specified [CppOptions] + @override + void generate() { + // + } +} + String _getCodecSerializerName(Api api) => '${api.name}CodecSerializer'; const String _pointerPrefix = 'pointer'; diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index f9042b148ac..4ddbe9056ef 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -72,6 +72,22 @@ class DartGenerator extends Generator { } } +/// Class that manages all Dart code generation. +class DartTestGenerator extends Generator { + /// Instantiates a Dart Generator. + DartTestGenerator({ + required DartOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates Dart files with specified [DartOptions] + @override + void generate() { + // + } +} + String _escapeForDartSingleQuotedString(String raw) { return raw .replaceAll(r'\', r'\\') diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index a8348ea7474..5bab11a01bb 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -379,7 +379,7 @@ DartOptions _dartOptionsWithCopyrightHeader( copyrightHeader != null ? _lineReader(copyrightHeader) : null)); } -/// A [Adapter] that generates the AST. +/// An [Adapter] that generates the AST. class AstAdapter implements Adapter { /// Constructor for [AstAdapter]. const AstAdapter(); @@ -396,7 +396,7 @@ class AstAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// A [Adapter] that generates Dart source code. +/// An [Adapter] that generates Dart source code. class DartAdapter implements Adapter { /// Constructor for [DartAdapter]. const DartAdapter(); @@ -415,7 +415,7 @@ class DartAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// A [Adapter] that generates Dart test source code. +/// An [Adapter] that generates Dart test source code. class DartTestAdapter implements Adapter { /// Constructor for [DartTestAdapter]. const DartTestAdapter(); @@ -446,7 +446,7 @@ class DartTestAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// A [Adapter] that generates Objective-C header code. +/// An [Adapter] that generates Objective-C header code. class ObjcHeaderAdapter implements Adapter { /// Constructor for [ObjcHeaderAdapter]. const ObjcHeaderAdapter(); @@ -470,7 +470,7 @@ class ObjcHeaderAdapter implements Adapter { validateObjc(options.objcOptions!, root); } -/// A [Adapter] that generates Objective-C source code. +/// An [Adapter] that generates Objective-C source code. class ObjcSourceAdapter implements Adapter { /// Constructor for [ObjcSourceAdapter]. const ObjcSourceAdapter(); @@ -493,7 +493,7 @@ class ObjcSourceAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// A [Adapter] that generates Java source code. +/// An [Adapter] that generates Java source code. class JavaAdapter implements Adapter { /// Constructor for [JavaAdapter]. const JavaAdapter(); @@ -517,7 +517,7 @@ class JavaAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// A [Adapter] that generates Swift source code. +/// An [Adapter] that generates Swift source code. class SwiftAdapter implements Adapter { /// Constructor for [SwiftAdapter]. const SwiftAdapter(); @@ -539,7 +539,7 @@ class SwiftAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// A [Adapter] that generates C++ header code. +/// An [Adapter] that generates C++ header code. class CppHeaderAdapter implements Adapter { /// Constructor for [CppHeaderAdapter]. const CppHeaderAdapter(); @@ -564,7 +564,7 @@ class CppHeaderAdapter implements Adapter { validateCpp(options.cppOptions!, root); } -/// A [Adapter] that generates C++ source code. +/// An [Adapter] that generates C++ source code. class CppSourceAdapter implements Adapter { /// Constructor for [CppSourceAdapter]. const CppSourceAdapter(); @@ -587,7 +587,7 @@ class CppSourceAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// A [Adapter] that generates Kotlin source code. +/// An [Adapter] that generates Kotlin source code. class KotlinAdapter implements Adapter { /// Constructor for [KotlinAdapter]. const KotlinAdapter(); From 31bb7019a1065d505ee4ab34dca147cf2c7e0df7 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 12:09:44 -0800 Subject: [PATCH 05/27] Adds Generator class to all generators --- packages/pigeon/lib/java_generator.dart | 17 ++++++++++++ packages/pigeon/lib/kotlin_generator.dart | 17 ++++++++++++ packages/pigeon/lib/objc_generator.dart | 33 +++++++++++++++++++++++ 3 files changed, 67 insertions(+) diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index c52d976cfdf..e77c11da941 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -4,6 +4,7 @@ import 'ast.dart'; import 'functional.dart'; +import 'generator.dart'; import 'generator_tools.dart'; import 'pigeon_lib.dart' show TaskQueueType; @@ -84,6 +85,22 @@ class JavaOptions { } } +/// Class that manages all Java code generation. +class JavaGenerator extends Generator { + /// Instantiates a Java Generator. + JavaGenerator({ + required JavaOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates Java files with specified [JavaOptions] + @override + void generate() { + // + } +} + /// Calculates the name of the codec that will be generated for [api]. String _getCodecName(Api api) => '${api.name}Codec'; diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index 1f52d3d22c3..371987d70af 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -4,6 +4,7 @@ import 'ast.dart'; import 'functional.dart'; +import 'generator.dart'; import 'generator_tools.dart'; import 'pigeon_lib.dart' show TaskQueueType; @@ -64,6 +65,22 @@ class KotlinOptions { } } +/// Class that manages all Kotlin code generation. +class KotlinGenerator extends Generator { + /// Instantiates a Kotlin Generator. + KotlinGenerator({ + required KotlinOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates Kotlin files with specified [KotlinOptions] + @override + void generate() { + // + } +} + /// Calculates the name of the codec that will be generated for [api]. String _getCodecName(Api api) => '${api.name}Codec'; diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index e8de7c1154c..e1e5815bcaa 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -4,6 +4,7 @@ import 'ast.dart'; import 'functional.dart'; +import 'generator.dart'; import 'generator_tools.dart'; import 'pigeon_lib.dart' show Error, TaskQueueType; @@ -63,6 +64,38 @@ class ObjcOptions { } } +/// Class that manages all Objc header code generation. +class ObjcHeaderGenerator extends Generator { + /// Instantiates a Objc Generator. + ObjcHeaderGenerator({ + required ObjcOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates Objc header files with specified [ObjcOptions] + @override + void generate() { + // + } +} + +/// Class that manages all Objc code generation. +class ObjcSourceGenerator extends Generator { + /// Instantiates a Objc Generator. + ObjcSourceGenerator({ + required ObjcOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates Objc files with specified [ObjcOptions] + @override + void generate() { + // + } +} + /// Calculates the ObjC class name, possibly prefixed. String _className(String? prefix, String className) { if (prefix != null) { From 06315ce0c5c32aa4a9ae948014669e06c040c1e6 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 12:16:34 -0800 Subject: [PATCH 06/27] adds swift --- packages/pigeon/lib/swift_generator.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 3736506c1e7..8db09cf96bc 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -4,6 +4,7 @@ import 'ast.dart'; import 'functional.dart'; +import 'generator.dart'; import 'generator_tools.dart'; /// Documentation comment open symbol. @@ -47,6 +48,22 @@ class SwiftOptions { } } +/// Class that manages all Swift code generation. +class SwiftGenerator extends Generator { + /// Instantiates a Swift Generator. + SwiftGenerator({ + required SwiftOptions languageOptions, + required Root root, + required StringSink sink, + }) : super(languageOptions: languageOptions, root: root, sink: sink); + + /// Generates Swift files with specified [SwiftOptions] + @override + void generate() { + // + } +} + /// Calculates the name of the codec that will be generated for [api]. String _getCodecName(Api api) => '${api.name}Codec'; From 5675c646717296c9a0444f8714c5fb258ce39d06 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 12:25:11 -0800 Subject: [PATCH 07/27] Updates tests to use new Adapter naming scheme --- packages/pigeon/test/pigeon_lib_test.dart | 48 +++++++++++------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/pigeon/test/pigeon_lib_test.dart b/packages/pigeon/test/pigeon_lib_test.dart index 4a121e7e9e0..411643f679f 100644 --- a/packages/pigeon/test/pigeon_lib_test.dart +++ b/packages/pigeon/test/pigeon_lib_test.dart @@ -9,8 +9,8 @@ import 'package:pigeon/ast.dart'; import 'package:pigeon/pigeon_lib.dart'; import 'package:test/test.dart'; -class _ValidatorGenerator implements Generator { - _ValidatorGenerator(this.sink); +class _ValidatorAdapter implements Adapter { + _ValidatorAdapter(this.sink); bool didCallValidate = false; final IOSink? sink; @@ -397,9 +397,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const DartGenerator dartGenerator = DartGenerator(); + const DartAdapter dartAdapter = DartAdapter(); final StringBuffer buffer = StringBuffer(); - dartGenerator.generate(buffer, options, root); + dartAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -407,9 +407,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( javaOut: 'Foo.java', copyrightHeader: './copyright_header.txt'); - const JavaGenerator javaGenerator = JavaGenerator(); + const JavaAdapter javaAdapter = JavaAdapter(); final StringBuffer buffer = StringBuffer(); - javaGenerator.generate(buffer, options, root); + javaAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -417,9 +417,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const ObjcHeaderGenerator objcHeaderGenerator = ObjcHeaderGenerator(); + const ObjcHeaderAdapter objcHeaderAdapter = ObjcHeaderAdapter(); final StringBuffer buffer = StringBuffer(); - objcHeaderGenerator.generate(buffer, options, root); + objcHeaderAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -427,9 +427,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const ObjcSourceGenerator objcSourceGenerator = ObjcSourceGenerator(); + const ObjcSourceAdapter objcSourceAdapter = ObjcSourceAdapter(); final StringBuffer buffer = StringBuffer(); - objcSourceGenerator.generate(buffer, options, root); + objcSourceAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -437,9 +437,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( swiftOut: 'Foo.swift', copyrightHeader: './copyright_header.txt'); - const SwiftGenerator swiftGenerator = SwiftGenerator(); + const SwiftAdapter swiftAdapter = SwiftAdapter(); final StringBuffer buffer = StringBuffer(); - swiftGenerator.generate(buffer, options, root); + swiftAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -447,9 +447,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( cppHeaderOut: 'Foo.h', copyrightHeader: './copyright_header.txt'); - const CppHeaderGenerator cppHeaderGenerator = CppHeaderGenerator(); + const CppHeaderAdapter cppHeaderAdapter = CppHeaderAdapter(); final StringBuffer buffer = StringBuffer(); - cppHeaderGenerator.generate(buffer, options, root); + cppHeaderAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -457,9 +457,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const CppSourceGenerator cppSourceGenerator = CppSourceGenerator(); + const CppSourceAdapter cppSourceAdapter = CppSourceAdapter(); final StringBuffer buffer = StringBuffer(); - cppSourceGenerator.generate(buffer, options, root); + cppSourceAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -929,9 +929,9 @@ abstract class Api { dartTestOut: 'stdout', dartOut: 'stdout', ); - const DartTestGenerator dartGenerator = DartTestGenerator(); + const DartTestAdapter dartAdapter = DartTestAdapter(); final StringBuffer buffer = StringBuffer(); - dartGenerator.generate(buffer, options, root); + dartAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -1187,9 +1187,9 @@ abstract class Api { test('generator validation', () async { final Completer completer = Completer(); withTempFile('foo.dart', (File input) async { - final _ValidatorGenerator generator = _ValidatorGenerator(stdout); + final _ValidatorAdapter generator = _ValidatorAdapter(stdout); final int result = await Pigeon.run(['--input', input.path], - generators: [generator]); + adapters: [generator]); expect(generator.didCallValidate, isTrue); expect(result, isNot(0)); completer.complete(); @@ -1200,10 +1200,10 @@ abstract class Api { test('generator validation skipped', () async { final Completer completer = Completer(); withTempFile('foo.dart', (File input) async { - final _ValidatorGenerator generator = _ValidatorGenerator(null); + final _ValidatorAdapter generator = _ValidatorAdapter(null); final int result = await Pigeon.run( ['--input', input.path, '--dart_out', 'foo.dart'], - generators: [generator]); + adapters: [generator]); expect(generator.didCallValidate, isFalse); expect(result, equals(0)); completer.complete(); @@ -1214,10 +1214,10 @@ abstract class Api { test('run with PigeonOptions', () async { final Completer completer = Completer(); withTempFile('foo.dart', (File input) async { - final _ValidatorGenerator generator = _ValidatorGenerator(null); + final _ValidatorAdapter generator = _ValidatorAdapter(null); final int result = await Pigeon.runWithOptions( PigeonOptions(input: input.path, dartOut: 'foo.dart'), - generators: [generator]); + adapters: [generator]); expect(generator.didCallValidate, isFalse); expect(result, equals(0)); completer.complete(); From a319b481ddd797f22e49ac04f434e3153cf36627 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 12:55:30 -0800 Subject: [PATCH 08/27] Dart generate methods --- packages/pigeon/lib/dart_generator.dart | 18 ++++++++++++++++-- packages/pigeon/lib/pigeon_lib.dart | 18 ++++++++++-------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 4ddbe9056ef..0a5f310d233 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -68,7 +68,7 @@ class DartGenerator extends Generator { /// Generates Dart files with specified [DartOptions] @override void generate() { - // + generateDart(languageOptions, root, sink); } } @@ -79,12 +79,26 @@ class DartTestGenerator extends Generator { required DartOptions languageOptions, required Root root, required StringSink sink, + required this.dartOutPath, + required this.testOutPath, }) : super(languageOptions: languageOptions, root: root, sink: sink); + /// Path to output generated Dart file. + String dartOutPath; + + /// Path to output generated Test file. + String testOutPath; + /// Generates Dart files with specified [DartOptions] @override void generate() { - // + generateTestDart( + languageOptions, + root, + sink, + dartOutPath: dartOutPath, + testOutPath: testOutPath, + ); } } diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 5bab11a01bb..0bb11c18d43 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -405,7 +405,9 @@ class DartAdapter implements Adapter { void generate(StringSink sink, PigeonOptions options, Root root) { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader); - generateDart(dartOptionsWithHeader, root, sink); + final DartGenerator generator = DartGenerator( + languageOptions: dartOptionsWithHeader, root: root, sink: sink); + generator.generate(); } @override @@ -424,13 +426,13 @@ class DartTestAdapter implements Adapter { void generate(StringSink sink, PigeonOptions options, Root root) { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader); - generateTestDart( - dartOptionsWithHeader, - root, - sink, - dartOutPath: options.dartOut!, - testOutPath: options.dartTestOut!, - ); + final DartTestGenerator testGenerator = DartTestGenerator( + languageOptions: dartOptionsWithHeader, + root: root, + sink: sink, + dartOutPath: options.dartOut!, + testOutPath: options.dartTestOut!); + testGenerator.generate(); } @override From 6d7405d7a118bb687bcf02ce7cbc9b83488a3226 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 13:07:37 -0800 Subject: [PATCH 09/27] convert all generate functions to use new method --- packages/pigeon/lib/cpp_generator.dart | 8 ++++-- packages/pigeon/lib/java_generator.dart | 2 +- packages/pigeon/lib/kotlin_generator.dart | 2 +- packages/pigeon/lib/objc_generator.dart | 4 +-- packages/pigeon/lib/pigeon_lib.dart | 32 +++++++++++++++++------ packages/pigeon/lib/swift_generator.dart | 2 +- 6 files changed, 35 insertions(+), 15 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 584d4792ff2..dccb6d8602d 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -72,12 +72,16 @@ class CppHeaderGenerator extends Generator { required CppOptions languageOptions, required Root root, required StringSink sink, + required this.path, }) : super(languageOptions: languageOptions, root: root, sink: sink); + /// Path to output generated Cpp Header file. + String path; + /// Generates Cpp header files with specified [CppOptions] @override void generate() { - // + generateCppHeader(path, languageOptions, root, sink); } } @@ -93,7 +97,7 @@ class CppSourceGenerator extends Generator { /// Generates Cpp files with specified [CppOptions] @override void generate() { - // + generateCppSource(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index e77c11da941..5bc65d32a8a 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -97,7 +97,7 @@ class JavaGenerator extends Generator { /// Generates Java files with specified [JavaOptions] @override void generate() { - // + generateJava(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index 371987d70af..584b45a8535 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -77,7 +77,7 @@ class KotlinGenerator extends Generator { /// Generates Kotlin files with specified [KotlinOptions] @override void generate() { - // + generateKotlin(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index e1e5815bcaa..417189d7a60 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -76,7 +76,7 @@ class ObjcHeaderGenerator extends Generator { /// Generates Objc header files with specified [ObjcOptions] @override void generate() { - // + generateObjcHeader(languageOptions, root, sink); } } @@ -92,7 +92,7 @@ class ObjcSourceGenerator extends Generator { /// Generates Objc files with specified [ObjcOptions] @override void generate() { - // + generateObjcSource(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 0bb11c18d43..45bb47009c5 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -460,7 +460,9 @@ class ObjcHeaderAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - generateObjcHeader(objcOptionsWithHeader, root, sink); + final ObjcHeaderGenerator generator = ObjcHeaderGenerator( + languageOptions: objcOptionsWithHeader, root: root, sink: sink); + generator.generate(); } @override @@ -484,7 +486,9 @@ class ObjcSourceAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - generateObjcSource(objcOptionsWithHeader, root, sink); + final ObjcSourceGenerator generator = ObjcSourceGenerator( + languageOptions: objcOptionsWithHeader, root: root, sink: sink); + generator.generate(); } @override @@ -509,7 +513,9 @@ class JavaAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - generateJava(javaOptions, root, sink); + final JavaGenerator generator = + JavaGenerator(languageOptions: javaOptions, root: root, sink: sink); + generator.generate(); } @override @@ -531,7 +537,9 @@ class SwiftAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - generateSwift(swiftOptions, root, sink); + final SwiftGenerator generator = + SwiftGenerator(languageOptions: swiftOptions, root: root, sink: sink); + generator.generate(); } @override @@ -553,8 +561,12 @@ class CppHeaderAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - generateCppHeader(path.basenameWithoutExtension(options.cppHeaderOut!), - cppOptionsWithHeader, root, sink); + final CppHeaderGenerator generator = CppHeaderGenerator( + languageOptions: cppOptionsWithHeader, + root: root, + sink: sink, + path: path.basenameWithoutExtension(options.cppHeaderOut!)); + generator.generate(); } @override @@ -578,7 +590,9 @@ class CppSourceAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - generateCppSource(cppOptionsWithHeader, root, sink); + final CppSourceGenerator generator = CppSourceGenerator( + languageOptions: cppOptionsWithHeader, root: root, sink: sink); + generator.generate(); } @override @@ -602,7 +616,9 @@ class KotlinAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - generateKotlin(kotlinOptions, root, sink); + final KotlinGenerator generator = + KotlinGenerator(languageOptions: kotlinOptions, root: root, sink: sink); + generator.generate(); } @override diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 8db09cf96bc..3853d87b686 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -60,7 +60,7 @@ class SwiftGenerator extends Generator { /// Generates Swift files with specified [SwiftOptions] @override void generate() { - // + generateSwift(languageOptions, root, sink); } } From 1e59fef259017c0e4f113cd8adbd63511febff89 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 13:14:45 -0800 Subject: [PATCH 10/27] chagngelog --- packages/pigeon/CHANGELOG.md | 4 ++++ packages/pigeon/lib/generator_tools.dart | 2 +- packages/pigeon/pubspec.yaml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index e0278c5731d..6e6688e0d85 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.16 + +* Creates new Generator classes for each language. + ## 4.2.15 * Relocates generator classes. (Reverted) diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index 6624a1dc8ec..ea522eaa04d 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.15'; +const String pigeonVersion = '4.2.16'; /// Read all the content from [stdin] to a String. String readStdin() { diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index e9c9d6b4901..886f56a6ea0 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.15 # This must match the version in lib/generator_tools.dart +version: 4.2.16 # This must match the version in lib/generator_tools.dart environment: sdk: ">=2.12.0 <3.0.0" From 0964cd32dedc3b3208f5280e64658d635215936e Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 14:23:38 -0800 Subject: [PATCH 11/27] remove Generator class fields --- packages/pigeon/lib/cpp_generator.dart | 15 ++----- packages/pigeon/lib/dart_generator.dart | 15 ++----- packages/pigeon/lib/generator.dart | 17 +------- packages/pigeon/lib/java_generator.dart | 8 +--- packages/pigeon/lib/kotlin_generator.dart | 8 +--- packages/pigeon/lib/objc_generator.dart | 16 ++----- packages/pigeon/lib/pigeon_lib.dart | 52 +++++++++-------------- packages/pigeon/lib/swift_generator.dart | 8 +--- 8 files changed, 41 insertions(+), 98 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index d46028a279c..cb3c23e21bc 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -69,18 +69,15 @@ class CppOptions { class CppHeaderGenerator extends Generator { /// Instantiates a Cpp Generator. CppHeaderGenerator({ - required CppOptions languageOptions, - required Root root, - required StringSink sink, required this.path, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + }); /// Path to output generated Cpp Header file. String path; /// Generates Cpp header files with specified [CppOptions] @override - void generate() { + void generate(CppOptions languageOptions, Root root, StringSink sink) { generateCppHeader(path, languageOptions, root, sink); } } @@ -88,15 +85,11 @@ class CppHeaderGenerator extends Generator { /// Class that manages all Cpp code generation. class CppSourceGenerator extends Generator { /// Instantiates a Cpp Generator. - CppSourceGenerator({ - required CppOptions languageOptions, - required Root root, - required StringSink sink, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + CppSourceGenerator(); /// Generates Cpp files with specified [CppOptions] @override - void generate() { + void generate(CppOptions languageOptions, Root root, StringSink sink) { generateCppSource(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 0a5f310d233..13cfb1ecff2 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -59,15 +59,11 @@ class DartOptions { /// Class that manages all Dart code generation. class DartGenerator extends Generator { /// Instantiates a Dart Generator. - DartGenerator({ - required DartOptions languageOptions, - required Root root, - required StringSink sink, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + DartGenerator(); /// Generates Dart files with specified [DartOptions] @override - void generate() { + void generate(DartOptions languageOptions, Root root, StringSink sink) { generateDart(languageOptions, root, sink); } } @@ -76,12 +72,9 @@ class DartGenerator extends Generator { class DartTestGenerator extends Generator { /// Instantiates a Dart Generator. DartTestGenerator({ - required DartOptions languageOptions, - required Root root, - required StringSink sink, required this.dartOutPath, required this.testOutPath, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + }); /// Path to output generated Dart file. String dartOutPath; @@ -91,7 +84,7 @@ class DartTestGenerator extends Generator { /// Generates Dart files with specified [DartOptions] @override - void generate() { + void generate(DartOptions languageOptions, Root root, StringSink sink) { generateTestDart( languageOptions, root, diff --git a/packages/pigeon/lib/generator.dart b/packages/pigeon/lib/generator.dart index f45c113a7b6..0979627b3ac 100644 --- a/packages/pigeon/lib/generator.dart +++ b/packages/pigeon/lib/generator.dart @@ -9,21 +9,8 @@ import 'ast.dart'; /// This is meant to provide structure and direction for future generator work. abstract class Generator { /// Instantiates a Generator. - const Generator({ - required this.languageOptions, - required this.root, - required this.sink, - }); - - /// - final T languageOptions; - - /// - final Root root; - - /// - final StringSink sink; + const Generator(); /// Generates files for specified language with specified [languageOptions] - void generate(); + void generate(T languageOptions, Root root, StringSink sink); } diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index 5bc65d32a8a..00293bfc0e8 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -88,15 +88,11 @@ class JavaOptions { /// Class that manages all Java code generation. class JavaGenerator extends Generator { /// Instantiates a Java Generator. - JavaGenerator({ - required JavaOptions languageOptions, - required Root root, - required StringSink sink, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + JavaGenerator(); /// Generates Java files with specified [JavaOptions] @override - void generate() { + void generate(JavaOptions languageOptions, Root root, StringSink sink) { generateJava(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index 584b45a8535..99690a4ac92 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -68,15 +68,11 @@ class KotlinOptions { /// Class that manages all Kotlin code generation. class KotlinGenerator extends Generator { /// Instantiates a Kotlin Generator. - KotlinGenerator({ - required KotlinOptions languageOptions, - required Root root, - required StringSink sink, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + KotlinGenerator(); /// Generates Kotlin files with specified [KotlinOptions] @override - void generate() { + void generate(KotlinOptions languageOptions, Root root, StringSink sink) { generateKotlin(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 417189d7a60..0d376e1a582 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -67,15 +67,11 @@ class ObjcOptions { /// Class that manages all Objc header code generation. class ObjcHeaderGenerator extends Generator { /// Instantiates a Objc Generator. - ObjcHeaderGenerator({ - required ObjcOptions languageOptions, - required Root root, - required StringSink sink, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + ObjcHeaderGenerator(); /// Generates Objc header files with specified [ObjcOptions] @override - void generate() { + void generate(ObjcOptions languageOptions, Root root, StringSink sink) { generateObjcHeader(languageOptions, root, sink); } } @@ -83,15 +79,11 @@ class ObjcHeaderGenerator extends Generator { /// Class that manages all Objc code generation. class ObjcSourceGenerator extends Generator { /// Instantiates a Objc Generator. - ObjcSourceGenerator({ - required ObjcOptions languageOptions, - required Root root, - required StringSink sink, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + ObjcSourceGenerator(); /// Generates Objc files with specified [ObjcOptions] @override - void generate() { + void generate(ObjcOptions languageOptions, Root root, StringSink sink) { generateObjcSource(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 45bb47009c5..65718a4ff46 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -405,9 +405,8 @@ class DartAdapter implements Adapter { void generate(StringSink sink, PigeonOptions options, Root root) { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader); - final DartGenerator generator = DartGenerator( - languageOptions: dartOptionsWithHeader, root: root, sink: sink); - generator.generate(); + final DartGenerator generator = DartGenerator(); + generator.generate(dartOptionsWithHeader, root, sink); } @override @@ -427,12 +426,12 @@ class DartTestAdapter implements Adapter { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader); final DartTestGenerator testGenerator = DartTestGenerator( - languageOptions: dartOptionsWithHeader, - root: root, - sink: sink, - dartOutPath: options.dartOut!, - testOutPath: options.dartTestOut!); - testGenerator.generate(); + dartOutPath: options.dartOut!, testOutPath: options.dartTestOut!); + testGenerator.generate( + dartOptionsWithHeader, + root, + sink, + ); } @override @@ -460,9 +459,8 @@ class ObjcHeaderAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final ObjcHeaderGenerator generator = ObjcHeaderGenerator( - languageOptions: objcOptionsWithHeader, root: root, sink: sink); - generator.generate(); + final ObjcHeaderGenerator generator = ObjcHeaderGenerator(); + generator.generate(objcOptionsWithHeader, root, sink); } @override @@ -486,9 +484,8 @@ class ObjcSourceAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final ObjcSourceGenerator generator = ObjcSourceGenerator( - languageOptions: objcOptionsWithHeader, root: root, sink: sink); - generator.generate(); + final ObjcSourceGenerator generator = ObjcSourceGenerator(); + generator.generate(objcOptionsWithHeader, root, sink); } @override @@ -513,9 +510,8 @@ class JavaAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final JavaGenerator generator = - JavaGenerator(languageOptions: javaOptions, root: root, sink: sink); - generator.generate(); + final JavaGenerator generator = JavaGenerator(); + generator.generate(javaOptions, root, sink); } @override @@ -537,9 +533,8 @@ class SwiftAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final SwiftGenerator generator = - SwiftGenerator(languageOptions: swiftOptions, root: root, sink: sink); - generator.generate(); + final SwiftGenerator generator = SwiftGenerator(); + generator.generate(swiftOptions, root, sink); } @override @@ -562,11 +557,8 @@ class CppHeaderAdapter implements Adapter { ? _lineReader(options.copyrightHeader!) : null)); final CppHeaderGenerator generator = CppHeaderGenerator( - languageOptions: cppOptionsWithHeader, - root: root, - sink: sink, path: path.basenameWithoutExtension(options.cppHeaderOut!)); - generator.generate(); + generator.generate(cppOptionsWithHeader, root, sink); } @override @@ -590,9 +582,8 @@ class CppSourceAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final CppSourceGenerator generator = CppSourceGenerator( - languageOptions: cppOptionsWithHeader, root: root, sink: sink); - generator.generate(); + final CppSourceGenerator generator = CppSourceGenerator(); + generator.generate(cppOptionsWithHeader, root, sink); } @override @@ -616,9 +607,8 @@ class KotlinAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final KotlinGenerator generator = - KotlinGenerator(languageOptions: kotlinOptions, root: root, sink: sink); - generator.generate(); + final KotlinGenerator generator = KotlinGenerator(); + generator.generate(kotlinOptions, root, sink); } @override diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 3853d87b686..b25931c03e3 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -51,15 +51,11 @@ class SwiftOptions { /// Class that manages all Swift code generation. class SwiftGenerator extends Generator { /// Instantiates a Swift Generator. - SwiftGenerator({ - required SwiftOptions languageOptions, - required Root root, - required StringSink sink, - }) : super(languageOptions: languageOptions, root: root, sink: sink); + SwiftGenerator(); /// Generates Swift files with specified [SwiftOptions] @override - void generate() { + void generate(SwiftOptions languageOptions, Root root, StringSink sink) { generateSwift(languageOptions, root, sink); } } From f589da4c3f875040a59713e2e86b6955ab3c06a1 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 21 Dec 2022 23:01:58 -0800 Subject: [PATCH 12/27] move paths to options --- packages/pigeon/lib/cpp_generator.dart | 28 ++++------ packages/pigeon/lib/dart_generator.dart | 73 ++++++++++++++++++++----- packages/pigeon/lib/pigeon_lib.dart | 29 ++++++++-- 3 files changed, 93 insertions(+), 37 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index cb3c23e21bc..6bc120bc2d3 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -21,11 +21,8 @@ const String _defaultCodecSerializer = 'flutter::StandardCodecSerializer'; /// Options that control how C++ code will be generated. class CppOptions { /// Creates a [CppOptions] object - const CppOptions({ - this.header, - this.namespace, - this.copyrightHeader, - }); + const CppOptions( + {this.header, this.namespace, this.copyrightHeader, this.cppHeaderOut}); /// The path to the header that will get placed in the source filed (example: /// "foo.h"). @@ -37,14 +34,17 @@ class CppOptions { /// A copyright header that will get prepended to generated code. final Iterable? copyrightHeader; + /// + final String? cppHeaderOut; + /// Creates a [CppOptions] from a Map representation where: /// `x = CppOptions.fromMap(x.toMap())`. static CppOptions fromMap(Map map) { return CppOptions( - header: map['header'] as String?, - namespace: map['namespace'] as String?, - copyrightHeader: map['copyrightHeader'] as Iterable?, - ); + header: map['header'] as String?, + namespace: map['namespace'] as String?, + copyrightHeader: map['copyrightHeader'] as Iterable?, + cppHeaderOut: map['cppHeaderOut'] as String?); } /// Converts a [CppOptions] to a Map representation where: @@ -68,17 +68,13 @@ class CppOptions { /// Class that manages all Cpp header code generation. class CppHeaderGenerator extends Generator { /// Instantiates a Cpp Generator. - CppHeaderGenerator({ - required this.path, - }); - - /// Path to output generated Cpp Header file. - String path; + CppHeaderGenerator(); /// Generates Cpp header files with specified [CppOptions] @override void generate(CppOptions languageOptions, Root root, StringSink sink) { - generateCppHeader(path, languageOptions, root, sink); + generateCppHeader( + languageOptions.cppHeaderOut, languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 13cfb1ecff2..64ef93b2f21 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -56,6 +56,57 @@ class DartOptions { } } +/// Options that control how Dart test code will be generated. +class DartTestOptions { + /// Constructor for DartOptions. + DartTestOptions({ + this.copyrightHeader, + required this.dartOutPath, + required this.testOutPath, + }); + + /// A copyright header that will get prepended to generated code. + final Iterable? copyrightHeader; + + /// Path to output generated Dart file. + String dartOutPath; + + /// Path to output generated Test file. + String testOutPath; + + /// Creates a [DartOptions] from a Map representation where: + /// `x = DartOptions.fromMap(x.toMap())`. + static DartTestOptions fromMap(Map map) { + final Iterable? copyrightHeader = + map['copyrightHeader'] as Iterable?; + return DartTestOptions( + dartOutPath: map['dartOutPath']! as String, + testOutPath: map['testOutPath']! as String, + copyrightHeader: copyrightHeader?.cast(), + ); + } + + /// Converts a [DartOptions] to a Map representation where: + /// `x = DartOptions.fromMap(x.toMap())`. + Map toMap() { + final Map result = { + if (copyrightHeader != null) 'copyrightHeader': copyrightHeader!, + }; + return result; + } + + /// Overrides any non-null parameters from [options] into this to make a new + /// [DartOptions]. + DartTestOptions merge(DartTestOptions options) { + return DartTestOptions.fromMap(mergeMaps(toMap(), options.toMap())); + } + + /// Converts DartTestOptions to DartOptions and returns it. + DartOptions toDartOptions() { + return DartOptions(copyrightHeader: copyrightHeader); + } +} + /// Class that manages all Dart code generation. class DartGenerator extends Generator { /// Instantiates a Dart Generator. @@ -69,28 +120,20 @@ class DartGenerator extends Generator { } /// Class that manages all Dart code generation. -class DartTestGenerator extends Generator { +class DartTestGenerator extends Generator { /// Instantiates a Dart Generator. - DartTestGenerator({ - required this.dartOutPath, - required this.testOutPath, - }); - - /// Path to output generated Dart file. - String dartOutPath; - - /// Path to output generated Test file. - String testOutPath; + DartTestGenerator(); /// Generates Dart files with specified [DartOptions] @override - void generate(DartOptions languageOptions, Root root, StringSink sink) { + void generate(DartTestOptions languageOptions, Root root, StringSink sink) { + final DartOptions dartOptions = languageOptions.toDartOptions(); generateTestDart( - languageOptions, + dartOptions, root, sink, - dartOutPath: dartOutPath, - testOutPath: testOutPath, + dartOutPath: languageOptions.dartOutPath, + testOutPath: languageOptions.testOutPath, ); } } diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 65718a4ff46..94cfd55f2ff 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -379,6 +379,19 @@ DartOptions _dartOptionsWithCopyrightHeader( copyrightHeader != null ? _lineReader(copyrightHeader) : null)); } +DartTestOptions _dartTestOptionsWithCopyrightHeader(DartOptions? dartOptions, + String? copyrightHeader, String dartOutPath, String testOutPath) { + final Iterable? parsedCopyrightHeader = dartOptions != null + ? dartOptions.copyrightHeader + : copyrightHeader != null + ? _lineReader(copyrightHeader) + : null; + return DartTestOptions( + dartOutPath: dartOutPath, + testOutPath: testOutPath, + copyrightHeader: parsedCopyrightHeader); +} + /// An [Adapter] that generates the AST. class AstAdapter implements Adapter { /// Constructor for [AstAdapter]. @@ -423,10 +436,14 @@ class DartTestAdapter implements Adapter { @override void generate(StringSink sink, PigeonOptions options, Root root) { - final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( - options.dartOptions, options.copyrightHeader); - final DartTestGenerator testGenerator = DartTestGenerator( - dartOutPath: options.dartOut!, testOutPath: options.dartTestOut!); + final DartTestOptions dartOptionsWithHeader = + _dartTestOptionsWithCopyrightHeader( + options.dartOptions, + options.copyrightHeader, + options.dartOut!, + options.dartTestOut!, + ); + final DartTestGenerator testGenerator = DartTestGenerator(); testGenerator.generate( dartOptionsWithHeader, root, @@ -553,11 +570,11 @@ class CppHeaderAdapter implements Adapter { void generate(StringSink sink, PigeonOptions options, Root root) { final CppOptions cppOptions = options.cppOptions ?? const CppOptions(); final CppOptions cppOptionsWithHeader = cppOptions.merge(CppOptions( + cppHeaderOut: path.basenameWithoutExtension(options.cppHeaderOut!), copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final CppHeaderGenerator generator = CppHeaderGenerator( - path: path.basenameWithoutExtension(options.cppHeaderOut!)); + final CppHeaderGenerator generator = CppHeaderGenerator(); generator.generate(cppOptionsWithHeader, root, sink); } From 637679dc0c02c7078deee8d5ce9ff2a58713efcd Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 22 Dec 2022 08:24:58 -0800 Subject: [PATCH 13/27] remove dartTestOptions --- packages/pigeon/lib/dart_generator.dart | 80 +++++-------------- packages/pigeon/lib/pigeon_lib.dart | 20 ++--- packages/pigeon/test/dart_generator_test.dart | 80 +++++++++---------- packages/pigeon/tool/shared/generation.dart | 2 +- 4 files changed, 69 insertions(+), 113 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 64ef93b2f21..604becc9c30 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -25,64 +25,30 @@ const String _standardMessageCodec = 'StandardMessageCodec'; /// Options that control how Dart code will be generated. class DartOptions { /// Constructor for DartOptions. - const DartOptions({this.copyrightHeader}); - - /// A copyright header that will get prepended to generated code. - final Iterable? copyrightHeader; - - /// Creates a [DartOptions] from a Map representation where: - /// `x = DartOptions.fromMap(x.toMap())`. - static DartOptions fromMap(Map map) { - final Iterable? copyrightHeader = - map['copyrightHeader'] as Iterable?; - return DartOptions( - copyrightHeader: copyrightHeader?.cast(), - ); - } - - /// Converts a [DartOptions] to a Map representation where: - /// `x = DartOptions.fromMap(x.toMap())`. - Map toMap() { - final Map result = { - if (copyrightHeader != null) 'copyrightHeader': copyrightHeader!, - }; - return result; - } - - /// Overrides any non-null parameters from [options] into this to make a new - /// [DartOptions]. - DartOptions merge(DartOptions options) { - return DartOptions.fromMap(mergeMaps(toMap(), options.toMap())); - } -} - -/// Options that control how Dart test code will be generated. -class DartTestOptions { - /// Constructor for DartOptions. - DartTestOptions({ + DartOptions({ this.copyrightHeader, - required this.dartOutPath, - required this.testOutPath, + this.dartOutPath, + this.testOutPath, }); /// A copyright header that will get prepended to generated code. final Iterable? copyrightHeader; - /// Path to output generated Dart file. - String dartOutPath; + /// Path to output generated Dart file for tests. + String? dartOutPath; - /// Path to output generated Test file. - String testOutPath; + /// Path to output generated Test file for tests. + String? testOutPath; /// Creates a [DartOptions] from a Map representation where: /// `x = DartOptions.fromMap(x.toMap())`. - static DartTestOptions fromMap(Map map) { + static DartOptions fromMap(Map map) { final Iterable? copyrightHeader = map['copyrightHeader'] as Iterable?; - return DartTestOptions( - dartOutPath: map['dartOutPath']! as String, - testOutPath: map['testOutPath']! as String, + return DartOptions( copyrightHeader: copyrightHeader?.cast(), + dartOutPath: map['dartOutPath'] as String?, + testOutPath: map['testOutPath'] as String?, ); } @@ -91,19 +57,16 @@ class DartTestOptions { Map toMap() { final Map result = { if (copyrightHeader != null) 'copyrightHeader': copyrightHeader!, + if (dartOutPath != null) 'dartOutPath': dartOutPath!, + if (testOutPath != null) 'testOutPath': testOutPath!, }; return result; } /// Overrides any non-null parameters from [options] into this to make a new /// [DartOptions]. - DartTestOptions merge(DartTestOptions options) { - return DartTestOptions.fromMap(mergeMaps(toMap(), options.toMap())); - } - - /// Converts DartTestOptions to DartOptions and returns it. - DartOptions toDartOptions() { - return DartOptions(copyrightHeader: copyrightHeader); + DartOptions merge(DartOptions options) { + return DartOptions.fromMap(mergeMaps(toMap(), options.toMap())); } } @@ -120,20 +83,21 @@ class DartGenerator extends Generator { } /// Class that manages all Dart code generation. -class DartTestGenerator extends Generator { +class DartTestGenerator extends Generator { /// Instantiates a Dart Generator. DartTestGenerator(); /// Generates Dart files with specified [DartOptions] @override - void generate(DartTestOptions languageOptions, Root root, StringSink sink) { - final DartOptions dartOptions = languageOptions.toDartOptions(); + void generate(DartOptions languageOptions, Root root, StringSink sink) { + final String dartOutPath = languageOptions.dartOutPath ?? ''; + final String testOutPath = languageOptions.testOutPath ?? ''; generateTestDart( - dartOptions, + languageOptions, root, sink, - dartOutPath: languageOptions.dartOutPath, - testOutPath: languageOptions.testOutPath, + dartOutPath: dartOutPath, + testOutPath: testOutPath, ); } } diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 94cfd55f2ff..e630a09c438 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -372,21 +372,14 @@ abstract class Adapter { } DartOptions _dartOptionsWithCopyrightHeader( - DartOptions? dartOptions, String? copyrightHeader) { - dartOptions = dartOptions ?? const DartOptions(); - return dartOptions.merge(DartOptions( - copyrightHeader: - copyrightHeader != null ? _lineReader(copyrightHeader) : null)); -} - -DartTestOptions _dartTestOptionsWithCopyrightHeader(DartOptions? dartOptions, - String? copyrightHeader, String dartOutPath, String testOutPath) { + DartOptions? dartOptions, String? copyrightHeader, + [String? dartOutPath, String? testOutPath]) { final Iterable? parsedCopyrightHeader = dartOptions != null ? dartOptions.copyrightHeader : copyrightHeader != null ? _lineReader(copyrightHeader) : null; - return DartTestOptions( + return DartOptions( dartOutPath: dartOutPath, testOutPath: testOutPath, copyrightHeader: parsedCopyrightHeader); @@ -436,12 +429,11 @@ class DartTestAdapter implements Adapter { @override void generate(StringSink sink, PigeonOptions options, Root root) { - final DartTestOptions dartOptionsWithHeader = - _dartTestOptionsWithCopyrightHeader( + final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader, - options.dartOut!, - options.dartTestOut!, + options.dartOut, + options.dartTestOut, ); final DartTestGenerator testGenerator = DartTestGenerator(); testGenerator.generate( diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart index bf359ddfe43..38442ccd358 100644 --- a/packages/pigeon/test/dart_generator_test.dart +++ b/packages/pigeon/test/dart_generator_test.dart @@ -29,7 +29,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('class Foobar')); expect(code, contains(' dataType1? field1;')); @@ -49,7 +49,7 @@ void main() { enums: [anEnum], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('enum Foobar')); expect(code, contains(' one,')); @@ -92,7 +92,7 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('class Api')); expect(code, contains('Future doSomething(Input arg_input)')); @@ -118,7 +118,7 @@ void main() { ]) ], classes: [], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('class Api')); expect(code, contains('Future add(int arg_x, int arg_y)')); @@ -145,7 +145,7 @@ void main() { ]) ], classes: [], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('class Api')); expect(code, contains('int add(int x, int y)')); @@ -182,7 +182,7 @@ void main() { ) ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect( code, @@ -224,7 +224,7 @@ void main() { ) ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect( code, @@ -276,7 +276,7 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('abstract class Api')); expect(code, contains('static void setup(Api')); @@ -310,7 +310,7 @@ void main() { ]), ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future doSomething')); expect(code, contains('return;')); @@ -343,7 +343,7 @@ void main() { ]), ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); // The next line verifies that we're not setting a variable to the value of "doSomething", but // ignores the line where we assert the value of the argument isn't null, since on that line @@ -373,7 +373,7 @@ void main() { ]), ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, matches('output.*=.*doSomething[(][)]')); expect(code, contains('Output doSomething();')); @@ -415,7 +415,7 @@ void main() { ) ]); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('enum1?.index,')); expect(code, contains('? Enum.values[result[0]! as int]')); @@ -442,7 +442,7 @@ void main() { ]) ]); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('enum Foo {')); expect(code, contains('Future bar(Foo? arg_foo) async')); @@ -485,7 +485,7 @@ void main() { ) ]); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('enum1.index,')); expect(code, contains('enum1: Enum.values[result[0]! as int]')); @@ -512,7 +512,7 @@ void main() { ]), ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, matches('channel.send[(]null[)]')); }); @@ -570,7 +570,7 @@ void main() { ], enums: []); final StringBuffer mainCodeSink = StringBuffer(); final StringBuffer testCodeSink = StringBuffer(); - generateDart(const DartOptions(), root, mainCodeSink); + generateDart(DartOptions(), root, mainCodeSink); final String mainCode = mainCodeSink.toString(); expect(mainCode, isNot(contains(r"import 'fo\'o.dart';"))); expect(mainCode, contains('class Api {')); @@ -579,7 +579,7 @@ void main() { expect(mainCode, isNot(contains("'${Keys.result}': output"))); expect(mainCode, isNot(contains('return [];'))); generateTestDart( - const DartOptions(), + DartOptions(), root, testCodeSink, dartOutPath: "fo'o.dart", @@ -631,7 +631,7 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('abstract class Api')); expect(code, contains('Future doSomething(Input arg0);')); @@ -675,7 +675,7 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, isNot(matches('=.s*doSomething'))); expect(code, contains('await api.doSomething(')); @@ -719,7 +719,7 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('class Api')); expect(code, matches('Output.*doSomething.*Input')); @@ -747,7 +747,7 @@ void main() { ]), ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, matches('channel.send[(]null[)]')); }); @@ -788,7 +788,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('class Foobar')); expect(code, contains(' List? field1;')); @@ -815,7 +815,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('class Foobar')); expect(code, contains(' Map? field1;')); @@ -844,7 +844,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('doit(List arg')); }); @@ -872,7 +872,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('doit(List arg')); }); @@ -896,7 +896,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future> doit(')); expect(code, @@ -931,7 +931,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('List doit(')); expect( @@ -958,7 +958,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future doit()')); expect(code, contains('return (replyList[0] as int?);')); @@ -983,7 +983,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future?> doit()')); expect(code, @@ -1008,7 +1008,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future doit()')); expect(code, contains('return (replyList[0] as int?);')); @@ -1031,7 +1031,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('int? doit();')); expect(code, contains('final int? output = api.doit();')); @@ -1055,7 +1055,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future doit();')); expect(code, contains('final int? output = await api.doit();')); @@ -1078,7 +1078,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect( code, @@ -1107,7 +1107,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('Future doit(int? arg_foo) async {')); }); @@ -1133,7 +1133,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('void doit(int? foo);')); }); @@ -1151,7 +1151,7 @@ name: foobar Root(classes: [], apis: [], enums: []); final StringBuffer sink = StringBuffer(); generateTestDart( - const DartOptions(), + DartOptions(), root, sink, dartOutPath: path.join(foo.path, 'bar.dart'), @@ -1238,7 +1238,7 @@ name: foobar ], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); for (final String comment in comments) { expect(code, contains('///$comment')); @@ -1273,7 +1273,7 @@ name: foobar enums: [], ); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, isNot(contains('extends StandardMessageCodec'))); expect(code, contains('StandardMessageCodec')); @@ -1316,7 +1316,7 @@ name: foobar ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateDart(const DartOptions(), root, sink); + generateDart(DartOptions(), root, sink); final String code = sink.toString(); expect(code, contains('extends StandardMessageCodec')); }); @@ -1355,7 +1355,7 @@ name: foobar ); final StringBuffer sink = StringBuffer(); generateTestDart( - const DartOptions(), + DartOptions(), root, sink, dartOutPath: 'code.dart', diff --git a/packages/pigeon/tool/shared/generation.dart b/packages/pigeon/tool/shared/generation.dart index 01efa09c8f5..3e6ced166f8 100644 --- a/packages/pigeon/tool/shared/generation.dart +++ b/packages/pigeon/tool/shared/generation.dart @@ -168,7 +168,7 @@ Future runPigeon({ copyrightHeader: './copyright_header.txt', dartOut: dartOut, dartTestOut: dartTestOut, - dartOptions: const DartOptions(), + dartOptions: DartOptions(), cppHeaderOut: cppHeaderOut, cppSourceOut: cppSourceOut, cppOptions: CppOptions(namespace: cppNamespace), From 68a23e20dcb2392a57cf706fba61c688c6bce9e9 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 09:12:28 -0800 Subject: [PATCH 14/27] Nits and combines source and header generators --- packages/pigeon/lib/cpp_generator.dart | 35 ++++++++++++------------ packages/pigeon/lib/generator.dart | 7 ++--- packages/pigeon/lib/generator_tools.dart | 9 ++++++ packages/pigeon/lib/objc_generator.dart | 23 ++++++---------- packages/pigeon/lib/pigeon_lib.dart | 8 +++--- 5 files changed, 41 insertions(+), 41 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 6bc120bc2d3..5912f6e98ed 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -21,8 +21,12 @@ const String _defaultCodecSerializer = 'flutter::StandardCodecSerializer'; /// Options that control how C++ code will be generated. class CppOptions { /// Creates a [CppOptions] object - const CppOptions( - {this.header, this.namespace, this.copyrightHeader, this.cppHeaderOut}); + const CppOptions({ + this.header, + this.namespace, + this.copyrightHeader, + this.cppHeaderOut, + }); /// The path to the header that will get placed in the source filed (example: /// "foo.h"). @@ -34,7 +38,7 @@ class CppOptions { /// A copyright header that will get prepended to generated code. final Iterable? copyrightHeader; - /// + /// The path to the output header file location. final String? cppHeaderOut; /// Creates a [CppOptions] from a Map representation where: @@ -66,27 +70,22 @@ class CppOptions { } /// Class that manages all Cpp header code generation. -class CppHeaderGenerator extends Generator { +class CppGenerator extends Generator { /// Instantiates a Cpp Generator. - CppHeaderGenerator(); + CppGenerator(this.fileType); - /// Generates Cpp header files with specified [CppOptions] - @override - void generate(CppOptions languageOptions, Root root, StringSink sink) { - generateCppHeader( - languageOptions.cppHeaderOut, languageOptions, root, sink); - } -} - -/// Class that manages all Cpp code generation. -class CppSourceGenerator extends Generator { - /// Instantiates a Cpp Generator. - CppSourceGenerator(); + /// Specifies which file type (header or source) will be generated. + FileType fileType; /// Generates Cpp files with specified [CppOptions] @override void generate(CppOptions languageOptions, Root root, StringSink sink) { - generateCppSource(languageOptions, root, sink); + if (fileType == FileType.header) { + generateCppHeader( + languageOptions.cppHeaderOut, languageOptions, root, sink); + } else { + generateCppSource(languageOptions, root, sink); + } } } diff --git a/packages/pigeon/lib/generator.dart b/packages/pigeon/lib/generator.dart index 0979627b3ac..02667e4a5c9 100644 --- a/packages/pigeon/lib/generator.dart +++ b/packages/pigeon/lib/generator.dart @@ -4,13 +4,10 @@ import 'ast.dart'; -/// A Super class of generator classes. +/// A superclass of generator classes. /// -/// This is meant to provide structure and direction for future generator work. +/// This provides the structure that is common across generators for different languages. abstract class Generator { - /// Instantiates a Generator. - const Generator(); - /// Generates files for specified language with specified [languageOptions] void generate(T languageOptions, Root root, StringSink sink); } diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index ea522eaa04d..65f9c4b7a42 100644 --- a/packages/pigeon/lib/generator_tools.dart +++ b/packages/pigeon/lib/generator_tools.dart @@ -497,3 +497,12 @@ Iterable getFieldsInSerializationOrder(Class klass) { // This returns the fields in the order they are declared in the pigeon file. return klass.fields; } + +/// Enum to specify which file will be generated for multi-file generators +enum FileType { + /// header file. + header, + + /// source file. + source, +} diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 0d376e1a582..2ef59abdf4a 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -65,26 +65,21 @@ class ObjcOptions { } /// Class that manages all Objc header code generation. -class ObjcHeaderGenerator extends Generator { +class ObjcGenerator extends Generator { /// Instantiates a Objc Generator. - ObjcHeaderGenerator(); + ObjcGenerator(this.fileType); - /// Generates Objc header files with specified [ObjcOptions] - @override - void generate(ObjcOptions languageOptions, Root root, StringSink sink) { - generateObjcHeader(languageOptions, root, sink); - } -} - -/// Class that manages all Objc code generation. -class ObjcSourceGenerator extends Generator { - /// Instantiates a Objc Generator. - ObjcSourceGenerator(); + /// Specifies which file type (header or source) will be generated. + FileType fileType; /// Generates Objc files with specified [ObjcOptions] @override void generate(ObjcOptions languageOptions, Root root, StringSink sink) { - generateObjcSource(languageOptions, root, sink); + if (fileType == FileType.header) { + generateObjcHeader(languageOptions, root, sink); + } else { + generateObjcSource(languageOptions, root, sink); + } } } diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index e630a09c438..c5fa3264bc6 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -468,7 +468,7 @@ class ObjcHeaderAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final ObjcHeaderGenerator generator = ObjcHeaderGenerator(); + final ObjcGenerator generator = ObjcGenerator(FileType.header); generator.generate(objcOptionsWithHeader, root, sink); } @@ -493,7 +493,7 @@ class ObjcSourceAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final ObjcSourceGenerator generator = ObjcSourceGenerator(); + final ObjcGenerator generator = ObjcGenerator(FileType.source); generator.generate(objcOptionsWithHeader, root, sink); } @@ -566,7 +566,7 @@ class CppHeaderAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final CppHeaderGenerator generator = CppHeaderGenerator(); + final CppGenerator generator = CppGenerator(FileType.header); generator.generate(cppOptionsWithHeader, root, sink); } @@ -591,7 +591,7 @@ class CppSourceAdapter implements Adapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final CppSourceGenerator generator = CppSourceGenerator(); + final CppGenerator generator = CppGenerator(FileType.source); generator.generate(cppOptionsWithHeader, root, sink); } From 67282cf045f5ee0b565de848373e0280dad0ea13 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 09:14:27 -0800 Subject: [PATCH 15/27] renames Adapter to GeneratorAdapter --- packages/pigeon/lib/pigeon_lib.dart | 122 +++++++++++----------- packages/pigeon/test/pigeon_lib_test.dart | 56 +++++----- 2 files changed, 93 insertions(+), 85 deletions(-) diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index c5fa3264bc6..7ad64df5e0c 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -357,17 +357,17 @@ IOSink? _openSink(String? output) { /// An adapter that will call a generator to write code to a sink /// based on the contents of [PigeonOptions]. -abstract class Adapter { - /// Returns an [IOSink] instance to be written to if the [Adapter] should - /// generate. If it returns `null`, the [Adapter] will be skipped. +abstract class GeneratorAdapter { + /// Returns an [IOSink] instance to be written to if the [GeneratorAdapter] should + /// generate. If it returns `null`, the [GeneratorAdapter] will be skipped. IOSink? shouldGenerate(PigeonOptions options); /// Write the generated code described in [root] to [sink] using the /// [options]. void generate(StringSink sink, PigeonOptions options, Root root); - /// Generates errors that would only be appropriate for this [Adapter]. For - /// example, maybe a certain feature isn't implemented in a [Adapter] yet. + /// Generates errors that would only be appropriate for this [GeneratorAdapter]. For + /// example, maybe a certain feature isn't implemented in a [GeneratorAdapter] yet. List validate(PigeonOptions options, Root root); } @@ -385,10 +385,10 @@ DartOptions _dartOptionsWithCopyrightHeader( copyrightHeader: parsedCopyrightHeader); } -/// An [Adapter] that generates the AST. -class AstAdapter implements Adapter { - /// Constructor for [AstAdapter]. - const AstAdapter(); +/// An [GeneratorAdapter] that generates the AST. +class AstGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [AstGeneratorAdapter]. + const AstGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -402,10 +402,10 @@ class AstAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// An [Adapter] that generates Dart source code. -class DartAdapter implements Adapter { - /// Constructor for [DartAdapter]. - const DartAdapter(); +/// An [GeneratorAdapter] that generates Dart source code. +class DartGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [DartGeneratorAdapter]. + const DartGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -422,10 +422,10 @@ class DartAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// An [Adapter] that generates Dart test source code. -class DartTestAdapter implements Adapter { - /// Constructor for [DartTestAdapter]. - const DartTestAdapter(); +/// An [GeneratorAdapter] that generates Dart test source code. +class DartTestGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [DartTestGeneratorAdapter]. + const DartTestGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -456,10 +456,10 @@ class DartTestAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// An [Adapter] that generates Objective-C header code. -class ObjcHeaderAdapter implements Adapter { - /// Constructor for [ObjcHeaderAdapter]. - const ObjcHeaderAdapter(); +/// An [GeneratorAdapter] that generates Objective-C header code. +class ObjcHeaderGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [ObjcHeaderGeneratorAdapter]. + const ObjcHeaderGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -481,10 +481,10 @@ class ObjcHeaderAdapter implements Adapter { validateObjc(options.objcOptions!, root); } -/// An [Adapter] that generates Objective-C source code. -class ObjcSourceAdapter implements Adapter { - /// Constructor for [ObjcSourceAdapter]. - const ObjcSourceAdapter(); +/// An [GeneratorAdapter] that generates Objective-C source code. +class ObjcSourceGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [ObjcSourceGeneratorAdapter]. + const ObjcSourceGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -505,10 +505,10 @@ class ObjcSourceAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// An [Adapter] that generates Java source code. -class JavaAdapter implements Adapter { - /// Constructor for [JavaAdapter]. - const JavaAdapter(); +/// An [GeneratorAdapter] that generates Java source code. +class JavaGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [JavaGeneratorAdapter]. + const JavaGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -530,10 +530,10 @@ class JavaAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// An [Adapter] that generates Swift source code. -class SwiftAdapter implements Adapter { - /// Constructor for [SwiftAdapter]. - const SwiftAdapter(); +/// An [GeneratorAdapter] that generates Swift source code. +class SwiftGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [SwiftGeneratorAdapter]. + const SwiftGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -553,10 +553,10 @@ class SwiftAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// An [Adapter] that generates C++ header code. -class CppHeaderAdapter implements Adapter { - /// Constructor for [CppHeaderAdapter]. - const CppHeaderAdapter(); +/// An [GeneratorAdapter] that generates C++ header code. +class CppHeaderGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [CppHeaderGeneratorAdapter]. + const CppHeaderGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -579,10 +579,10 @@ class CppHeaderAdapter implements Adapter { validateCpp(options.cppOptions!, root); } -/// An [Adapter] that generates C++ source code. -class CppSourceAdapter implements Adapter { - /// Constructor for [CppSourceAdapter]. - const CppSourceAdapter(); +/// An [GeneratorAdapter] that generates C++ source code. +class CppSourceGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [CppSourceGeneratorAdapter]. + const CppSourceGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -603,10 +603,10 @@ class CppSourceAdapter implements Adapter { List validate(PigeonOptions options, Root root) => []; } -/// An [Adapter] that generates Kotlin source code. -class KotlinAdapter implements Adapter { - /// Constructor for [KotlinAdapter]. - const KotlinAdapter(); +/// An [GeneratorAdapter] that generates Kotlin source code. +class KotlinGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [KotlinGeneratorAdapter]. + const KotlinGeneratorAdapter(); @override void generate(StringSink sink, PigeonOptions options, Root root) { @@ -1353,7 +1353,7 @@ ${_argParser.usage}'''; /// customize the generators that pigeon will use. The optional parameter /// [sdkPath] allows you to specify the Dart SDK path. static Future run(List args, - {List? adapters, String? sdkPath}) { + {List? adapters, String? sdkPath}) { final PigeonOptions options = Pigeon.parseArgs(args); return runWithOptions(options, adapters: adapters, sdkPath: sdkPath); } @@ -1363,23 +1363,23 @@ ${_argParser.usage}'''; /// customize the generators that pigeon will use. The optional parameter /// [sdkPath] allows you to specify the Dart SDK path. static Future runWithOptions(PigeonOptions options, - {List? adapters, String? sdkPath}) async { + {List? adapters, String? sdkPath}) async { final Pigeon pigeon = Pigeon.setup(); if (options.debugGenerators ?? false) { generator_tools.debugGenerators = true; } - final List safeAdapters = adapters ?? - [ - const DartAdapter(), - const JavaAdapter(), - const SwiftAdapter(), - const KotlinAdapter(), - const CppHeaderAdapter(), - const CppSourceAdapter(), - const DartTestAdapter(), - const ObjcHeaderAdapter(), - const ObjcSourceAdapter(), - const AstAdapter(), + final List safeGeneratorAdapters = adapters ?? + [ + const DartGeneratorAdapter(), + const JavaGeneratorAdapter(), + const SwiftGeneratorAdapter(), + const KotlinGeneratorAdapter(), + const CppHeaderGeneratorAdapter(), + const CppSourceGeneratorAdapter(), + const DartTestGeneratorAdapter(), + const ObjcHeaderGeneratorAdapter(), + const ObjcSourceGeneratorAdapter(), + const AstGeneratorAdapter(), ]; _executeConfigurePigeon(options); @@ -1401,7 +1401,7 @@ ${_argParser.usage}'''; } } - for (final Adapter adapter in safeAdapters) { + for (final GeneratorAdapter adapter in safeGeneratorAdapters) { final IOSink? sink = adapter.shouldGenerate(options); if (sink != null) { final List adapterErrors = @@ -1443,7 +1443,7 @@ ${_argParser.usage}'''; CppOptions(header: path.basename(options.cppHeaderOut!))))); } - for (final Adapter adapter in safeAdapters) { + for (final GeneratorAdapter adapter in safeGeneratorAdapters) { final IOSink? sink = adapter.shouldGenerate(options); if (sink != null) { adapter.generate(sink, options, parseResults.root); diff --git a/packages/pigeon/test/pigeon_lib_test.dart b/packages/pigeon/test/pigeon_lib_test.dart index 411643f679f..8d06f78cecc 100644 --- a/packages/pigeon/test/pigeon_lib_test.dart +++ b/packages/pigeon/test/pigeon_lib_test.dart @@ -9,8 +9,8 @@ import 'package:pigeon/ast.dart'; import 'package:pigeon/pigeon_lib.dart'; import 'package:test/test.dart'; -class _ValidatorAdapter implements Adapter { - _ValidatorAdapter(this.sink); +class _ValidatorGeneratorAdapter implements GeneratorAdapter { + _ValidatorGeneratorAdapter(this.sink); bool didCallValidate = false; final IOSink? sink; @@ -397,9 +397,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const DartAdapter dartAdapter = DartAdapter(); + const DartGeneratorAdapter dartGeneratorAdapter = DartGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - dartAdapter.generate(buffer, options, root); + dartGeneratorAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -407,9 +407,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( javaOut: 'Foo.java', copyrightHeader: './copyright_header.txt'); - const JavaAdapter javaAdapter = JavaAdapter(); + const JavaGeneratorAdapter javaGeneratorAdapter = JavaGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - javaAdapter.generate(buffer, options, root); + javaGeneratorAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -417,9 +417,10 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const ObjcHeaderAdapter objcHeaderAdapter = ObjcHeaderAdapter(); + const ObjcHeaderGeneratorAdapter objcHeaderGeneratorAdapter = + ObjcHeaderGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - objcHeaderAdapter.generate(buffer, options, root); + objcHeaderGeneratorAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -427,9 +428,10 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const ObjcSourceAdapter objcSourceAdapter = ObjcSourceAdapter(); + const ObjcSourceGeneratorAdapter objcSourceGeneratorAdapter = + ObjcSourceGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - objcSourceAdapter.generate(buffer, options, root); + objcSourceGeneratorAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -437,9 +439,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( swiftOut: 'Foo.swift', copyrightHeader: './copyright_header.txt'); - const SwiftAdapter swiftAdapter = SwiftAdapter(); + const SwiftGeneratorAdapter swiftGeneratorAdapter = SwiftGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - swiftAdapter.generate(buffer, options, root); + swiftGeneratorAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -447,9 +449,10 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( cppHeaderOut: 'Foo.h', copyrightHeader: './copyright_header.txt'); - const CppHeaderAdapter cppHeaderAdapter = CppHeaderAdapter(); + const CppHeaderGeneratorAdapter cppHeaderGeneratorAdapter = + CppHeaderGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - cppHeaderAdapter.generate(buffer, options, root); + cppHeaderGeneratorAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -457,9 +460,10 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const CppSourceAdapter cppSourceAdapter = CppSourceAdapter(); + const CppSourceGeneratorAdapter cppSourceGeneratorAdapter = + CppSourceGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - cppSourceAdapter.generate(buffer, options, root); + cppSourceGeneratorAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -929,9 +933,10 @@ abstract class Api { dartTestOut: 'stdout', dartOut: 'stdout', ); - const DartTestAdapter dartAdapter = DartTestAdapter(); + const DartTestGeneratorAdapter dartGeneratorAdapter = + DartTestGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - dartAdapter.generate(buffer, options, root); + dartGeneratorAdapter.generate(buffer, options, root); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -1187,9 +1192,10 @@ abstract class Api { test('generator validation', () async { final Completer completer = Completer(); withTempFile('foo.dart', (File input) async { - final _ValidatorAdapter generator = _ValidatorAdapter(stdout); + final _ValidatorGeneratorAdapter generator = + _ValidatorGeneratorAdapter(stdout); final int result = await Pigeon.run(['--input', input.path], - adapters: [generator]); + adapters: [generator]); expect(generator.didCallValidate, isTrue); expect(result, isNot(0)); completer.complete(); @@ -1200,10 +1206,11 @@ abstract class Api { test('generator validation skipped', () async { final Completer completer = Completer(); withTempFile('foo.dart', (File input) async { - final _ValidatorAdapter generator = _ValidatorAdapter(null); + final _ValidatorGeneratorAdapter generator = + _ValidatorGeneratorAdapter(null); final int result = await Pigeon.run( ['--input', input.path, '--dart_out', 'foo.dart'], - adapters: [generator]); + adapters: [generator]); expect(generator.didCallValidate, isFalse); expect(result, equals(0)); completer.complete(); @@ -1214,10 +1221,11 @@ abstract class Api { test('run with PigeonOptions', () async { final Completer completer = Completer(); withTempFile('foo.dart', (File input) async { - final _ValidatorAdapter generator = _ValidatorAdapter(null); + final _ValidatorGeneratorAdapter generator = + _ValidatorGeneratorAdapter(null); final int result = await Pigeon.runWithOptions( PigeonOptions(input: input.path, dartOut: 'foo.dart'), - adapters: [generator]); + adapters: [generator]); expect(generator.didCallValidate, isFalse); expect(result, equals(0)); completer.complete(); From d08606caca00e0bc2b48f08a8d820493e6e8b2dc Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 09:17:15 -0800 Subject: [PATCH 16/27] Update version number for breaking changes --- packages/pigeon/CHANGELOG.md | 2 +- packages/pigeon/lib/generator_tools.dart | 2 +- packages/pigeon/pubspec.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 6e6688e0d85..30a5cbfe6df 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,4 +1,4 @@ -## 4.2.16 +## 5.0.0 * Creates new Generator classes for each language. diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index 65f9c4b7a42..89188846af9 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.16'; +const String pigeonVersion = '5.0.0'; /// Read all the content from [stdin] to a String. String readStdin() { diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index 886f56a6ea0..e4ada89edd1 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.16 # This must match the version in lib/generator_tools.dart +version: 5.0.0 # This must match the version in lib/generator_tools.dart environment: sdk: ">=2.12.0 <3.0.0" From 90fcb67c67e15222e8fca60d8c7598674c04a6dd Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 09:24:36 -0800 Subject: [PATCH 17/27] nits --- packages/pigeon/lib/cpp_generator.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 5912f6e98ed..632de008f0e 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -45,10 +45,11 @@ class CppOptions { /// `x = CppOptions.fromMap(x.toMap())`. static CppOptions fromMap(Map map) { return CppOptions( - header: map['header'] as String?, - namespace: map['namespace'] as String?, - copyrightHeader: map['copyrightHeader'] as Iterable?, - cppHeaderOut: map['cppHeaderOut'] as String?); + header: map['header'] as String?, + namespace: map['namespace'] as String?, + copyrightHeader: map['copyrightHeader'] as Iterable?, + cppHeaderOut: map['cppHeaderOut'] as String?, + ); } /// Converts a [CppOptions] to a Map representation where: From ea0ec6c702e1b2b8b1685d4568bd47970dc68ddf Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 09:29:55 -0800 Subject: [PATCH 18/27] more personal nits --- packages/pigeon/lib/cpp_generator.dart | 2 +- packages/pigeon/lib/objc_generator.dart | 2 +- packages/pigeon/lib/pigeon_lib.dart | 27 +++++++++++++------------ 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 632de008f0e..4bf5f0c868b 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -72,7 +72,7 @@ class CppOptions { /// Class that manages all Cpp header code generation. class CppGenerator extends Generator { - /// Instantiates a Cpp Generator. + /// Instantiates a Cpp Generator for the specified file type. CppGenerator(this.fileType); /// Specifies which file type (header or source) will be generated. diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 2ef59abdf4a..48d512d65c1 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -66,7 +66,7 @@ class ObjcOptions { /// Class that manages all Objc header code generation. class ObjcGenerator extends Generator { - /// Instantiates a Objc Generator. + /// Instantiates a Objc Generator for the specified file type. ObjcGenerator(this.fileType); /// Specifies which file type (header or source) will be generated. diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 7ad64df5e0c..8871fe1f732 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -380,12 +380,13 @@ DartOptions _dartOptionsWithCopyrightHeader( ? _lineReader(copyrightHeader) : null; return DartOptions( - dartOutPath: dartOutPath, - testOutPath: testOutPath, - copyrightHeader: parsedCopyrightHeader); + dartOutPath: dartOutPath, + testOutPath: testOutPath, + copyrightHeader: parsedCopyrightHeader, + ); } -/// An [GeneratorAdapter] that generates the AST. +/// A [GeneratorAdapter] that generates the AST. class AstGeneratorAdapter implements GeneratorAdapter { /// Constructor for [AstGeneratorAdapter]. const AstGeneratorAdapter(); @@ -402,7 +403,7 @@ class AstGeneratorAdapter implements GeneratorAdapter { List validate(PigeonOptions options, Root root) => []; } -/// An [GeneratorAdapter] that generates Dart source code. +/// A [GeneratorAdapter] that generates Dart source code. class DartGeneratorAdapter implements GeneratorAdapter { /// Constructor for [DartGeneratorAdapter]. const DartGeneratorAdapter(); @@ -422,7 +423,7 @@ class DartGeneratorAdapter implements GeneratorAdapter { List validate(PigeonOptions options, Root root) => []; } -/// An [GeneratorAdapter] that generates Dart test source code. +/// A [GeneratorAdapter] that generates Dart test source code. class DartTestGeneratorAdapter implements GeneratorAdapter { /// Constructor for [DartTestGeneratorAdapter]. const DartTestGeneratorAdapter(); @@ -456,7 +457,7 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { List validate(PigeonOptions options, Root root) => []; } -/// An [GeneratorAdapter] that generates Objective-C header code. +/// A [GeneratorAdapter] that generates Objective-C header code. class ObjcHeaderGeneratorAdapter implements GeneratorAdapter { /// Constructor for [ObjcHeaderGeneratorAdapter]. const ObjcHeaderGeneratorAdapter(); @@ -481,7 +482,7 @@ class ObjcHeaderGeneratorAdapter implements GeneratorAdapter { validateObjc(options.objcOptions!, root); } -/// An [GeneratorAdapter] that generates Objective-C source code. +/// A [GeneratorAdapter] that generates Objective-C source code. class ObjcSourceGeneratorAdapter implements GeneratorAdapter { /// Constructor for [ObjcSourceGeneratorAdapter]. const ObjcSourceGeneratorAdapter(); @@ -505,7 +506,7 @@ class ObjcSourceGeneratorAdapter implements GeneratorAdapter { List validate(PigeonOptions options, Root root) => []; } -/// An [GeneratorAdapter] that generates Java source code. +/// A [GeneratorAdapter] that generates Java source code. class JavaGeneratorAdapter implements GeneratorAdapter { /// Constructor for [JavaGeneratorAdapter]. const JavaGeneratorAdapter(); @@ -530,7 +531,7 @@ class JavaGeneratorAdapter implements GeneratorAdapter { List validate(PigeonOptions options, Root root) => []; } -/// An [GeneratorAdapter] that generates Swift source code. +/// A [GeneratorAdapter] that generates Swift source code. class SwiftGeneratorAdapter implements GeneratorAdapter { /// Constructor for [SwiftGeneratorAdapter]. const SwiftGeneratorAdapter(); @@ -553,7 +554,7 @@ class SwiftGeneratorAdapter implements GeneratorAdapter { List validate(PigeonOptions options, Root root) => []; } -/// An [GeneratorAdapter] that generates C++ header code. +/// A [GeneratorAdapter] that generates C++ header code. class CppHeaderGeneratorAdapter implements GeneratorAdapter { /// Constructor for [CppHeaderGeneratorAdapter]. const CppHeaderGeneratorAdapter(); @@ -579,7 +580,7 @@ class CppHeaderGeneratorAdapter implements GeneratorAdapter { validateCpp(options.cppOptions!, root); } -/// An [GeneratorAdapter] that generates C++ source code. +/// A [GeneratorAdapter] that generates C++ source code. class CppSourceGeneratorAdapter implements GeneratorAdapter { /// Constructor for [CppSourceGeneratorAdapter]. const CppSourceGeneratorAdapter(); @@ -603,7 +604,7 @@ class CppSourceGeneratorAdapter implements GeneratorAdapter { List validate(PigeonOptions options, Root root) => []; } -/// An [GeneratorAdapter] that generates Kotlin source code. +/// A [GeneratorAdapter] that generates Kotlin source code. class KotlinGeneratorAdapter implements GeneratorAdapter { /// Constructor for [KotlinGeneratorAdapter]. const KotlinGeneratorAdapter(); From 6206bad51e327c8fde4354d97a3bdb36127cf935 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 14:41:13 -0800 Subject: [PATCH 19/27] Fixes dart header bug --- packages/pigeon/lib/pigeon_lib.dart | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 8871fe1f732..467ade2bd0c 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -374,16 +374,12 @@ abstract class GeneratorAdapter { DartOptions _dartOptionsWithCopyrightHeader( DartOptions? dartOptions, String? copyrightHeader, [String? dartOutPath, String? testOutPath]) { - final Iterable? parsedCopyrightHeader = dartOptions != null - ? dartOptions.copyrightHeader - : copyrightHeader != null - ? _lineReader(copyrightHeader) - : null; - return DartOptions( - dartOutPath: dartOutPath, - testOutPath: testOutPath, - copyrightHeader: parsedCopyrightHeader, - ); + dartOptions = dartOptions ?? DartOptions(); + return dartOptions.merge(DartOptions( + dartOutPath: dartOutPath, + testOutPath: testOutPath, + copyrightHeader: + copyrightHeader != null ? _lineReader(copyrightHeader) : null)); } /// A [GeneratorAdapter] that generates the AST. From 7c3d35cf1f974ab2c815492cb505f1de79d37a60 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 14:49:05 -0800 Subject: [PATCH 20/27] add gen files for clarity --- .../mock_handler_tester/test/message.dart | 2 +- .../pigeon/mock_handler_tester/test/test.dart | 2 +- .../CoreTests.java | 2 +- .../ios/Classes/CoreTests.gen.h | 2 +- .../ios/Classes/CoreTests.gen.m | 2 +- .../lib/core_tests.gen.dart | 2 +- .../lib/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 | 2 +- .../com/example/test_plugin/CoreTests.gen.kt | 2 +- .../ios/Classes/CoreTests.gen.swift | 2 +- .../macos/Classes/CoreTests.gen.swift | 2 +- .../windows/pigeon/core_tests.gen.cpp | 81 ++++++++++--------- .../windows/pigeon/core_tests.gen.h | 8 +- 18 files changed, 65 insertions(+), 56 deletions(-) diff --git a/packages/pigeon/mock_handler_tester/test/message.dart b/packages/pigeon/mock_handler_tester/test/message.dart index f64aa5dc142..4f6c9d14457 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.11), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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 d0ecdc5d205..9b97826b605 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.11), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, unnecessary_import // ignore_for_file: avoid_relative_lib_imports diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/CoreTests.java b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/CoreTests.java index 9c0256252ea..2d81d4b59f1 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/CoreTests.java +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/java/com/example/alternate_language_test_plugin/CoreTests.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v4.2.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon package com.example.alternate_language_test_plugin; diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.h b/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.h index 80a40d52c85..dcdee87c5d9 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.h +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.h @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v4.2.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.m b/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.m index adb33d0bdf9..bcdd86394a6 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.m +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/ios/Classes/CoreTests.gen.m @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v4.2.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "CoreTests.gen.h" #import 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 4ff2bc07562..ee79a4b1a27 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.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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/multiple_arity.gen.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/lib/multiple_arity.gen.dart index a3145679319..e92ab29cebd 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.11), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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 0dafa689085..1ff71bfa346 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.11), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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 94c9b86a8a5..88f4611e746 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.11), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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 f376a13a932..13fe926bcf1 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.11), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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 e88028363d8..be1979c8adf 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.11), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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 178e3154578..36a569e4f46 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.11), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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 4ff2bc07562..ee79a4b1a27 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.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), 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/test_plugin/android/src/main/kotlin/com/example/test_plugin/CoreTests.gen.kt b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/CoreTests.gen.kt index bcd41b05492..c1add054eaf 100644 --- a/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/CoreTests.gen.kt +++ b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/CoreTests.gen.kt @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v4.2.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon package com.example.test_plugin diff --git a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift index 385b507191a..c9850b70d36 100644 --- a/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/ios/Classes/CoreTests.gen.swift @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v4.2.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation diff --git a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift index 385b507191a..c9850b70d36 100644 --- a/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift +++ b/packages/pigeon/platform_tests/test_plugin/macos/Classes/CoreTests.gen.swift @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v4.2.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation diff --git a/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.cpp b/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.cpp index 990732ca635..f0d5929ce4a 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.cpp +++ b/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.cpp @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Autogenerated from Pigeon (v4.2.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon #undef _HAS_EXCEPTIONS @@ -576,7 +576,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -597,7 +597,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_everything_arg = args.at(0); if (encodable_everything_arg.IsNull()) { - reply(WrapError("everything_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("everything_arg unexpectedly null."))); return; } const auto& everything_arg = std::any_cast( @@ -613,7 +614,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -653,7 +654,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -680,7 +681,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -700,7 +701,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_an_int_arg = args.at(0); if (encodable_an_int_arg.IsNull()) { - reply(WrapError("an_int_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("an_int_arg unexpectedly null."))); return; } const int64_t an_int_arg = encodable_an_int_arg.LongValue(); @@ -714,7 +716,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -735,7 +737,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_a_double_arg = args.at(0); if (encodable_a_double_arg.IsNull()) { - reply(WrapError("a_double_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("a_double_arg unexpectedly null."))); return; } const auto& a_double_arg = @@ -750,7 +753,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -770,7 +773,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_a_bool_arg = args.at(0); if (encodable_a_bool_arg.IsNull()) { - reply(WrapError("a_bool_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("a_bool_arg unexpectedly null."))); return; } const auto& a_bool_arg = std::get(encodable_a_bool_arg); @@ -784,7 +788,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -805,7 +809,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_a_string_arg = args.at(0); if (encodable_a_string_arg.IsNull()) { - reply(WrapError("a_string_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("a_string_arg unexpectedly null."))); return; } const auto& a_string_arg = @@ -820,7 +825,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -841,7 +846,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_a_uint8_list_arg = args.at(0); if (encodable_a_uint8_list_arg.IsNull()) { - reply(WrapError("a_uint8_list_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("a_uint8_list_arg unexpectedly null."))); return; } const auto& a_uint8_list_arg = @@ -857,7 +863,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -878,7 +884,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_wrapper_arg = args.at(0); if (encodable_wrapper_arg.IsNull()) { - reply(WrapError("wrapper_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("wrapper_arg unexpectedly null."))); return; } const auto& wrapper_arg = @@ -901,7 +908,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -934,7 +941,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -980,7 +987,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -1024,7 +1031,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -1062,7 +1069,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -1100,7 +1107,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -1138,7 +1145,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -1177,7 +1184,7 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); @@ -1201,11 +1208,11 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } else { wrapped.push_back(flutter::EncodableValue()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); } }); } else { @@ -1227,7 +1234,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_a_string_arg = args.at(0); if (encodable_a_string_arg.IsNull()) { - reply(WrapError("a_string_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("a_string_arg unexpectedly null."))); return; } const auto& a_string_arg = @@ -1241,11 +1249,11 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, wrapped.push_back(flutter::EncodableValue( std::move(output).TakeValue())); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); } }); } else { @@ -1271,11 +1279,11 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, } else { wrapped.push_back(flutter::EncodableValue()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); } }); } else { @@ -1297,7 +1305,8 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, const auto& args = std::get(message); const auto& encodable_a_string_arg = args.at(0); if (encodable_a_string_arg.IsNull()) { - reply(WrapError("a_string_arg unexpectedly null.")); + reply(flutter::EncodableValue( + WrapError("a_string_arg unexpectedly null."))); return; } const auto& a_string_arg = @@ -1311,11 +1320,11 @@ void HostIntegrationCoreApi::SetUp(flutter::BinaryMessenger* binary_messenger, wrapped.push_back(flutter::EncodableValue( std::move(output).TakeValue())); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); } }); } else { @@ -1500,7 +1509,7 @@ void HostTrivialApi::SetUp(flutter::BinaryMessenger* binary_messenger, } catch (const std::exception& exception) { wrapped = WrapError(exception.what()); } - reply(wrapped); + reply(flutter::EncodableValue(std::move(wrapped))); }); } else { channel->SetMessageHandler(nullptr); diff --git a/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h b/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h index 5100fdb753d..a2ea204b578 100644 --- a/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h +++ b/packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h @@ -2,11 +2,11 @@ // 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.12), do not edit directly. +// Autogenerated from Pigeon (v5.0.0), do not edit directly. // See also: https://pub.dev/packages/pigeon -#ifndef PIGEON_CORE_TESTS_GEN_CORE_TESTS_PIGEONTEST_H_ -#define PIGEON_CORE_TESTS_GEN_CORE_TESTS_PIGEONTEST_H_ +#ifndef PIGEON_CORE_TESTS_PIGEONTEST_H_ +#define PIGEON_CORE_TESTS_PIGEONTEST_H_ #include #include #include @@ -406,4 +406,4 @@ class HostTrivialApi { HostTrivialApi() = default; }; } // namespace core_tests_pigeontest -#endif // PIGEON_CORE_TESTS_GEN_CORE_TESTS_PIGEONTEST_H_ +#endif // PIGEON_CORE_TESTS_PIGEONTEST_H_ From 8bf2dfbd484af7718d7d0621da2995ecc5cc9ece Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 16:09:57 -0800 Subject: [PATCH 21/27] better field naming --- packages/pigeon/lib/cpp_generator.dart | 23 ++++++------ packages/pigeon/lib/dart_generator.dart | 20 +++++------ packages/pigeon/lib/pigeon_lib.dart | 8 ++--- packages/pigeon/test/cpp_generator_test.dart | 35 ++++++++++--------- packages/pigeon/test/dart_generator_test.dart | 6 ++-- 5 files changed, 46 insertions(+), 46 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 4bf5f0c868b..225b8e9ca7b 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -22,15 +22,15 @@ const String _defaultCodecSerializer = 'flutter::StandardCodecSerializer'; class CppOptions { /// Creates a [CppOptions] object const CppOptions({ - this.header, + this.headerIncludePath, this.namespace, this.copyrightHeader, - this.cppHeaderOut, + this.headerOutPath, }); /// The path to the header that will get placed in the source filed (example: /// "foo.h"). - final String? header; + final String? headerIncludePath; /// The namespace where the generated class will live. final String? namespace; @@ -39,16 +39,16 @@ class CppOptions { final Iterable? copyrightHeader; /// The path to the output header file location. - final String? cppHeaderOut; + final String? headerOutPath; /// Creates a [CppOptions] from a Map representation where: /// `x = CppOptions.fromMap(x.toMap())`. static CppOptions fromMap(Map map) { return CppOptions( - header: map['header'] as String?, + headerIncludePath: map['header'] as String?, namespace: map['namespace'] as String?, copyrightHeader: map['copyrightHeader'] as Iterable?, - cppHeaderOut: map['cppHeaderOut'] as String?, + headerOutPath: map['cppHeaderOut'] as String?, ); } @@ -56,7 +56,7 @@ class CppOptions { /// `x = CppOptions.fromMap(x.toMap())`. Map toMap() { final Map result = { - if (header != null) 'header': header!, + if (headerIncludePath != null) 'header': headerIncludePath!, if (namespace != null) 'namespace': namespace!, if (copyrightHeader != null) 'copyrightHeader': copyrightHeader!, }; @@ -82,8 +82,7 @@ class CppGenerator extends Generator { @override void generate(CppOptions languageOptions, Root root, StringSink sink) { if (fileType == FileType.header) { - generateCppHeader( - languageOptions.cppHeaderOut, languageOptions, root, sink); + generateCppHeader(languageOptions, root, sink); } else { generateCppSource(languageOptions, root, sink); } @@ -1037,8 +1036,8 @@ void _writeSystemHeaderIncludeBlock(Indent indent, List headers) { /// Generates the ".h" file for the AST represented by [root] to [sink] with the /// provided [options] and [headerFileName]. -void generateCppHeader( - String? headerFileName, CppOptions options, Root root, StringSink sink) { +void generateCppHeader(CppOptions options, Root root, StringSink sink) { + final String? headerFileName = options.headerOutPath; final Indent indent = Indent(sink); if (options.copyrightHeader != null) { addLines(indent, options.copyrightHeader!, linePrefix: '// '); @@ -1139,7 +1138,7 @@ void generateCppSource(CppOptions options, Root root, StringSink sink) { indent.addln('#undef _HAS_EXCEPTIONS'); indent.addln(''); - indent.writeln('#include "${options.header}"'); + indent.writeln('#include "${options.headerIncludePath}"'); indent.addln(''); _writeSystemHeaderIncludeBlock(indent, [ 'flutter/basic_message_channel.h', diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 604becc9c30..6d4b005d764 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -27,7 +27,7 @@ class DartOptions { /// Constructor for DartOptions. DartOptions({ this.copyrightHeader, - this.dartOutPath, + this.sourceOutPath, this.testOutPath, }); @@ -35,7 +35,7 @@ class DartOptions { final Iterable? copyrightHeader; /// Path to output generated Dart file for tests. - String? dartOutPath; + String? sourceOutPath; /// Path to output generated Test file for tests. String? testOutPath; @@ -47,7 +47,7 @@ class DartOptions { map['copyrightHeader'] as Iterable?; return DartOptions( copyrightHeader: copyrightHeader?.cast(), - dartOutPath: map['dartOutPath'] as String?, + sourceOutPath: map['sourceOutPath'] as String?, testOutPath: map['testOutPath'] as String?, ); } @@ -57,7 +57,7 @@ class DartOptions { Map toMap() { final Map result = { if (copyrightHeader != null) 'copyrightHeader': copyrightHeader!, - if (dartOutPath != null) 'dartOutPath': dartOutPath!, + if (sourceOutPath != null) 'sourceOutPath': sourceOutPath!, if (testOutPath != null) 'testOutPath': testOutPath!, }; return result; @@ -90,13 +90,13 @@ class DartTestGenerator extends Generator { /// Generates Dart files with specified [DartOptions] @override void generate(DartOptions languageOptions, Root root, StringSink sink) { - final String dartOutPath = languageOptions.dartOutPath ?? ''; + final String sourceOutPath = languageOptions.sourceOutPath ?? ''; final String testOutPath = languageOptions.testOutPath ?? ''; generateTestDart( languageOptions, root, sink, - dartOutPath: dartOutPath, + sourceOutPath: sourceOutPath, testOutPath: testOutPath, ); } @@ -742,14 +742,14 @@ String _posixify(String inputPath) { } /// Generates Dart source code for test support libraries based on the given AST -/// represented by [root], outputting the code to [sink]. [dartOutPath] is the +/// represented by [root], outputting the code to [sink]. [sourceOutPath] is the /// path of the generated dart code to be tested. [testOutPath] is where the /// test code will be generated. void generateTestDart( DartOptions opt, Root root, StringSink sink, { - required String dartOutPath, + required String sourceOutPath, required String testOutPath, }) { final Indent indent = Indent(sink); @@ -773,10 +773,10 @@ void generateTestDart( indent.writeln(''); final String relativeDartPath = path.Context(style: path.Style.posix).relative( - _posixify(dartOutPath), + _posixify(sourceOutPath), from: _posixify(path.dirname(testOutPath)), ); - late final String? packageName = _deducePackageName(dartOutPath); + late final String? packageName = _deducePackageName(sourceOutPath); if (!relativeDartPath.contains('/lib/') || packageName == null) { // If we can't figure out the package name or the relative path doesn't // include a 'lib' directory, try relative path import which only works in diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 467ade2bd0c..327ce27c08b 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -376,7 +376,7 @@ DartOptions _dartOptionsWithCopyrightHeader( [String? dartOutPath, String? testOutPath]) { dartOptions = dartOptions ?? DartOptions(); return dartOptions.merge(DartOptions( - dartOutPath: dartOutPath, + sourceOutPath: dartOutPath, testOutPath: testOutPath, copyrightHeader: copyrightHeader != null ? _lineReader(copyrightHeader) : null)); @@ -559,7 +559,7 @@ class CppHeaderGeneratorAdapter implements GeneratorAdapter { void generate(StringSink sink, PigeonOptions options, Root root) { final CppOptions cppOptions = options.cppOptions ?? const CppOptions(); final CppOptions cppOptionsWithHeader = cppOptions.merge(CppOptions( - cppHeaderOut: path.basenameWithoutExtension(options.cppHeaderOut!), + headerOutPath: path.basenameWithoutExtension(options.cppHeaderOut!), copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); @@ -1436,8 +1436,8 @@ ${_argParser.usage}'''; if (options.cppHeaderOut != null) { options = options.merge(PigeonOptions( - cppOptions: options.cppOptions!.merge( - CppOptions(header: path.basename(options.cppHeaderOut!))))); + cppOptions: options.cppOptions!.merge(CppOptions( + headerIncludePath: path.basename(options.cppHeaderOut!))))); } for (final GeneratorAdapter adapter in safeGeneratorAdapters) { diff --git a/packages/pigeon/test/cpp_generator_test.dart b/packages/pigeon/test/cpp_generator_test.dart index d089b0a4480..39d6bedd8f5 100644 --- a/packages/pigeon/test/cpp_generator_test.dart +++ b/packages/pigeon/test/cpp_generator_test.dart @@ -45,7 +45,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect(code, contains('class Input')); expect(code, contains('class Output')); @@ -101,7 +101,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); // Method name and argument names should be adjusted. expect(code, contains(' DoSomething(const Input& some_input)')); @@ -144,7 +144,7 @@ void main() { ], classes: [], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect( @@ -184,7 +184,7 @@ void main() { ], classes: [], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect( @@ -238,7 +238,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect(code, isNot(contains('){'))); expect(code, isNot(contains('const{'))); @@ -271,7 +271,7 @@ void main() { ], classes: [], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect(code, contains(''' #include @@ -286,7 +286,8 @@ void main() { } { final StringBuffer sink = StringBuffer(); - generateCppSource(const CppOptions(header: 'a_header.h'), root, sink); + generateCppSource( + const CppOptions(headerIncludePath: 'a_header.h'), root, sink); final String code = sink.toString(); expect(code, contains(''' #include "a_header.h" @@ -322,7 +323,7 @@ void main() { ], classes: [], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(namespace: 'foo'), root, sink); + generateCppHeader(const CppOptions(namespace: 'foo'), root, sink); final String code = sink.toString(); expect(code, contains('namespace foo {')); expect(code, contains('} // namespace foo')); @@ -390,7 +391,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); // Getters should return const pointers. expect(code, contains('const bool* nullable_bool()')); @@ -521,7 +522,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); // POD getters should return copies references. expect(code, contains('bool non_nullable_bool()')); @@ -644,7 +645,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect( code, contains('ErrorOr> ReturnNullableBool()')); @@ -749,7 +750,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect(code, contains('ErrorOr ReturnBool()')); expect(code, contains('ErrorOr ReturnInt()')); @@ -825,7 +826,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect( code, @@ -943,7 +944,7 @@ void main() { ], enums: []); { final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect( code, @@ -1122,7 +1123,7 @@ void main() { ], ); final StringBuffer sink = StringBuffer(); - generateCppHeader('foo', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(headerIncludePath: 'foo'), root, sink); final String code = sink.toString(); for (final String comment in comments) { expect(code, contains('//$comment')); @@ -1157,7 +1158,7 @@ void main() { enums: [], ); final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect(code, isNot(contains(' : public flutter::StandardCodecSerializer'))); }); @@ -1199,7 +1200,7 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateCppHeader('', const CppOptions(), root, sink); + generateCppHeader(const CppOptions(), root, sink); final String code = sink.toString(); expect(code, contains(' : public flutter::StandardCodecSerializer')); }); diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart index 38442ccd358..c77e5d89e37 100644 --- a/packages/pigeon/test/dart_generator_test.dart +++ b/packages/pigeon/test/dart_generator_test.dart @@ -582,7 +582,7 @@ void main() { DartOptions(), root, testCodeSink, - dartOutPath: "fo'o.dart", + sourceOutPath: "fo'o.dart", testOutPath: 'test.dart', ); final String testCode = testCodeSink.toString(); @@ -1154,7 +1154,7 @@ name: foobar DartOptions(), root, sink, - dartOutPath: path.join(foo.path, 'bar.dart'), + sourceOutPath: path.join(foo.path, 'bar.dart'), testOutPath: path.join(tempDir.path, 'test', 'bar_test.dart'), ); final String code = sink.toString(); @@ -1358,7 +1358,7 @@ name: foobar DartOptions(), root, sink, - dartOutPath: 'code.dart', + sourceOutPath: 'code.dart', testOutPath: 'test.dart', ); final String testCode = sink.toString(); From 8c6abf2d240e184422a8864547934a06a90fb683 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 16:18:24 -0800 Subject: [PATCH 22/27] better field naming --- packages/pigeon/lib/objc_generator.dart | 10 +- packages/pigeon/lib/pigeon_lib.dart | 4 +- packages/pigeon/test/objc_generator_test.dart | 179 +++++++++++++----- 3 files changed, 136 insertions(+), 57 deletions(-) diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 48d512d65c1..a3cf3a7da2a 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -19,14 +19,14 @@ const DocumentCommentSpecification _docCommentSpec = class ObjcOptions { /// Parametric constructor for ObjcOptions. const ObjcOptions({ - this.header, + this.headerIncludePath, this.prefix, this.copyrightHeader, }); /// The path to the header that will get placed in the source filed (example: /// "foo.h"). - final String? header; + final String? headerIncludePath; /// Prefix that will be appended before all generated classes and protocols. final String? prefix; @@ -40,7 +40,7 @@ class ObjcOptions { final Iterable? copyrightHeader = map['copyrightHeader'] as Iterable?; return ObjcOptions( - header: map['header'] as String?, + headerIncludePath: map['header'] as String?, prefix: map['prefix'] as String?, copyrightHeader: copyrightHeader?.cast(), ); @@ -50,7 +50,7 @@ class ObjcOptions { /// `x = ObjcOptions.fromMap(x.toMap())`. Map toMap() { final Map result = { - if (header != null) 'header': header!, + if (headerIncludePath != null) 'header': headerIncludePath!, if (prefix != null) 'prefix': prefix!, if (copyrightHeader != null) 'copyrightHeader': copyrightHeader!, }; @@ -910,7 +910,7 @@ void generateObjcSource(ObjcOptions options, Root root, StringSink sink) { } void writeImports() { - indent.writeln('#import "${options.header}"'); + indent.writeln('#import "${options.headerIncludePath}"'); indent.writeln('#import '); } diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 327ce27c08b..46ac932694a 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -1430,8 +1430,8 @@ ${_argParser.usage}'''; if (options.objcHeaderOut != null) { options = options.merge(PigeonOptions( - objcOptions: options.objcOptions!.merge( - ObjcOptions(header: path.basename(options.objcHeaderOut!))))); + objcOptions: options.objcOptions!.merge(ObjcOptions( + headerIncludePath: path.basename(options.objcHeaderOut!))))); } if (options.cppHeaderOut != null) { diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index cf83029338e..aeb2db68e26 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -32,7 +32,8 @@ void main() { ]), ], enums: []); final StringBuffer sink = StringBuffer(); - generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcSource( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('#import "foo.h"')); expect(code, contains('@implementation Foobar')); @@ -103,7 +104,8 @@ void main() { ], ); final StringBuffer sink = StringBuffer(); - generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcSource( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('#import "foo.h"')); expect(code, contains('@implementation Foobar')); @@ -133,7 +135,8 @@ void main() { ]) ]); final StringBuffer sink = StringBuffer(); - const ObjcOptions options = ObjcOptions(header: 'foo.h', prefix: 'AC'); + const ObjcOptions options = + ObjcOptions(headerIncludePath: 'foo.h', prefix: 'AC'); { generateObjcHeader(options, root, sink); final String code = sink.toString(); @@ -169,7 +172,7 @@ void main() { EnumMember(name: 'two'), ]) ]); - const ObjcOptions options = ObjcOptions(header: 'foo.h'); + const ObjcOptions options = ObjcOptions(headerIncludePath: 'foo.h'); final List errors = validateObjc(options, root); expect(errors.length, 1); expect(errors[0].message, contains('Nullable enum')); @@ -204,7 +207,8 @@ void main() { ], ); final StringBuffer sink = StringBuffer(); - generateObjcHeader(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcHeader( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('@property(nonatomic, assign) Enum1 enum1')); }); @@ -275,7 +279,8 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcSource( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('#import "foo.h"')); expect(code, contains('@implementation Input')); @@ -322,7 +327,8 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); - generateObjcHeader(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcHeader( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('@interface Foobar')); expect(code, contains('@class FlutterStandardTypedData;')); @@ -350,7 +356,8 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); - generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcSource( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('@implementation Foobar')); expect(code, @@ -371,7 +378,8 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateObjcHeader(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcHeader( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('@property(nonatomic, strong, nullable) Input * nested;')); @@ -391,7 +399,8 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcSource( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect( code, @@ -530,7 +539,8 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateObjcHeader(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcHeader( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('@interface Api : NSObject')); expect( @@ -569,7 +579,8 @@ void main() { ]) ], enums: []); final StringBuffer sink = StringBuffer(); - generateObjcSource(const ObjcOptions(header: 'foo.h'), root, sink); + generateObjcSource( + const ObjcOptions(headerIncludePath: 'foo.h'), root, sink); final String code = sink.toString(); expect(code, contains('@implementation Api')); expect(code, matches('void.*doSomething.*Input.*Output.*{')); @@ -599,7 +610,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('(void)doSomething:')); }); @@ -628,7 +641,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, isNot(matches('=.*doSomething'))); expect(code, matches('[.*doSomething:.*]')); @@ -659,7 +674,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('completion:(void(^)(NSError *_Nullable))')); }); @@ -688,7 +705,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('completion:(void(^)(NSError *_Nullable))')); expect(code, contains('completion(nil)')); @@ -712,7 +731,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, matches('ABCOutput.*doSomethingWithError:[(]FlutterError')); }); @@ -735,7 +756,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, matches('output.*=.*api doSomethingWithError:&error')); }); @@ -758,7 +781,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -784,7 +809,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -902,7 +929,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -941,7 +970,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -968,7 +999,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -988,7 +1021,9 @@ void main() { ], classes: [], enums: []); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1027,7 +1062,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1065,7 +1102,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1085,7 +1124,9 @@ void main() { ], classes: [], enums: []); final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1112,7 +1153,9 @@ void main() { ], enums: []); final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1129,7 +1172,7 @@ void main() { final StringBuffer sink = StringBuffer(); generateObjcSource( ObjcOptions( - header: 'foo.h', + headerIncludePath: 'foo.h', prefix: 'ABC', copyrightHeader: makeIterable('hello world')), root, @@ -1144,7 +1187,7 @@ void main() { final StringBuffer sink = StringBuffer(); generateObjcHeader( ObjcOptions( - header: 'foo.h', + headerIncludePath: 'foo.h', prefix: 'ABC', copyrightHeader: makeIterable('hello world')), root, @@ -1175,7 +1218,9 @@ void main() { ); final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('NSArray * field1')); }); @@ -1205,14 +1250,18 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('doitArg:(NSArray *)arg')); } { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1246,14 +1295,18 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('doitArg:(NSArray *)arg')); } { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('doitArg:(NSArray *)arg')); } @@ -1290,7 +1343,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('doitArg:(NSArray *> *)arg')); } @@ -1317,7 +1372,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, contains('- (nullable NSArray *)doitWithError:')); @@ -1325,7 +1382,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('NSArray *output =')); } @@ -1352,7 +1411,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, contains('doitWithCompletion:(void(^)(NSArray *')); @@ -1360,7 +1421,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, contains('doitWithCompletion:(void(^)(NSArray *')); @@ -1389,7 +1452,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1399,7 +1464,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('NSArray *args = message;')); expect(code, @@ -1434,7 +1501,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1444,7 +1513,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect(code, contains('NSArray *args = message;')); expect(code, @@ -1477,7 +1548,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1487,7 +1560,9 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), root, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + root, + sink); final String code = sink.toString(); expect( code, @@ -1531,14 +1606,18 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), divideRoot, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + divideRoot, + sink); final String code = sink.toString(); expect(code, matches('divideValue:.*by:.*error.*;')); } { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), divideRoot, sink); + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), + divideRoot, + sink); final String code = sink.toString(); expect(code, matches('divideValue:.*by:.*error.*;')); } @@ -1549,7 +1628,7 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcHeader( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), divideRoot, sink, ); @@ -1559,7 +1638,7 @@ void main() { { final StringBuffer sink = StringBuffer(); generateObjcSource( - const ObjcOptions(header: 'foo.h', prefix: 'ABC'), + const ObjcOptions(headerIncludePath: 'foo.h', prefix: 'ABC'), divideRoot, sink, ); From 93a5d1bf619e53f558c1444995a83db867098f23 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 16:23:53 -0800 Subject: [PATCH 23/27] removed unneeded dart test generator --- packages/pigeon/lib/dart_generator.dart | 11 ++--------- packages/pigeon/lib/pigeon_lib.dart | 4 ++-- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 6d4b005d764..dca3c0fcd57 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -80,16 +80,9 @@ class DartGenerator extends Generator { void generate(DartOptions languageOptions, Root root, StringSink sink) { generateDart(languageOptions, root, sink); } -} - -/// Class that manages all Dart code generation. -class DartTestGenerator extends Generator { - /// Instantiates a Dart Generator. - DartTestGenerator(); - /// Generates Dart files with specified [DartOptions] - @override - void generate(DartOptions languageOptions, Root root, StringSink sink) { + /// Generates Dart files for testing with specified [DartOptions] + void generateTest(DartOptions languageOptions, Root root, StringSink sink) { final String sourceOutPath = languageOptions.sourceOutPath ?? ''; final String testOutPath = languageOptions.testOutPath ?? ''; generateTestDart( diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 46ac932694a..bfde7735b43 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -432,8 +432,8 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { options.dartOut, options.dartTestOut, ); - final DartTestGenerator testGenerator = DartTestGenerator(); - testGenerator.generate( + final DartGenerator testGenerator = DartGenerator(); + testGenerator.generateTest( dartOptionsWithHeader, root, sink, From 710d1a1f2bc05a00da447684f0cd13921353d3f6 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Tue, 27 Dec 2022 16:29:24 -0800 Subject: [PATCH 24/27] Add filetype to generator --- packages/pigeon/lib/cpp_generator.dart | 8 +++----- packages/pigeon/lib/dart_generator.dart | 3 ++- packages/pigeon/lib/generator.dart | 4 +++- packages/pigeon/lib/java_generator.dart | 3 ++- packages/pigeon/lib/kotlin_generator.dart | 3 ++- packages/pigeon/lib/objc_generator.dart | 8 +++----- packages/pigeon/lib/pigeon_lib.dart | 24 +++++++++++------------ packages/pigeon/lib/swift_generator.dart | 3 ++- 8 files changed, 29 insertions(+), 27 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index 225b8e9ca7b..ff7239efd2d 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -73,14 +73,12 @@ class CppOptions { /// Class that manages all Cpp header code generation. class CppGenerator extends Generator { /// Instantiates a Cpp Generator for the specified file type. - CppGenerator(this.fileType); - - /// Specifies which file type (header or source) will be generated. - FileType fileType; + CppGenerator(); /// Generates Cpp files with specified [CppOptions] @override - void generate(CppOptions languageOptions, Root root, StringSink sink) { + void generate(CppOptions languageOptions, Root root, StringSink sink, + FileType fileType) { if (fileType == FileType.header) { generateCppHeader(languageOptions, root, sink); } else { diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index dca3c0fcd57..f450d2ddeaa 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -77,7 +77,8 @@ class DartGenerator extends Generator { /// Generates Dart files with specified [DartOptions] @override - void generate(DartOptions languageOptions, Root root, StringSink sink) { + void generate( + DartOptions languageOptions, Root root, StringSink sink, FileType _) { generateDart(languageOptions, root, sink); } diff --git a/packages/pigeon/lib/generator.dart b/packages/pigeon/lib/generator.dart index 02667e4a5c9..6cf63113a1f 100644 --- a/packages/pigeon/lib/generator.dart +++ b/packages/pigeon/lib/generator.dart @@ -3,11 +3,13 @@ // found in the LICENSE file. import 'ast.dart'; +import 'generator_tools.dart'; /// A superclass of generator classes. /// /// This provides the structure that is common across generators for different languages. abstract class Generator { /// Generates files for specified language with specified [languageOptions] - void generate(T languageOptions, Root root, StringSink sink); + void generate( + T languageOptions, Root root, StringSink sink, FileType fileType); } diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index 00293bfc0e8..e7b2ebcaf18 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -92,7 +92,8 @@ class JavaGenerator extends Generator { /// Generates Java files with specified [JavaOptions] @override - void generate(JavaOptions languageOptions, Root root, StringSink sink) { + void generate( + JavaOptions languageOptions, Root root, StringSink sink, FileType _) { generateJava(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index 99690a4ac92..a570da4674b 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -72,7 +72,8 @@ class KotlinGenerator extends Generator { /// Generates Kotlin files with specified [KotlinOptions] @override - void generate(KotlinOptions languageOptions, Root root, StringSink sink) { + void generate( + KotlinOptions languageOptions, Root root, StringSink sink, FileType _) { generateKotlin(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index a3cf3a7da2a..4576ed6a66c 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -67,14 +67,12 @@ class ObjcOptions { /// Class that manages all Objc header code generation. class ObjcGenerator extends Generator { /// Instantiates a Objc Generator for the specified file type. - ObjcGenerator(this.fileType); - - /// Specifies which file type (header or source) will be generated. - FileType fileType; + ObjcGenerator(); /// Generates Objc files with specified [ObjcOptions] @override - void generate(ObjcOptions languageOptions, Root root, StringSink sink) { + void generate(ObjcOptions languageOptions, Root root, StringSink sink, + FileType fileType) { if (fileType == FileType.header) { generateObjcHeader(languageOptions, root, sink); } else { diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index bfde7735b43..0311d31e714 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -409,7 +409,7 @@ class DartGeneratorAdapter implements GeneratorAdapter { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader); final DartGenerator generator = DartGenerator(); - generator.generate(dartOptionsWithHeader, root, sink); + generator.generate(dartOptionsWithHeader, root, sink, FileType.source); } @override @@ -465,8 +465,8 @@ class ObjcHeaderGeneratorAdapter implements GeneratorAdapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final ObjcGenerator generator = ObjcGenerator(FileType.header); - generator.generate(objcOptionsWithHeader, root, sink); + final ObjcGenerator generator = ObjcGenerator(); + generator.generate(objcOptionsWithHeader, root, sink, FileType.header); } @override @@ -490,8 +490,8 @@ class ObjcSourceGeneratorAdapter implements GeneratorAdapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final ObjcGenerator generator = ObjcGenerator(FileType.source); - generator.generate(objcOptionsWithHeader, root, sink); + final ObjcGenerator generator = ObjcGenerator(); + generator.generate(objcOptionsWithHeader, root, sink, FileType.source); } @override @@ -517,7 +517,7 @@ class JavaGeneratorAdapter implements GeneratorAdapter { ? _lineReader(options.copyrightHeader!) : null)); final JavaGenerator generator = JavaGenerator(); - generator.generate(javaOptions, root, sink); + generator.generate(javaOptions, root, sink, FileType.source); } @override @@ -540,7 +540,7 @@ class SwiftGeneratorAdapter implements GeneratorAdapter { ? _lineReader(options.copyrightHeader!) : null)); final SwiftGenerator generator = SwiftGenerator(); - generator.generate(swiftOptions, root, sink); + generator.generate(swiftOptions, root, sink, FileType.source); } @override @@ -563,8 +563,8 @@ class CppHeaderGeneratorAdapter implements GeneratorAdapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final CppGenerator generator = CppGenerator(FileType.header); - generator.generate(cppOptionsWithHeader, root, sink); + final CppGenerator generator = CppGenerator(); + generator.generate(cppOptionsWithHeader, root, sink, FileType.header); } @override @@ -588,8 +588,8 @@ class CppSourceGeneratorAdapter implements GeneratorAdapter { copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); - final CppGenerator generator = CppGenerator(FileType.source); - generator.generate(cppOptionsWithHeader, root, sink); + final CppGenerator generator = CppGenerator(); + generator.generate(cppOptionsWithHeader, root, sink, FileType.source); } @override @@ -614,7 +614,7 @@ class KotlinGeneratorAdapter implements GeneratorAdapter { ? _lineReader(options.copyrightHeader!) : null)); final KotlinGenerator generator = KotlinGenerator(); - generator.generate(kotlinOptions, root, sink); + generator.generate(kotlinOptions, root, sink, FileType.source); } @override diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index b25931c03e3..45c15341116 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -55,7 +55,8 @@ class SwiftGenerator extends Generator { /// Generates Swift files with specified [SwiftOptions] @override - void generate(SwiftOptions languageOptions, Root root, StringSink sink) { + void generate( + SwiftOptions languageOptions, Root root, StringSink sink, FileType _) { generateSwift(languageOptions, root, sink); } } From d189d11ad0dfd028252607a3d8399d9cd51d5d53 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Wed, 28 Dec 2022 23:04:36 -0800 Subject: [PATCH 25/27] Adds filetype as field to generatorAdapters --- packages/pigeon/lib/cpp_generator.dart | 2 +- packages/pigeon/lib/objc_generator.dart | 2 +- packages/pigeon/lib/pigeon_lib.dart | 213 +++++++++++----------- packages/pigeon/test/pigeon_lib_test.dart | 49 ++--- 4 files changed, 139 insertions(+), 127 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index ff7239efd2d..fbb90b39483 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -72,7 +72,7 @@ class CppOptions { /// Class that manages all Cpp header code generation. class CppGenerator extends Generator { - /// Instantiates a Cpp Generator for the specified file type. + /// Instantiates a Cpp Generator. CppGenerator(); /// Generates Cpp files with specified [CppOptions] diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index 4576ed6a66c..110625414a2 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -66,7 +66,7 @@ class ObjcOptions { /// Class that manages all Objc header code generation. class ObjcGenerator extends Generator { - /// Instantiates a Objc Generator for the specified file type. + /// Instantiates a Objc Generator. ObjcGenerator(); /// Generates Objc files with specified [ObjcOptions] diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 0311d31e714..4e949ec3dd3 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -358,13 +358,21 @@ IOSink? _openSink(String? output) { /// An adapter that will call a generator to write code to a sink /// based on the contents of [PigeonOptions]. abstract class GeneratorAdapter { + /// Constructor for [GeneratorAdapter] + GeneratorAdapter(this.fileTypeList); + + /// A list of [FileType] + /// Used to tell the generator method which type of file to create. + List fileTypeList; + /// Returns an [IOSink] instance to be written to if the [GeneratorAdapter] should /// generate. If it returns `null`, the [GeneratorAdapter] will be skipped. - IOSink? shouldGenerate(PigeonOptions options); + IOSink? shouldGenerate(PigeonOptions options, FileType fileType); /// Write the generated code described in [root] to [sink] using the /// [options]. - void generate(StringSink sink, PigeonOptions options, Root root); + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType); /// Generates errors that would only be appropriate for this [GeneratorAdapter]. For /// example, maybe a certain feature isn't implemented in a [GeneratorAdapter] yet. @@ -385,15 +393,20 @@ DartOptions _dartOptionsWithCopyrightHeader( /// A [GeneratorAdapter] that generates the AST. class AstGeneratorAdapter implements GeneratorAdapter { /// Constructor for [AstGeneratorAdapter]. - const AstGeneratorAdapter(); + AstGeneratorAdapter(); + + @override + List fileTypeList = const [FileType.source]; @override - void generate(StringSink sink, PigeonOptions options, Root root) { + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) { generateAst(root, sink); } @override - IOSink? shouldGenerate(PigeonOptions options) => _openSink(options.astOut); + IOSink? shouldGenerate(PigeonOptions options, FileType _) => + _openSink(options.astOut); @override List validate(PigeonOptions options, Root root) => []; @@ -402,18 +415,23 @@ class AstGeneratorAdapter implements GeneratorAdapter { /// A [GeneratorAdapter] that generates Dart source code. class DartGeneratorAdapter implements GeneratorAdapter { /// Constructor for [DartGeneratorAdapter]. - const DartGeneratorAdapter(); + DartGeneratorAdapter(); @override - void generate(StringSink sink, PigeonOptions options, Root root) { + List fileTypeList = const [FileType.source]; + + @override + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader); final DartGenerator generator = DartGenerator(); - generator.generate(dartOptionsWithHeader, root, sink, FileType.source); + generator.generate(dartOptionsWithHeader, root, sink, fileType); } @override - IOSink? shouldGenerate(PigeonOptions options) => _openSink(options.dartOut); + IOSink? shouldGenerate(PigeonOptions options, FileType _) => + _openSink(options.dartOut); @override List validate(PigeonOptions options, Root root) => []; @@ -422,10 +440,14 @@ class DartGeneratorAdapter implements GeneratorAdapter { /// A [GeneratorAdapter] that generates Dart test source code. class DartTestGeneratorAdapter implements GeneratorAdapter { /// Constructor for [DartTestGeneratorAdapter]. - const DartTestGeneratorAdapter(); + DartTestGeneratorAdapter(); @override - void generate(StringSink sink, PigeonOptions options, Root root) { + List fileTypeList = const [FileType.source]; + + @override + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader, @@ -441,7 +463,7 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options) { + IOSink? shouldGenerate(PigeonOptions options, FileType _) { if (options.dartTestOut != null) { return _openSink(options.dartTestOut); } else { @@ -453,50 +475,35 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { List validate(PigeonOptions options, Root root) => []; } -/// A [GeneratorAdapter] that generates Objective-C header code. -class ObjcHeaderGeneratorAdapter implements GeneratorAdapter { - /// Constructor for [ObjcHeaderGeneratorAdapter]. - const ObjcHeaderGeneratorAdapter(); - - @override - void generate(StringSink sink, PigeonOptions options, Root root) { - final ObjcOptions objcOptions = options.objcOptions ?? const ObjcOptions(); - final ObjcOptions objcOptionsWithHeader = objcOptions.merge(ObjcOptions( - copyrightHeader: options.copyrightHeader != null - ? _lineReader(options.copyrightHeader!) - : null)); - final ObjcGenerator generator = ObjcGenerator(); - generator.generate(objcOptionsWithHeader, root, sink, FileType.header); - } - - @override - IOSink? shouldGenerate(PigeonOptions options) => - _openSink(options.objcHeaderOut); +/// A [GeneratorAdapter] that generates Objective-C code. +class ObjcGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [ObjcGeneratorAdapter]. + ObjcGeneratorAdapter( + {this.fileTypeList = const [FileType.header, FileType.source]}); @override - List validate(PigeonOptions options, Root root) => - validateObjc(options.objcOptions!, root); -} - -/// A [GeneratorAdapter] that generates Objective-C source code. -class ObjcSourceGeneratorAdapter implements GeneratorAdapter { - /// Constructor for [ObjcSourceGeneratorAdapter]. - const ObjcSourceGeneratorAdapter(); + List fileTypeList; @override - void generate(StringSink sink, PigeonOptions options, Root root) { + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) { final ObjcOptions objcOptions = options.objcOptions ?? const ObjcOptions(); final ObjcOptions objcOptionsWithHeader = objcOptions.merge(ObjcOptions( copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); final ObjcGenerator generator = ObjcGenerator(); - generator.generate(objcOptionsWithHeader, root, sink, FileType.source); + generator.generate(objcOptionsWithHeader, root, sink, fileType); } @override - IOSink? shouldGenerate(PigeonOptions options) => - _openSink(options.objcSourceOut); + IOSink? shouldGenerate(PigeonOptions options, FileType fileType) { + if (fileType == FileType.source) { + return _openSink(options.objcSourceOut); + } else { + return _openSink(options.objcHeaderOut); + } + } @override List validate(PigeonOptions options, Root root) => []; @@ -505,10 +512,14 @@ class ObjcSourceGeneratorAdapter implements GeneratorAdapter { /// A [GeneratorAdapter] that generates Java source code. class JavaGeneratorAdapter implements GeneratorAdapter { /// Constructor for [JavaGeneratorAdapter]. - const JavaGeneratorAdapter(); + JavaGeneratorAdapter(); + + @override + List fileTypeList = const [FileType.source]; @override - void generate(StringSink sink, PigeonOptions options, Root root) { + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) { JavaOptions javaOptions = options.javaOptions ?? const JavaOptions(); javaOptions = javaOptions.merge(JavaOptions( className: javaOptions.className ?? @@ -517,11 +528,12 @@ class JavaGeneratorAdapter implements GeneratorAdapter { ? _lineReader(options.copyrightHeader!) : null)); final JavaGenerator generator = JavaGenerator(); - generator.generate(javaOptions, root, sink, FileType.source); + generator.generate(javaOptions, root, sink, fileType); } @override - IOSink? shouldGenerate(PigeonOptions options) => _openSink(options.javaOut); + IOSink? shouldGenerate(PigeonOptions options, FileType _) => + _openSink(options.javaOut); @override List validate(PigeonOptions options, Root root) => []; @@ -530,71 +542,60 @@ class JavaGeneratorAdapter implements GeneratorAdapter { /// A [GeneratorAdapter] that generates Swift source code. class SwiftGeneratorAdapter implements GeneratorAdapter { /// Constructor for [SwiftGeneratorAdapter]. - const SwiftGeneratorAdapter(); + SwiftGeneratorAdapter(); @override - void generate(StringSink sink, PigeonOptions options, Root root) { + List fileTypeList = const [FileType.source]; + + @override + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) { SwiftOptions swiftOptions = options.swiftOptions ?? const SwiftOptions(); swiftOptions = swiftOptions.merge(SwiftOptions( copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); final SwiftGenerator generator = SwiftGenerator(); - generator.generate(swiftOptions, root, sink, FileType.source); + generator.generate(swiftOptions, root, sink, fileType); } @override - IOSink? shouldGenerate(PigeonOptions options) => _openSink(options.swiftOut); + IOSink? shouldGenerate(PigeonOptions options, FileType _) => + _openSink(options.swiftOut); @override List validate(PigeonOptions options, Root root) => []; } -/// A [GeneratorAdapter] that generates C++ header code. -class CppHeaderGeneratorAdapter implements GeneratorAdapter { - /// Constructor for [CppHeaderGeneratorAdapter]. - const CppHeaderGeneratorAdapter(); - - @override - void generate(StringSink sink, PigeonOptions options, Root root) { - final CppOptions cppOptions = options.cppOptions ?? const CppOptions(); - final CppOptions cppOptionsWithHeader = cppOptions.merge(CppOptions( - headerOutPath: path.basenameWithoutExtension(options.cppHeaderOut!), - copyrightHeader: options.copyrightHeader != null - ? _lineReader(options.copyrightHeader!) - : null)); - final CppGenerator generator = CppGenerator(); - generator.generate(cppOptionsWithHeader, root, sink, FileType.header); - } - - @override - IOSink? shouldGenerate(PigeonOptions options) => - _openSink(options.cppHeaderOut); +/// A [GeneratorAdapter] that generates C++ source code. +class CppGeneratorAdapter implements GeneratorAdapter { + /// Constructor for [CppGeneratorAdapter]. + CppGeneratorAdapter( + {this.fileTypeList = const [FileType.header, FileType.source]}); @override - List validate(PigeonOptions options, Root root) => - validateCpp(options.cppOptions!, root); -} - -/// A [GeneratorAdapter] that generates C++ source code. -class CppSourceGeneratorAdapter implements GeneratorAdapter { - /// Constructor for [CppSourceGeneratorAdapter]. - const CppSourceGeneratorAdapter(); + List fileTypeList; @override - void generate(StringSink sink, PigeonOptions options, Root root) { + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) { final CppOptions cppOptions = options.cppOptions ?? const CppOptions(); final CppOptions cppOptionsWithHeader = cppOptions.merge(CppOptions( copyrightHeader: options.copyrightHeader != null ? _lineReader(options.copyrightHeader!) : null)); final CppGenerator generator = CppGenerator(); - generator.generate(cppOptionsWithHeader, root, sink, FileType.source); + generator.generate(cppOptionsWithHeader, root, sink, fileType); } @override - IOSink? shouldGenerate(PigeonOptions options) => - _openSink(options.cppSourceOut); + IOSink? shouldGenerate(PigeonOptions options, FileType fileType) { + if (fileType == FileType.source) { + return _openSink(options.cppSourceOut); + } else { + return _openSink(options.cppHeaderOut); + } + } @override List validate(PigeonOptions options, Root root) => []; @@ -603,10 +604,15 @@ class CppSourceGeneratorAdapter implements GeneratorAdapter { /// A [GeneratorAdapter] that generates Kotlin source code. class KotlinGeneratorAdapter implements GeneratorAdapter { /// Constructor for [KotlinGeneratorAdapter]. - const KotlinGeneratorAdapter(); + KotlinGeneratorAdapter( + {this.fileTypeList = const [FileType.source]}); + + @override + List fileTypeList; @override - void generate(StringSink sink, PigeonOptions options, Root root) { + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) { KotlinOptions kotlinOptions = options.kotlinOptions ?? const KotlinOptions(); kotlinOptions = kotlinOptions.merge(KotlinOptions( @@ -614,11 +620,12 @@ class KotlinGeneratorAdapter implements GeneratorAdapter { ? _lineReader(options.copyrightHeader!) : null)); final KotlinGenerator generator = KotlinGenerator(); - generator.generate(kotlinOptions, root, sink, FileType.source); + generator.generate(kotlinOptions, root, sink, fileType); } @override - IOSink? shouldGenerate(PigeonOptions options) => _openSink(options.kotlinOut); + IOSink? shouldGenerate(PigeonOptions options, FileType _) => + _openSink(options.kotlinOut); @override List validate(PigeonOptions options, Root root) => []; @@ -1367,16 +1374,14 @@ ${_argParser.usage}'''; } final List safeGeneratorAdapters = adapters ?? [ - const DartGeneratorAdapter(), - const JavaGeneratorAdapter(), - const SwiftGeneratorAdapter(), - const KotlinGeneratorAdapter(), - const CppHeaderGeneratorAdapter(), - const CppSourceGeneratorAdapter(), - const DartTestGeneratorAdapter(), - const ObjcHeaderGeneratorAdapter(), - const ObjcSourceGeneratorAdapter(), - const AstGeneratorAdapter(), + DartGeneratorAdapter(), + JavaGeneratorAdapter(), + SwiftGeneratorAdapter(), + KotlinGeneratorAdapter(), + CppGeneratorAdapter(), + DartTestGeneratorAdapter(), + ObjcGeneratorAdapter(), + AstGeneratorAdapter(), ]; _executeConfigurePigeon(options); @@ -1399,7 +1404,7 @@ ${_argParser.usage}'''; } for (final GeneratorAdapter adapter in safeGeneratorAdapters) { - final IOSink? sink = adapter.shouldGenerate(options); + final IOSink? sink = adapter.shouldGenerate(options, FileType.source); if (sink != null) { final List adapterErrors = adapter.validate(options, parseResults.root); @@ -1441,11 +1446,13 @@ ${_argParser.usage}'''; } for (final GeneratorAdapter adapter in safeGeneratorAdapters) { - final IOSink? sink = adapter.shouldGenerate(options); - if (sink != null) { - adapter.generate(sink, options, parseResults.root); - await sink.flush(); - await releaseSink(sink); + for (final FileType fileType in adapter.fileTypeList) { + final IOSink? sink = adapter.shouldGenerate(options, fileType); + if (sink != null) { + adapter.generate(sink, options, parseResults.root, fileType); + await sink.flush(); + await releaseSink(sink); + } } } diff --git a/packages/pigeon/test/pigeon_lib_test.dart b/packages/pigeon/test/pigeon_lib_test.dart index 8d06f78cecc..1ff074d3a0f 100644 --- a/packages/pigeon/test/pigeon_lib_test.dart +++ b/packages/pigeon/test/pigeon_lib_test.dart @@ -6,20 +6,26 @@ import 'dart:async'; import 'dart:io'; import 'package:pigeon/ast.dart'; +import 'package:pigeon/generator_tools.dart'; import 'package:pigeon/pigeon_lib.dart'; import 'package:test/test.dart'; class _ValidatorGeneratorAdapter implements GeneratorAdapter { _ValidatorGeneratorAdapter(this.sink); + + @override + List fileTypeList = const [FileType.source]; + bool didCallValidate = false; final IOSink? sink; @override - void generate(StringSink sink, PigeonOptions options, Root root) {} + void generate( + StringSink sink, PigeonOptions options, Root root, FileType fileType) {} @override - IOSink? shouldGenerate(PigeonOptions options) => sink; + IOSink? shouldGenerate(PigeonOptions options, FileType _) => sink; @override List validate(PigeonOptions options, Root root) { @@ -397,9 +403,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const DartGeneratorAdapter dartGeneratorAdapter = DartGeneratorAdapter(); + final DartGeneratorAdapter dartGeneratorAdapter = DartGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - dartGeneratorAdapter.generate(buffer, options, root); + dartGeneratorAdapter.generate(buffer, options, root, FileType.source); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -407,9 +413,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( javaOut: 'Foo.java', copyrightHeader: './copyright_header.txt'); - const JavaGeneratorAdapter javaGeneratorAdapter = JavaGeneratorAdapter(); + final JavaGeneratorAdapter javaGeneratorAdapter = JavaGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - javaGeneratorAdapter.generate(buffer, options, root); + javaGeneratorAdapter.generate(buffer, options, root, FileType.source); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -417,10 +423,10 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const ObjcHeaderGeneratorAdapter objcHeaderGeneratorAdapter = - ObjcHeaderGeneratorAdapter(); + final ObjcGeneratorAdapter objcHeaderGeneratorAdapter = + ObjcGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - objcHeaderGeneratorAdapter.generate(buffer, options, root); + objcHeaderGeneratorAdapter.generate(buffer, options, root, FileType.header); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -428,10 +434,10 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const ObjcSourceGeneratorAdapter objcSourceGeneratorAdapter = - ObjcSourceGeneratorAdapter(); + final ObjcGeneratorAdapter objcSourceGeneratorAdapter = + ObjcGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - objcSourceGeneratorAdapter.generate(buffer, options, root); + objcSourceGeneratorAdapter.generate(buffer, options, root, FileType.source); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -439,9 +445,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( swiftOut: 'Foo.swift', copyrightHeader: './copyright_header.txt'); - const SwiftGeneratorAdapter swiftGeneratorAdapter = SwiftGeneratorAdapter(); + final SwiftGeneratorAdapter swiftGeneratorAdapter = SwiftGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - swiftGeneratorAdapter.generate(buffer, options, root); + swiftGeneratorAdapter.generate(buffer, options, root, FileType.source); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -449,10 +455,9 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions( cppHeaderOut: 'Foo.h', copyrightHeader: './copyright_header.txt'); - const CppHeaderGeneratorAdapter cppHeaderGeneratorAdapter = - CppHeaderGeneratorAdapter(); + final CppGeneratorAdapter cppHeaderGeneratorAdapter = CppGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - cppHeaderGeneratorAdapter.generate(buffer, options, root); + cppHeaderGeneratorAdapter.generate(buffer, options, root, FileType.header); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -460,10 +465,10 @@ abstract class NestorApi { final Root root = Root(apis: [], classes: [], enums: []); const PigeonOptions options = PigeonOptions(copyrightHeader: './copyright_header.txt'); - const CppSourceGeneratorAdapter cppSourceGeneratorAdapter = - CppSourceGeneratorAdapter(); + final CppGeneratorAdapter cppSourceGeneratorAdapter = + CppGeneratorAdapter(fileTypeList: [FileType.source]); final StringBuffer buffer = StringBuffer(); - cppSourceGeneratorAdapter.generate(buffer, options, root); + cppSourceGeneratorAdapter.generate(buffer, options, root, FileType.source); expect(buffer.toString(), startsWith('// Copyright 2013')); }); @@ -933,10 +938,10 @@ abstract class Api { dartTestOut: 'stdout', dartOut: 'stdout', ); - const DartTestGeneratorAdapter dartGeneratorAdapter = + final DartTestGeneratorAdapter dartGeneratorAdapter = DartTestGeneratorAdapter(); final StringBuffer buffer = StringBuffer(); - dartGeneratorAdapter.generate(buffer, options, root); + dartGeneratorAdapter.generate(buffer, options, root, FileType.source); expect(buffer.toString(), startsWith('// Copyright 2013')); }); From 29decb9c934378483137aacc74a0189ee4515f58 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 30 Dec 2022 13:12:33 -0800 Subject: [PATCH 26/27] nits --- packages/pigeon/lib/cpp_generator.dart | 2 +- packages/pigeon/lib/dart_generator.dart | 2 +- packages/pigeon/lib/pigeon_lib.dart | 23 ++++++++++++----------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/pigeon/lib/cpp_generator.dart b/packages/pigeon/lib/cpp_generator.dart index fbb90b39483..d5cce4c5744 100644 --- a/packages/pigeon/lib/cpp_generator.dart +++ b/packages/pigeon/lib/cpp_generator.dart @@ -70,7 +70,7 @@ class CppOptions { } } -/// Class that manages all Cpp header code generation. +/// Class that manages all Cpp code generation. class CppGenerator extends Generator { /// Instantiates a Cpp Generator. CppGenerator(); diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index f450d2ddeaa..5a38061ec8e 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -34,7 +34,7 @@ class DartOptions { /// A copyright header that will get prepended to generated code. final Iterable? copyrightHeader; - /// Path to output generated Dart file for tests. + /// Path to output generated Dart file. String? sourceOutPath; /// Path to output generated Test file for tests. diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index 4e949ec3dd3..d54f64d3bf0 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -361,27 +361,28 @@ abstract class GeneratorAdapter { /// Constructor for [GeneratorAdapter] GeneratorAdapter(this.fileTypeList); - /// A list of [FileType] - /// Used to tell the generator method which type of file to create. + /// A list of file types the generator should create. List fileTypeList; - /// Returns an [IOSink] instance to be written to if the [GeneratorAdapter] should - /// generate. If it returns `null`, the [GeneratorAdapter] will be skipped. + /// Returns an [IOSink] instance to be written to + /// if the [GeneratorAdapter] should generate. + /// + /// If it returns `null`, the [GeneratorAdapter] will be skipped. IOSink? shouldGenerate(PigeonOptions options, FileType fileType); - /// Write the generated code described in [root] to [sink] using the - /// [options]. + /// Write the generated code described in [root] to [sink] using the [options]. void generate( StringSink sink, PigeonOptions options, Root root, FileType fileType); - /// Generates errors that would only be appropriate for this [GeneratorAdapter]. For - /// example, maybe a certain feature isn't implemented in a [GeneratorAdapter] yet. + /// Generates errors that would only be appropriate for this [GeneratorAdapter]. + /// + /// For example, if a certain feature isn't implemented in a [GeneratorAdapter] yet. List validate(PigeonOptions options, Root root); } DartOptions _dartOptionsWithCopyrightHeader( DartOptions? dartOptions, String? copyrightHeader, - [String? dartOutPath, String? testOutPath]) { + {String? dartOutPath, String? testOutPath}) { dartOptions = dartOptions ?? DartOptions(); return dartOptions.merge(DartOptions( sourceOutPath: dartOutPath, @@ -451,8 +452,8 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader, - options.dartOut, - options.dartTestOut, + dartOutPath: options.dartOut, + testOutPath: options.dartTestOut, ); final DartGenerator testGenerator = DartGenerator(); testGenerator.generateTest( From b7abbe402c2c0a0588ec65311aab65fd9eecd4c0 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Mon, 2 Jan 2023 23:33:08 -0800 Subject: [PATCH 27/27] assert --- packages/pigeon/lib/dart_generator.dart | 5 +++-- packages/pigeon/lib/java_generator.dart | 5 +++-- packages/pigeon/lib/kotlin_generator.dart | 5 +++-- packages/pigeon/lib/swift_generator.dart | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/pigeon/lib/dart_generator.dart b/packages/pigeon/lib/dart_generator.dart index 5a38061ec8e..852b3cfa08c 100644 --- a/packages/pigeon/lib/dart_generator.dart +++ b/packages/pigeon/lib/dart_generator.dart @@ -77,8 +77,9 @@ class DartGenerator extends Generator { /// Generates Dart files with specified [DartOptions] @override - void generate( - DartOptions languageOptions, Root root, StringSink sink, FileType _) { + void generate(DartOptions languageOptions, Root root, StringSink sink, + FileType fileType) { + assert(fileType == FileType.source); generateDart(languageOptions, root, sink); } diff --git a/packages/pigeon/lib/java_generator.dart b/packages/pigeon/lib/java_generator.dart index e7b2ebcaf18..d62612db23d 100644 --- a/packages/pigeon/lib/java_generator.dart +++ b/packages/pigeon/lib/java_generator.dart @@ -92,8 +92,9 @@ class JavaGenerator extends Generator { /// Generates Java files with specified [JavaOptions] @override - void generate( - JavaOptions languageOptions, Root root, StringSink sink, FileType _) { + void generate(JavaOptions languageOptions, Root root, StringSink sink, + FileType fileType) { + assert(fileType == FileType.source); generateJava(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/kotlin_generator.dart b/packages/pigeon/lib/kotlin_generator.dart index a570da4674b..07855c226b1 100644 --- a/packages/pigeon/lib/kotlin_generator.dart +++ b/packages/pigeon/lib/kotlin_generator.dart @@ -72,8 +72,9 @@ class KotlinGenerator extends Generator { /// Generates Kotlin files with specified [KotlinOptions] @override - void generate( - KotlinOptions languageOptions, Root root, StringSink sink, FileType _) { + void generate(KotlinOptions languageOptions, Root root, StringSink sink, + FileType fileType) { + assert(fileType == FileType.source); generateKotlin(languageOptions, root, sink); } } diff --git a/packages/pigeon/lib/swift_generator.dart b/packages/pigeon/lib/swift_generator.dart index 45c15341116..6a278344d00 100644 --- a/packages/pigeon/lib/swift_generator.dart +++ b/packages/pigeon/lib/swift_generator.dart @@ -55,8 +55,9 @@ class SwiftGenerator extends Generator { /// Generates Swift files with specified [SwiftOptions] @override - void generate( - SwiftOptions languageOptions, Root root, StringSink sink, FileType _) { + void generate(SwiftOptions languageOptions, Root root, StringSink sink, + FileType fileType) { + assert(fileType == FileType.source); generateSwift(languageOptions, root, sink); } }