From e12b794a3e20fa6f4265a2c1dead980c420fb579 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 18 Nov 2022 16:14:15 -0800 Subject: [PATCH 1/4] doc comments always start with ' ' --- packages/pigeon/CHANGELOG.md | 4 ++++ packages/pigeon/lib/generator_tools.dart | 7 +++++-- packages/pigeon/pigeons/message.dart | 4 ++++ packages/pigeon/pubspec.yaml | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index cdebafe869a..5cb782703f4 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.2.6 + +* Fixes bug with parsing documentation comments that start with '/'. + ## 4.2.5 * [dart] Fixes enum parameter handling in Dart test API class. diff --git a/packages/pigeon/lib/generator_tools.dart b/packages/pigeon/lib/generator_tools.dart index 7c988f85b33..23641d39d81 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.5'; +const String pigeonVersion = '4.2.6'; /// Read all the content from [stdin] to a String. String readStdin() { @@ -474,7 +474,10 @@ void addDocumentationComments( indent.writeln(commentSpec.openCommentToken); currentLineOpenToken = commentSpec.blockContinuationToken; } - for (final String line in allComments) { + for (String line in allComments) { + if (line.isNotEmpty && line[0] != ' ') { + line = ' $line'; + } indent.writeln( '$currentLineOpenToken$line', ); diff --git a/packages/pigeon/pigeons/message.dart b/packages/pigeon/pigeons/message.dart index 644031cdab6..65ef2ac0e3a 100644 --- a/packages/pigeon/pigeons/message.dart +++ b/packages/pigeon/pigeons/message.dart @@ -20,6 +20,10 @@ import 'package:pigeon/pigeon.dart'; /// This comment is to test enum documentation comments. /// /// This comment also tests multiple line comments. +/// +/////////////////////////// +/// This comment also tests comments that start with '/' +/////////////////////////// enum MessageRequestState { pending, success, diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index 7d5060fc0f9..639d3e153fb 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.5 # This must match the version in lib/generator_tools.dart +version: 4.2.6 # This must match the version in lib/generator_tools.dart environment: sdk: ">=2.12.0 <3.0.0" From 567842e2987533dbb0b52322bb431b230357daab Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 18 Nov 2022 17:02:17 -0800 Subject: [PATCH 2/4] add unit tests --- packages/pigeon/test/cpp_generator_test.dart | 9 ++++++++- packages/pigeon/test/dart_generator_test.dart | 10 +++++++++- packages/pigeon/test/java_generator_test.dart | 10 +++++++++- packages/pigeon/test/kotlin_generator_test.dart | 9 ++++++++- packages/pigeon/test/objc_generator_test.dart | 9 ++++++++- packages/pigeon/test/swift_generator_test.dart | 9 ++++++++- 6 files changed, 50 insertions(+), 6 deletions(-) diff --git a/packages/pigeon/test/cpp_generator_test.dart b/packages/pigeon/test/cpp_generator_test.dart index cdf3876df79..d4816c8929b 100644 --- a/packages/pigeon/test/cpp_generator_test.dart +++ b/packages/pigeon/test/cpp_generator_test.dart @@ -1062,6 +1062,9 @@ void main() { ]; int count = 0; + final List unspacedComments = ['////////']; + int unspacedCount = 0; + final Root root = Root( apis: [ Api( @@ -1107,7 +1110,10 @@ void main() { enums: [ Enum( name: 'enum', - documentationComments: [comments[count++]], + documentationComments: [ + comments[count++], + unspacedComments[unspacedCount++] + ], members: [ 'one', 'two', @@ -1121,6 +1127,7 @@ void main() { for (final String comment in comments) { expect(code, contains('//$comment')); } + expect(code, contains('// ///')); }); test('doesnt create codecs if no custom datatypes', () { diff --git a/packages/pigeon/test/dart_generator_test.dart b/packages/pigeon/test/dart_generator_test.dart index 1c163117324..da1875e4b80 100644 --- a/packages/pigeon/test/dart_generator_test.dart +++ b/packages/pigeon/test/dart_generator_test.dart @@ -1174,6 +1174,10 @@ name: foobar ' enum comment', ]; int count = 0; + + final List unspacedComments = ['////////']; + int unspacedCount = 0; + final Root root = Root( apis: [ Api( @@ -1219,7 +1223,10 @@ name: foobar enums: [ Enum( name: 'enum', - documentationComments: [comments[count++]], + documentationComments: [ + comments[count++], + unspacedComments[unspacedCount++] + ], members: [ 'one', 'two', @@ -1233,6 +1240,7 @@ name: foobar for (final String comment in comments) { expect(code, contains('///$comment')); } + expect(code, contains('/// ///')); }); test('doesnt create codecs if no custom datatypes', () { diff --git a/packages/pigeon/test/java_generator_test.dart b/packages/pigeon/test/java_generator_test.dart index d3822c5ad65..f9bbe476900 100644 --- a/packages/pigeon/test/java_generator_test.dart +++ b/packages/pigeon/test/java_generator_test.dart @@ -6,6 +6,7 @@ import 'package:pigeon/ast.dart'; import 'package:pigeon/java_generator.dart'; import 'package:pigeon/pigeon.dart'; import 'package:test/test.dart'; +import 'package:pigeon/generator_tools.dart'; void main() { test('gen one class', () { @@ -1139,6 +1140,9 @@ void main() { ]; int count = 0; + final List unspacedComments = ['////////']; + int unspacedCount = 0; + final Root root = Root( apis: [ Api( @@ -1185,7 +1189,10 @@ void main() { enums: [ Enum( name: 'enum', - documentationComments: [comments[count++]], + documentationComments: [ + comments[count++], + unspacedComments[unspacedCount++] + ], members: [ 'one', 'two', @@ -1204,6 +1211,7 @@ void main() { .hasMatch(code), true); } + expect(code, isNot(contains('*//'))); }); test('doesnt create codecs if no custom datatypes', () { diff --git a/packages/pigeon/test/kotlin_generator_test.dart b/packages/pigeon/test/kotlin_generator_test.dart index 5bc0fedc3f4..9a347d7e36b 100644 --- a/packages/pigeon/test/kotlin_generator_test.dart +++ b/packages/pigeon/test/kotlin_generator_test.dart @@ -1019,6 +1019,9 @@ void main() { ]; int count = 0; + final List unspacedComments = ['////////']; + int unspacedCount = 0; + final Root root = Root( apis: [ Api( @@ -1065,7 +1068,10 @@ void main() { enums: [ Enum( name: 'enum', - documentationComments: [comments[count++]], + documentationComments: [ + comments[count++], + unspacedComments[unspacedCount++] + ], members: [ 'one', 'two', @@ -1084,6 +1090,7 @@ void main() { .hasMatch(code), true); } + expect(code, isNot(contains('*//'))); }); test('doesnt create codecs if no custom datatypes', () { diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index efd177cbd96..0a56629539a 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -1751,6 +1751,9 @@ void main() { ]; int count = 0; + final List unspacedComments = ['////////']; + int unspacedCount = 0; + final Root root = Root( apis: [ Api( @@ -1797,7 +1800,10 @@ void main() { enums: [ Enum( name: 'enum', - documentationComments: [comments[count++]], + documentationComments: [ + comments[count++], + unspacedComments[unspacedCount++] + ], members: [ 'one', 'two', @@ -1811,6 +1817,7 @@ void main() { for (final String comment in comments) { expect(code, contains('///$comment')); } + expect(code, contains('/// ///')); }); test('doesnt create codecs if no custom datatypes', () { diff --git a/packages/pigeon/test/swift_generator_test.dart b/packages/pigeon/test/swift_generator_test.dart index ab0af5b52bc..c22ddbe85ad 100644 --- a/packages/pigeon/test/swift_generator_test.dart +++ b/packages/pigeon/test/swift_generator_test.dart @@ -958,6 +958,9 @@ void main() { ]; int count = 0; + final List unspacedComments = ['////////']; + int unspacedCount = 0; + final Root root = Root( apis: [ Api( @@ -1004,7 +1007,10 @@ void main() { enums: [ Enum( name: 'enum', - documentationComments: [comments[count++]], + documentationComments: [ + comments[count++], + unspacedComments[unspacedCount++] + ], members: [ 'one', 'two', @@ -1019,6 +1025,7 @@ void main() { for (final String comment in comments) { expect(code, contains('///$comment')); } + expect(code, contains('/// ///')); }); test('doesnt create codecs if no custom datatypes', () { From de93a8100bdccd265ac92d1d299b1468eee73f92 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 18 Nov 2022 17:09:26 -0800 Subject: [PATCH 3/4] remove unused import --- packages/pigeon/test/java_generator_test.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/pigeon/test/java_generator_test.dart b/packages/pigeon/test/java_generator_test.dart index f9bbe476900..58cc618ab3a 100644 --- a/packages/pigeon/test/java_generator_test.dart +++ b/packages/pigeon/test/java_generator_test.dart @@ -6,7 +6,6 @@ import 'package:pigeon/ast.dart'; import 'package:pigeon/java_generator.dart'; import 'package:pigeon/pigeon.dart'; import 'package:test/test.dart'; -import 'package:pigeon/generator_tools.dart'; void main() { test('gen one class', () { From dbf9a7897345c36b39a04af24136cbea122420e6 Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Fri, 18 Nov 2022 17:21:55 -0800 Subject: [PATCH 4/4] small test scaffolding fix to allow publish --- .../alternate_language_test_plugin/android/src/main/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore index abf5cc115a9..082790e1ddd 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore @@ -2,4 +2,4 @@ # changes on generated files. This will need a way to avoid unnecessary churn, # such as a flag to suppress version stamp generation. *.java -!AlternateLanguageTestPlugin.kt +!AlternateLanguageTestPlugin.java