[pigeon] doc comments always start with ' ' (#2825)
* doc comments always start with ' '
* add unit tests
* remove unused import
* small test scaffolding fix to allow publish
diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md
index cdebafe..5cb7827 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 7c988f8..23641d3 100644
--- a/packages/pigeon/lib/generator_tools.dart
+++ b/packages/pigeon/lib/generator_tools.dart
@@ -9,7 +9,7 @@
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 @@
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 644031c..65ef2ac 100644
--- a/packages/pigeon/pigeons/message.dart
+++ b/packages/pigeon/pigeons/message.dart
@@ -20,6 +20,10 @@
/// 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/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore b/packages/pigeon/platform_tests/alternate_language_test_plugin/android/src/main/.gitignore
index abf5cc1..082790e 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
diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml
index 7d5060f..639d3e1 100644
--- a/packages/pigeon/pubspec.yaml
+++ b/packages/pigeon/pubspec.yaml
@@ -2,7 +2,7 @@
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"
diff --git a/packages/pigeon/test/cpp_generator_test.dart b/packages/pigeon/test/cpp_generator_test.dart
index cdf3876..d4816c8 100644
--- a/packages/pigeon/test/cpp_generator_test.dart
+++ b/packages/pigeon/test/cpp_generator_test.dart
@@ -1062,6 +1062,9 @@
];
int count = 0;
+ final List<String> unspacedComments = <String>['////////'];
+ int unspacedCount = 0;
+
final Root root = Root(
apis: <Api>[
Api(
@@ -1107,7 +1110,10 @@
enums: <Enum>[
Enum(
name: 'enum',
- documentationComments: <String>[comments[count++]],
+ documentationComments: <String>[
+ comments[count++],
+ unspacedComments[unspacedCount++]
+ ],
members: <String>[
'one',
'two',
@@ -1121,6 +1127,7 @@
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 1c16311..da1875e 100644
--- a/packages/pigeon/test/dart_generator_test.dart
+++ b/packages/pigeon/test/dart_generator_test.dart
@@ -1174,6 +1174,10 @@
' enum comment',
];
int count = 0;
+
+ final List<String> unspacedComments = <String>['////////'];
+ int unspacedCount = 0;
+
final Root root = Root(
apis: <Api>[
Api(
@@ -1219,7 +1223,10 @@
enums: <Enum>[
Enum(
name: 'enum',
- documentationComments: <String>[comments[count++]],
+ documentationComments: <String>[
+ comments[count++],
+ unspacedComments[unspacedCount++]
+ ],
members: <String>[
'one',
'two',
@@ -1233,6 +1240,7 @@
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 d3822c5..58cc618 100644
--- a/packages/pigeon/test/java_generator_test.dart
+++ b/packages/pigeon/test/java_generator_test.dart
@@ -1139,6 +1139,9 @@
];
int count = 0;
+ final List<String> unspacedComments = <String>['////////'];
+ int unspacedCount = 0;
+
final Root root = Root(
apis: <Api>[
Api(
@@ -1185,7 +1188,10 @@
enums: <Enum>[
Enum(
name: 'enum',
- documentationComments: <String>[comments[count++]],
+ documentationComments: <String>[
+ comments[count++],
+ unspacedComments[unspacedCount++]
+ ],
members: <String>[
'one',
'two',
@@ -1204,6 +1210,7 @@
.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 5bc0fed..9a347d7 100644
--- a/packages/pigeon/test/kotlin_generator_test.dart
+++ b/packages/pigeon/test/kotlin_generator_test.dart
@@ -1019,6 +1019,9 @@
];
int count = 0;
+ final List<String> unspacedComments = <String>['////////'];
+ int unspacedCount = 0;
+
final Root root = Root(
apis: <Api>[
Api(
@@ -1065,7 +1068,10 @@
enums: <Enum>[
Enum(
name: 'enum',
- documentationComments: <String>[comments[count++]],
+ documentationComments: <String>[
+ comments[count++],
+ unspacedComments[unspacedCount++]
+ ],
members: <String>[
'one',
'two',
@@ -1084,6 +1090,7 @@
.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 efd177c..0a56629 100644
--- a/packages/pigeon/test/objc_generator_test.dart
+++ b/packages/pigeon/test/objc_generator_test.dart
@@ -1751,6 +1751,9 @@
];
int count = 0;
+ final List<String> unspacedComments = <String>['////////'];
+ int unspacedCount = 0;
+
final Root root = Root(
apis: <Api>[
Api(
@@ -1797,7 +1800,10 @@
enums: <Enum>[
Enum(
name: 'enum',
- documentationComments: <String>[comments[count++]],
+ documentationComments: <String>[
+ comments[count++],
+ unspacedComments[unspacedCount++]
+ ],
members: <String>[
'one',
'two',
@@ -1811,6 +1817,7 @@
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 ab0af5b..c22ddbe 100644
--- a/packages/pigeon/test/swift_generator_test.dart
+++ b/packages/pigeon/test/swift_generator_test.dart
@@ -958,6 +958,9 @@
];
int count = 0;
+ final List<String> unspacedComments = <String>['////////'];
+ int unspacedCount = 0;
+
final Root root = Root(
apis: <Api>[
Api(
@@ -1004,7 +1007,10 @@
enums: <Enum>[
Enum(
name: 'enum',
- documentationComments: <String>[comments[count++]],
+ documentationComments: <String>[
+ comments[count++],
+ unspacedComments[unspacedCount++]
+ ],
members: <String>[
'one',
'two',
@@ -1019,6 +1025,7 @@
for (final String comment in comments) {
expect(code, contains('///$comment'));
}
+ expect(code, contains('/// ///'));
});
test('doesnt create codecs if no custom datatypes', () {