Skip to content

[pigeon] Adds StructuredGenerator class and subclasses - #3037

Merged
auto-submit[bot] merged 112 commits into
flutter:mainfrom
tarrinneal:againWithFlair
Jan 13, 2023
Merged

auto-submit[bot] merged 112 commits into
flutter:mainfrom
tarrinneal:againWithFlair

Conversation

@tarrinneal

@tarrinneal tarrinneal commented Jan 11, 2023 •

Copy link
Copy Markdown
Contributor

Adds StructuredGenerator class and subclasses

fixes flutter/flutter#117416

Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/kotlin_generator.dart

@gaaclarke gaaclarke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, I have a few nits below. I also think the namespace code could have space in the abstract base class and that encode/decode implementations are empty but that could be addressed later if we want.

Comment thread packages/pigeon/lib/generator.dart
Comment thread packages/pigeon/lib/cpp_generator.dart Outdated
Comment thread packages/pigeon/lib/cpp_generator.dart Outdated
Comment thread packages/pigeon/lib/cpp_generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
@stuartmorgan-g

Copy link
Copy Markdown
Collaborator

Merge branch 'main' of github.com:flutter/packages into againWithFlair

Sorry I didn't get a chance to do this today; I started but didn't get very far. Hopefully it wasn't too painful to integrate my change.

@stuartmorgan-g stuartmorgan-g left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a few small comments, and one larger comment for later consideration, but overall this looks great. Having this coherent structure will be a really big win for maintainability even before we potentially start extracting more shared logic.

I also really, really like having the checked in output files for this kind of PR. Being able to see the (trivial) output changes makes it really easy to have confidence that nothing got accidentally changed in the reorganizing.

Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
) {
final Indent indent = Indent(sink);

writeFilePrologue(generatorOptions, root, sink, indent);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(At some point I'd like to revisit whether these other things that are passed to literally every method could be instance variables instead, but since they can't be constructor arguments due to the way generate is set up let's have that discussion later so it doesn't block this PR.)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer to avoid the repeating parameters also

Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h Outdated
Comment thread packages/pigeon/lib/cpp_generator.dart
Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
Comment thread packages/pigeon/platform_tests/test_plugin/windows/pigeon/core_tests.gen.h Outdated
Comment thread packages/pigeon/lib/generator.dart Outdated
@tarrinneal tarrinneal added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 13, 2023
@auto-submit
auto-submit Bot merged commit 37e2bab into flutter:main Jan 13, 2023
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
* Rename generator class to Adapter

* create new generator class and dart subclass

* cpp and dart test gen

* added files

* Adds Generator class to all generators

* adds swift

* Updates tests to use new Adapter naming scheme

* Dart generate methods

* convert all generate functions to use new method

* chagngelog

* remove Generator class fields

* move paths to options

* remove dartTestOptions

* Moves write header to generator class method

* Updates tests to use new generator class

* source -> header

* correct options

* header -> source

* header -> prefix, source -> header

* remove headers from generateTestDart

* changelog

* Nits and combines source and header generators

* renames Adapter to GeneratorAdapter

* Update version number for breaking changes

* nits

* more personal nits

* update tests to match new merged generators

* cleaner header methods

* Fixes dart header bug

* add gen files for clarity

* better field naming

* better field naming

* removed unneeded dart test generator

* Add filetype to generator

* Adds filetype as field to generatorAdapters

* merge

* analyze

* add import method

* re-remove DartTestGenerator

* Moves imports to new method

* adds writeEnum method to generator class

* nits

* assert

* objc enum

* fix code order issues

* add writeDataClass method

* remove writeMainClass from java

* java + kotlin

* remove dead code

* swift

* fix dart test error

* cpp + objc

* objc + cpp

* Move all migrated methods into class

* Creates writeHeader method on Generator classes

* private unique methods and reorder

* changelog

* changelog

* changelog

* changelog

* prologue

* gen

* dart

* java

* kotlin

* swift

* cpp

* objc

* remove unneeded java method

* analyze

* single file gens

* objc

* Cpp

* analyze

* vocab

* vocab

* typo

* less comma

* wrap write methods

* move code from writeGeneralUtilities

* update changelog

* adds open and close namespace and fixes nits

* makes writeEnum optional

* remove unneeded sink

* remove unneeded namespace from guardname

* [indent]

* clean up
bisor0627 pushed a commit to bisor0627/packages that referenced this pull request Jun 19, 2026
* Rename generator class to Adapter

* create new generator class and dart subclass

* cpp and dart test gen

* added files

* Adds Generator class to all generators

* adds swift

* Updates tests to use new Adapter naming scheme

* Dart generate methods

* convert all generate functions to use new method

* chagngelog

* remove Generator class fields

* move paths to options

* remove dartTestOptions

* Moves write header to generator class method

* Updates tests to use new generator class

* source -> header

* correct options

* header -> source

* header -> prefix, source -> header

* remove headers from generateTestDart

* changelog

* Nits and combines source and header generators

* renames Adapter to GeneratorAdapter

* Update version number for breaking changes

* nits

* more personal nits

* update tests to match new merged generators

* cleaner header methods

* Fixes dart header bug

* add gen files for clarity

* better field naming

* better field naming

* removed unneeded dart test generator

* Add filetype to generator

* Adds filetype as field to generatorAdapters

* merge

* analyze

* add import method

* re-remove DartTestGenerator

* Moves imports to new method

* adds writeEnum method to generator class

* nits

* assert

* objc enum

* fix code order issues

* add writeDataClass method

* remove writeMainClass from java

* java + kotlin

* remove dead code

* swift

* fix dart test error

* cpp + objc

* objc + cpp

* Move all migrated methods into class

* Creates writeHeader method on Generator classes

* private unique methods and reorder

* changelog

* changelog

* changelog

* changelog

* prologue

* gen

* dart

* java

* kotlin

* swift

* cpp

* objc

* remove unneeded java method

* analyze

* single file gens

* objc

* Cpp

* analyze

* vocab

* vocab

* typo

* less comma

* wrap write methods

* move code from writeGeneralUtilities

* update changelog

* adds open and close namespace and fixes nits

* makes writeEnum optional

* remove unneeded sink

* remove unneeded namespace from guardname

* [indent]

* clean up
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App p: pigeon

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[pigeon] Restructure generators to create more consistent structure amongst generator code

3 participants