From 2611c6e7d160fc0fc209f46d6a3a772466eb898d Mon Sep 17 00:00:00 2001 From: Nitin Date: Thu, 13 Jul 2023 21:23:12 +0530 Subject: [PATCH 01/11] create files before writing in it --- packages/pigeon/lib/pigeon_lib.dart | 54 +++++++++++++++++------------ 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index ae5d7ad346d..d5d36dbba81 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -379,7 +379,7 @@ Iterable _lineReader(String path) sync* { } } -IOSink? _openSink(String? output, {String basePath = ''}) { +Future _openSink(String? output, {String basePath = ''}) async { if (output == null) { return null; } @@ -389,6 +389,7 @@ IOSink? _openSink(String? output, {String basePath = ''}) { sink = stdout; } else { file = File(path.posix.join(basePath, output)); + await file.create(recursive: true); sink = file.openWrite(); } return sink; @@ -407,7 +408,7 @@ abstract class GeneratorAdapter { /// if the [GeneratorAdapter] should generate. /// /// If it returns `null`, the [GeneratorAdapter] will be skipped. - IOSink? shouldGenerate(PigeonOptions options, FileType fileType); + Future shouldGenerate(PigeonOptions options, FileType fileType); /// Write the generated code described in [root] to [sink] using the [options]. void generate( @@ -451,8 +452,8 @@ class AstGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options, FileType _) => - _openSink(options.astOut, basePath: options.basePath ?? ''); + Future shouldGenerate(PigeonOptions options, FileType _) async => + await _openSink(options.astOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -472,6 +473,7 @@ class DartGeneratorAdapter implements GeneratorAdapter { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader, + dartOutPath: options.dartOut, basePath: options.basePath ?? '', ); const DartGenerator generator = DartGenerator(); @@ -484,8 +486,8 @@ class DartGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options, FileType _) => - _openSink(options.dartOut, basePath: options.basePath ?? ''); + Future shouldGenerate(PigeonOptions options, FileType _) async => + await _openSink(options.dartOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -524,9 +526,10 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options, FileType _) { + Future shouldGenerate(PigeonOptions options, FileType _) async { if (options.dartTestOut != null) { - return _openSink(options.dartTestOut, basePath: options.basePath ?? ''); + return await _openSink(options.dartTestOut, + basePath: options.basePath ?? ''); } else { return null; } @@ -568,11 +571,14 @@ class ObjcGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options, FileType fileType) { + Future shouldGenerate( + PigeonOptions options, FileType fileType) async { if (fileType == FileType.source) { - return _openSink(options.objcSourceOut, basePath: options.basePath ?? ''); + return await _openSink(options.objcSourceOut, + basePath: options.basePath ?? ''); } else { - return _openSink(options.objcHeaderOut, basePath: options.basePath ?? ''); + return await _openSink(options.objcHeaderOut, + basePath: options.basePath ?? ''); } } @@ -610,8 +616,8 @@ class JavaGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options, FileType _) => - _openSink(options.javaOut, basePath: options.basePath ?? ''); + Future shouldGenerate(PigeonOptions options, FileType _) async => + await _openSink(options.javaOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -645,8 +651,8 @@ class SwiftGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options, FileType _) => - _openSink(options.swiftOut, basePath: options.basePath ?? ''); + Future shouldGenerate(PigeonOptions options, FileType _) async => + await _openSink(options.swiftOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -684,11 +690,14 @@ class CppGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options, FileType fileType) { + Future shouldGenerate( + PigeonOptions options, FileType fileType) async { if (fileType == FileType.source) { - return _openSink(options.cppSourceOut, basePath: options.basePath ?? ''); + return await _openSink(options.cppSourceOut, + basePath: options.basePath ?? ''); } else { - return _openSink(options.cppHeaderOut, basePath: options.basePath ?? ''); + return await _openSink(options.cppHeaderOut, + basePath: options.basePath ?? ''); } } @@ -726,8 +735,8 @@ class KotlinGeneratorAdapter implements GeneratorAdapter { } @override - IOSink? shouldGenerate(PigeonOptions options, FileType _) => - _openSink(options.kotlinOut, basePath: options.basePath ?? ''); + Future shouldGenerate(PigeonOptions options, FileType _) async => + await _openSink(options.kotlinOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -1562,7 +1571,8 @@ ${_argParser.usage}'''; } for (final GeneratorAdapter adapter in safeGeneratorAdapters) { - final IOSink? sink = adapter.shouldGenerate(options, FileType.source); + final IOSink? sink = + await adapter.shouldGenerate(options, FileType.source); if (sink != null) { final List adapterErrors = adapter.validate(options, parseResults.root); @@ -1605,7 +1615,7 @@ ${_argParser.usage}'''; for (final GeneratorAdapter adapter in safeGeneratorAdapters) { for (final FileType fileType in adapter.fileTypeList) { - final IOSink? sink = adapter.shouldGenerate(options, fileType); + final IOSink? sink = await adapter.shouldGenerate(options, fileType); if (sink != null) { adapter.generate(sink, options, parseResults.root, fileType); await sink.flush(); From f90f49f1903bd5aa810409670bd941bf612471c0 Mon Sep 17 00:00:00 2001 From: Nitin Date: Thu, 13 Jul 2023 21:37:23 +0530 Subject: [PATCH 02/11] removed unnecessary awaits --- packages/pigeon/lib/pigeon_lib.dart | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index d5d36dbba81..db5d9260b9c 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -453,7 +453,7 @@ class AstGeneratorAdapter implements GeneratorAdapter { @override Future shouldGenerate(PigeonOptions options, FileType _) async => - await _openSink(options.astOut, basePath: options.basePath ?? ''); + _openSink(options.astOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -487,7 +487,7 @@ class DartGeneratorAdapter implements GeneratorAdapter { @override Future shouldGenerate(PigeonOptions options, FileType _) async => - await _openSink(options.dartOut, basePath: options.basePath ?? ''); + _openSink(options.dartOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -528,8 +528,7 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { @override Future shouldGenerate(PigeonOptions options, FileType _) async { if (options.dartTestOut != null) { - return await _openSink(options.dartTestOut, - basePath: options.basePath ?? ''); + return _openSink(options.dartTestOut, basePath: options.basePath ?? ''); } else { return null; } @@ -574,11 +573,9 @@ class ObjcGeneratorAdapter implements GeneratorAdapter { Future shouldGenerate( PigeonOptions options, FileType fileType) async { if (fileType == FileType.source) { - return await _openSink(options.objcSourceOut, - basePath: options.basePath ?? ''); + return _openSink(options.objcSourceOut, basePath: options.basePath ?? ''); } else { - return await _openSink(options.objcHeaderOut, - basePath: options.basePath ?? ''); + return _openSink(options.objcHeaderOut, basePath: options.basePath ?? ''); } } @@ -617,7 +614,7 @@ class JavaGeneratorAdapter implements GeneratorAdapter { @override Future shouldGenerate(PigeonOptions options, FileType _) async => - await _openSink(options.javaOut, basePath: options.basePath ?? ''); + _openSink(options.javaOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -652,7 +649,7 @@ class SwiftGeneratorAdapter implements GeneratorAdapter { @override Future shouldGenerate(PigeonOptions options, FileType _) async => - await _openSink(options.swiftOut, basePath: options.basePath ?? ''); + _openSink(options.swiftOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; @@ -693,11 +690,9 @@ class CppGeneratorAdapter implements GeneratorAdapter { Future shouldGenerate( PigeonOptions options, FileType fileType) async { if (fileType == FileType.source) { - return await _openSink(options.cppSourceOut, - basePath: options.basePath ?? ''); + return _openSink(options.cppSourceOut, basePath: options.basePath ?? ''); } else { - return await _openSink(options.cppHeaderOut, - basePath: options.basePath ?? ''); + return _openSink(options.cppHeaderOut, basePath: options.basePath ?? ''); } } @@ -736,7 +731,7 @@ class KotlinGeneratorAdapter implements GeneratorAdapter { @override Future shouldGenerate(PigeonOptions options, FileType _) async => - await _openSink(options.kotlinOut, basePath: options.basePath ?? ''); + _openSink(options.kotlinOut, basePath: options.basePath ?? ''); @override List validate(PigeonOptions options, Root root) => []; From e51dbe3011dc7a8272167efded23b64aceef9e24 Mon Sep 17 00:00:00 2001 From: Nitin Date: Thu, 13 Jul 2023 21:50:12 +0530 Subject: [PATCH 03/11] fixed error in test file --- packages/pigeon/test/pigeon_lib_test.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pigeon/test/pigeon_lib_test.dart b/packages/pigeon/test/pigeon_lib_test.dart index 7e7cc216d8c..7c1ef6f9ec6 100644 --- a/packages/pigeon/test/pigeon_lib_test.dart +++ b/packages/pigeon/test/pigeon_lib_test.dart @@ -25,7 +25,8 @@ class _ValidatorGeneratorAdapter implements GeneratorAdapter { StringSink sink, PigeonOptions options, Root root, FileType fileType) {} @override - IOSink? shouldGenerate(PigeonOptions options, FileType _) => sink; + Future shouldGenerate(PigeonOptions options, FileType _) async => + sink; @override List validate(PigeonOptions options, Root root) { From 74643016aec86e97770d9aa1bb0dabcd6af4e89e Mon Sep 17 00:00:00 2001 From: Nitin Date: Fri, 21 Jul 2023 19:32:54 +0530 Subject: [PATCH 04/11] reverted all functions signatures and used createSync() function instead --- packages/pigeon/lib/pigeon_lib.dart | 29 ++++++++++------------- packages/pigeon/test/pigeon_lib_test.dart | 3 +-- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index db5d9260b9c..e8ff2b9afd6 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -379,7 +379,7 @@ Iterable _lineReader(String path) sync* { } } -Future _openSink(String? output, {String basePath = ''}) async { +IOSink? _openSink(String? output, {String basePath = ''}) { if (output == null) { return null; } @@ -389,7 +389,7 @@ Future _openSink(String? output, {String basePath = ''}) async { sink = stdout; } else { file = File(path.posix.join(basePath, output)); - await file.create(recursive: true); + file.createSync(recursive: true); sink = file.openWrite(); } return sink; @@ -408,7 +408,7 @@ abstract class GeneratorAdapter { /// if the [GeneratorAdapter] should generate. /// /// If it returns `null`, the [GeneratorAdapter] will be skipped. - Future shouldGenerate(PigeonOptions options, FileType fileType); + IOSink? shouldGenerate(PigeonOptions options, FileType fileType); /// Write the generated code described in [root] to [sink] using the [options]. void generate( @@ -452,7 +452,7 @@ class AstGeneratorAdapter implements GeneratorAdapter { } @override - Future shouldGenerate(PigeonOptions options, FileType _) async => + IOSink? shouldGenerate(PigeonOptions options, FileType _) => _openSink(options.astOut, basePath: options.basePath ?? ''); @override @@ -486,7 +486,7 @@ class DartGeneratorAdapter implements GeneratorAdapter { } @override - Future shouldGenerate(PigeonOptions options, FileType _) async => + IOSink? shouldGenerate(PigeonOptions options, FileType _) => _openSink(options.dartOut, basePath: options.basePath ?? ''); @override @@ -526,7 +526,7 @@ class DartTestGeneratorAdapter implements GeneratorAdapter { } @override - Future shouldGenerate(PigeonOptions options, FileType _) async { + IOSink? shouldGenerate(PigeonOptions options, FileType _) { if (options.dartTestOut != null) { return _openSink(options.dartTestOut, basePath: options.basePath ?? ''); } else { @@ -570,8 +570,7 @@ class ObjcGeneratorAdapter implements GeneratorAdapter { } @override - Future shouldGenerate( - PigeonOptions options, FileType fileType) async { + IOSink? shouldGenerate(PigeonOptions options, FileType fileType) { if (fileType == FileType.source) { return _openSink(options.objcSourceOut, basePath: options.basePath ?? ''); } else { @@ -613,7 +612,7 @@ class JavaGeneratorAdapter implements GeneratorAdapter { } @override - Future shouldGenerate(PigeonOptions options, FileType _) async => + IOSink? shouldGenerate(PigeonOptions options, FileType _) => _openSink(options.javaOut, basePath: options.basePath ?? ''); @override @@ -648,7 +647,7 @@ class SwiftGeneratorAdapter implements GeneratorAdapter { } @override - Future shouldGenerate(PigeonOptions options, FileType _) async => + IOSink? shouldGenerate(PigeonOptions options, FileType _) => _openSink(options.swiftOut, basePath: options.basePath ?? ''); @override @@ -687,8 +686,7 @@ class CppGeneratorAdapter implements GeneratorAdapter { } @override - Future shouldGenerate( - PigeonOptions options, FileType fileType) async { + IOSink? shouldGenerate(PigeonOptions options, FileType fileType) { if (fileType == FileType.source) { return _openSink(options.cppSourceOut, basePath: options.basePath ?? ''); } else { @@ -730,7 +728,7 @@ class KotlinGeneratorAdapter implements GeneratorAdapter { } @override - Future shouldGenerate(PigeonOptions options, FileType _) async => + IOSink? shouldGenerate(PigeonOptions options, FileType _) => _openSink(options.kotlinOut, basePath: options.basePath ?? ''); @override @@ -1566,8 +1564,7 @@ ${_argParser.usage}'''; } for (final GeneratorAdapter adapter in safeGeneratorAdapters) { - final IOSink? sink = - await adapter.shouldGenerate(options, FileType.source); + final IOSink? sink = adapter.shouldGenerate(options, FileType.source); if (sink != null) { final List adapterErrors = adapter.validate(options, parseResults.root); @@ -1610,7 +1607,7 @@ ${_argParser.usage}'''; for (final GeneratorAdapter adapter in safeGeneratorAdapters) { for (final FileType fileType in adapter.fileTypeList) { - final IOSink? sink = await adapter.shouldGenerate(options, fileType); + final IOSink? sink = adapter.shouldGenerate(options, fileType); if (sink != null) { adapter.generate(sink, options, parseResults.root, fileType); await sink.flush(); diff --git a/packages/pigeon/test/pigeon_lib_test.dart b/packages/pigeon/test/pigeon_lib_test.dart index 7c1ef6f9ec6..7e7cc216d8c 100644 --- a/packages/pigeon/test/pigeon_lib_test.dart +++ b/packages/pigeon/test/pigeon_lib_test.dart @@ -25,8 +25,7 @@ class _ValidatorGeneratorAdapter implements GeneratorAdapter { StringSink sink, PigeonOptions options, Root root, FileType fileType) {} @override - Future shouldGenerate(PigeonOptions options, FileType _) async => - sink; + IOSink? shouldGenerate(PigeonOptions options, FileType _) => sink; @override List validate(PigeonOptions options, Root root) { From c659eac234720998f731b6dd4e52fe0d761de371 Mon Sep 17 00:00:00 2001 From: Nitin Date: Fri, 21 Jul 2023 22:07:20 +0530 Subject: [PATCH 05/11] added a test to check writing to a file in a directory that doesn't exist --- packages/pigeon/tool/shared/test_suites.dart | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/pigeon/tool/shared/test_suites.dart b/packages/pigeon/tool/shared/test_suites.dart index 5e45c31ff5c..6a234c2af5a 100644 --- a/packages/pigeon/tool/shared/test_suites.dart +++ b/packages/pigeon/tool/shared/test_suites.dart @@ -366,6 +366,13 @@ Future _runCommandLineTests() async { '--ast_out', tempOutput ], + // Test writing a file in a directory that doesn't exist + [ + '--input', + 'pigeons/message.dart', + '--dart_out', + '$tempDir/subdirectory/message.g.dart', + ], ]; int exitCode = 0; From fc9f6382cb82acbd62ee2e51000a56794f474805 Mon Sep 17 00:00:00 2001 From: Nitin Date: Mon, 31 Jul 2023 20:51:18 +0530 Subject: [PATCH 06/11] added path to directory that doesn't exists in end-to-end test --- packages/pigeon/tool/shared/test_suites.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/tool/shared/test_suites.dart b/packages/pigeon/tool/shared/test_suites.dart index 6a234c2af5a..e48d18b3df4 100644 --- a/packages/pigeon/tool/shared/test_suites.dart +++ b/packages/pigeon/tool/shared/test_suites.dart @@ -371,7 +371,7 @@ Future _runCommandLineTests() async { '--input', 'pigeons/message.dart', '--dart_out', - '$tempDir/subdirectory/message.g.dart', + '$tempDir/subdirectory/does/not/exist/message.g.dart', ], ]; From 2cb30a01bb0c6e25e8885d28aa5ebd7afdef6ee9 Mon Sep 17 00:00:00 2001 From: Nitin Date: Sat, 5 Aug 2023 12:54:28 +0530 Subject: [PATCH 07/11] updated the version in alignment with the changes made to the upstream main branch --- 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 1cd08060900..46a1612ab73 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,3 +1,7 @@ +## 10.1.6 + +* Creates target files before trying to write to it. + ## 10.1.5 * Fixes import in generated Dart test output when overriding package name. diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index 62113aeef65..19e05709cd2 100644 --- a/packages/pigeon/lib/generator_tools.dart +++ b/packages/pigeon/lib/generator_tools.dart @@ -13,7 +13,7 @@ import 'ast.dart'; /// The current version of pigeon. /// /// This must match the version in pubspec.yaml. -const String pigeonVersion = '10.1.5'; +const String pigeonVersion = '10.1.6'; /// Read all the content from [stdin] to a String. String readStdin() { diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index 90c81d7287e..68516fcfa6d 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: 10.1.5 # This must match the version in lib/generator_tools.dart +version: 10.1.6 # This must match the version in lib/generator_tools.dart environment: sdk: ">=2.19.0 <4.0.0" From 88ed03ccc8eb774761a835a6efa58e531584e3eb Mon Sep 17 00:00:00 2001 From: Nitin Date: Mon, 7 Aug 2023 23:01:09 +0530 Subject: [PATCH 08/11] revised version description --- packages/pigeon/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 46a1612ab73..27bba019ce0 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,6 +1,6 @@ ## 10.1.6 -* Creates target files before trying to write to it. +* How about Fixes generation failures when an output file is in a directory that doesn't already exist. ## 10.1.5 From 83972c9715f3565f8d288b39b12d74ca365bacce Mon Sep 17 00:00:00 2001 From: Nitin Date: Mon, 7 Aug 2023 23:01:24 +0530 Subject: [PATCH 09/11] removed unnecessary changes --- packages/pigeon/lib/pigeon_lib.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/pigeon/lib/pigeon_lib.dart b/packages/pigeon/lib/pigeon_lib.dart index e8ff2b9afd6..10a6af57b0f 100644 --- a/packages/pigeon/lib/pigeon_lib.dart +++ b/packages/pigeon/lib/pigeon_lib.dart @@ -473,7 +473,6 @@ class DartGeneratorAdapter implements GeneratorAdapter { final DartOptions dartOptionsWithHeader = _dartOptionsWithCopyrightHeader( options.dartOptions, options.copyrightHeader, - dartOutPath: options.dartOut, basePath: options.basePath ?? '', ); const DartGenerator generator = DartGenerator(); From 56a5fece061faa7db6633d55ffcf415548e4f001 Mon Sep 17 00:00:00 2001 From: Nitin Date: Mon, 7 Aug 2023 23:02:00 +0530 Subject: [PATCH 10/11] added missing period --- packages/pigeon/tool/shared/test_suites.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/tool/shared/test_suites.dart b/packages/pigeon/tool/shared/test_suites.dart index e48d18b3df4..1a5b853087c 100644 --- a/packages/pigeon/tool/shared/test_suites.dart +++ b/packages/pigeon/tool/shared/test_suites.dart @@ -366,7 +366,7 @@ Future _runCommandLineTests() async { '--ast_out', tempOutput ], - // Test writing a file in a directory that doesn't exist + // Test writing a file in a directory that doesn't exist. [ '--input', 'pigeons/message.dart', From 9da076cc635df498d753e7e3864aeecb00bcaa3d Mon Sep 17 00:00:00 2001 From: Nitin Date: Mon, 7 Aug 2023 23:03:13 +0530 Subject: [PATCH 11/11] fixed changelog.md version description --- packages/pigeon/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 27bba019ce0..9f05268577e 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,6 +1,6 @@ ## 10.1.6 -* How about Fixes generation failures when an output file is in a directory that doesn't already exist. +* Fixes generation failures when an output file is in a directory that doesn't already exist. ## 10.1.5