Skip to content

Commit da1190d

Browse files
authored
Add dart format width comments (#725)
Closes #724 The 3 places where a Dart unit can be output are as a `LibraryBuildr`, as a `PartBuilder`, or as a combined part. `SharedPartBuilder` output does not need the width comment. Add a constant for the comment and use it while writing each of the 3 types of output.
1 parent 4b4431f commit da1190d

File tree

7 files changed

+62
-22
lines changed

7 files changed

+62
-22
lines changed

example_usage/lib/library_source.g.dart

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example_usage/lib/library_source.info.dart

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

source_gen/CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
- Support all the glob quotes.
1111
- Require `analyzer: ^6.9.0`
1212
- Require Dart 3.6.0-270.0.dev
13-
- `LibraryBuilder`, `PartBuilder`, and `SharedPartBuilder` now take an optional `writeDescriptions` boolean. When set to `false`, headers and generator descriptions for the files will not be included in the builder output.
13+
- `LibraryBuilder`, `PartBuilder`, and `SharedPartBuilder` now take an optional
14+
`writeDescriptions` boolean. When set to `false`, headers and generator
15+
descriptions for the files will not be included in the builder output.
16+
- Include `//dart format width=80` comments in generated Dart unit files.
1417

1518
## 1.5.0
1619

source_gen/lib/builder.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ class CombiningBuilder implements Builder {
143143

144144
final output = '''
145145
$defaultFileHeader
146+
$dartFormatWidth
146147
${languageOverrideForLibrary(inputLibrary)}$ignoreForFile$preamble
147148
part of '$partOfUri';
148149

source_gen/lib/src/builder.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ class _Builder extends Builder {
134134

135135
if (this is PartBuilder) {
136136
contentBuffer
137+
..writeln(dartFormatWidth)
137138
..write(languageOverrideForLibrary(library))
138139
..writeln('part of \'$partOfUri\';');
139140
final part = computePartUrl(buildStep.inputId, outputId);
@@ -155,6 +156,8 @@ class _Builder extends Builder {
155156
// For shared-part builders, `part` statements will be checked by the
156157
// combining build step.
157158
}
159+
} else {
160+
contentBuffer.writeln(dartFormatWidth);
158161
}
159162

160163
for (var item in generatedOutputs) {
@@ -423,3 +426,7 @@ String languageOverrideForLibrary(LibraryElement library) {
423426
? ''
424427
: '// @dart=${override.major}.${override.minor}\n';
425428
}
429+
430+
/// A comment configuring `dart_style` to use the default code width so no
431+
/// configuration discovery is required.
432+
const dartFormatWidth = '// dart format width=80';

source_gen/test/builder_test.dart

Lines changed: 44 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:build/build.dart';
1111
import 'package:build_test/build_test.dart';
1212
import 'package:source_gen/builder.dart';
1313
import 'package:source_gen/source_gen.dart';
14+
import 'package:source_gen/src/builder.dart';
1415
import 'package:test/test.dart';
1516

1617
import 'src/comment_generator.dart';
@@ -65,8 +66,9 @@ void main() {
6566
srcs,
6667
generateFor: {'$_pkgName|lib/test_lib.dart'},
6768
outputs: {
68-
'$_pkgName|lib/test_lib.g.dart':
69-
decodedMatches(startsWith('$_customHeader\n\n// ***')),
69+
'$_pkgName|lib/test_lib.g.dart': decodedMatches(
70+
startsWith('$_customHeader\n$dartFormatWidth\n\n// ***'),
71+
),
7072
},
7173
);
7274
});
@@ -79,7 +81,8 @@ void main() {
7981
srcs,
8082
generateFor: {'$_pkgName|lib/test_lib.dart'},
8183
outputs: {
82-
'$_pkgName|lib/test_lib.g.dart': decodedMatches(startsWith('// ***')),
84+
'$_pkgName|lib/test_lib.g.dart':
85+
decodedMatches(startsWith('$dartFormatWidth\n\n// ***')),
8386
},
8487
);
8588
});
@@ -96,6 +99,7 @@ void main() {
9699
);
97100

98101
const expected = '''
102+
$dartFormatWidth
99103
// Code for "class Person"
100104
// Code for "class Customer"
101105
''';
@@ -312,8 +316,9 @@ void main() {
312316
{'$_pkgName|lib/a.dart': 'library a; part "a.foo.dart";'},
313317
generateFor: {'$_pkgName|lib/a.dart'},
314318
outputs: {
315-
'$_pkgName|lib/a.foo.dart':
316-
decodedMatches(startsWith('$_customHeader\n\npart of')),
319+
'$_pkgName|lib/a.foo.dart': decodedMatches(
320+
startsWith('$_customHeader\n\n$dartFormatWidth\npart of'),
321+
),
317322
},
318323
);
319324
});
@@ -328,7 +333,8 @@ void main() {
328333
{'$_pkgName|lib/a.dart': 'library a; part "a.foo.dart";'},
329334
generateFor: {'$_pkgName|lib/a.dart'},
330335
outputs: {
331-
'$_pkgName|lib/a.foo.dart': decodedMatches(startsWith('part of')),
336+
'$_pkgName|lib/a.foo.dart':
337+
decodedMatches(startsWith('$dartFormatWidth\npart of')),
332338
},
333339
);
334340
});
@@ -341,13 +347,16 @@ void main() {
341347
header: '',
342348
),
343349
{
344-
'$_pkgName|lib/a.dart': '''// @dart=2.12
350+
'$_pkgName|lib/a.dart': '''
351+
$dartFormatWidth
352+
// @dart=2.12
345353
part "a.foo.dart";''',
346354
},
347355
generateFor: {'$_pkgName|lib/a.dart'},
348356
outputs: {
349-
'$_pkgName|lib/a.foo.dart':
350-
decodedMatches(startsWith('// @dart=2.12\n')),
357+
'$_pkgName|lib/a.foo.dart': decodedMatches(
358+
startsWith('$dartFormatWidth\n// @dart=2.12\n'),
359+
),
351360
},
352361
);
353362
});
@@ -390,8 +399,9 @@ part "a.foo.dart";''',
390399
},
391400
);
392401
expect(logs, [
393-
'generated/test_lib.foo.dart must be included as a part directive in the input '
394-
'library with:\n part \'generated/test_lib.foo.dart\';'
402+
'generated/test_lib.foo.dart must be included as a '
403+
'part directive in the input library with:\n'
404+
' part \'generated/test_lib.foo.dart\';'
395405
]);
396406
});
397407

@@ -411,8 +421,9 @@ part "a.foo.dart";''',
411421
{'$_pkgName|lib/a.dart': 'part "generated/a.foo.dart";'},
412422
generateFor: {'$_pkgName|lib/a.dart'},
413423
outputs: {
414-
'$_pkgName|lib/generated/a.foo.dart':
415-
decodedMatches(startsWith("part of '../a.dart';")),
424+
'$_pkgName|lib/generated/a.foo.dart': decodedMatches(
425+
startsWith("$dartFormatWidth\npart of '../a.dart';"),
426+
),
416427
},
417428
);
418429
});
@@ -559,6 +570,7 @@ part "a.foo.dart";''',
559570
const CombiningBuilder(),
560571
{
561572
'$_pkgName|lib/a.dart': '''
573+
$dartFormatWidth
562574
// @dart=2.12
563575
library a;
564576
part "a.g.dart";
@@ -570,6 +582,7 @@ part "a.g.dart";
570582
'$_pkgName|lib/a.g.dart': decodedMatches(
571583
'''
572584
// GENERATED CODE - DO NOT MODIFY BY HAND
585+
$dartFormatWidth
573586
// @dart=2.12
574587
575588
part of 'a.dart';
@@ -1056,8 +1069,10 @@ const _testLibContentSyntaxError = r'''
10561069
final int foo = 42
10571070
''';
10581071

1059-
const _testGenPartContent = r'''// GENERATED CODE - DO NOT MODIFY BY HAND
1072+
const _testGenPartContent = r'''
1073+
// GENERATED CODE - DO NOT MODIFY BY HAND
10601074
1075+
// dart format width=80
10611076
part of 'test_lib.dart';
10621077
10631078
// **************************************************************************
@@ -1068,9 +1083,10 @@ part of 'test_lib.dart';
10681083
// Code for "class Customer"
10691084
''';
10701085

1071-
const _testGenPartContentForLibrary =
1072-
r'''// GENERATED CODE - DO NOT MODIFY BY HAND
1086+
const _testGenPartContentForLibrary = r'''
1087+
// GENERATED CODE - DO NOT MODIFY BY HAND
10731088
1089+
// dart format width=80
10741090
part of 'test_lib.dart';
10751091
10761092
// **************************************************************************
@@ -1080,7 +1096,9 @@ part of 'test_lib.dart';
10801096
// Code for "test_lib"
10811097
''';
10821098

1083-
const _testGenStandaloneContent = r'''// GENERATED CODE - DO NOT MODIFY BY HAND
1099+
const _testGenStandaloneContent = r'''
1100+
// GENERATED CODE - DO NOT MODIFY BY HAND
1101+
// dart format width=80
10841102
10851103
// **************************************************************************
10861104
// CommentGenerator
@@ -1090,9 +1108,10 @@ const _testGenStandaloneContent = r'''// GENERATED CODE - DO NOT MODIFY BY HAND
10901108
// Code for "class Customer"
10911109
''';
10921110

1093-
const _testGenPartContentForClassesAndLibrary =
1094-
r'''// GENERATED CODE - DO NOT MODIFY BY HAND
1111+
const _testGenPartContentForClassesAndLibrary = r'''
1112+
// GENERATED CODE - DO NOT MODIFY BY HAND
10951113
1114+
// dart format width=80
10961115
part of 'test_lib.dart';
10971116
10981117
// **************************************************************************
@@ -1104,8 +1123,10 @@ part of 'test_lib.dart';
11041123
// Code for "class Customer"
11051124
''';
11061125

1107-
const _testGenNoLibrary = r'''// GENERATED CODE - DO NOT MODIFY BY HAND
1126+
const _testGenNoLibrary = r'''
1127+
// GENERATED CODE - DO NOT MODIFY BY HAND
11081128
1129+
// dart format width=80
11091130
part of 'test_lib.dart';
11101131
11111132
// **************************************************************************
@@ -1116,8 +1137,10 @@ part of 'test_lib.dart';
11161137
// Code for "class Customer"
11171138
''';
11181139

1119-
const _whitespaceTrimmed = r'''// GENERATED CODE - DO NOT MODIFY BY HAND
1140+
const _whitespaceTrimmed = r'''
1141+
// GENERATED CODE - DO NOT MODIFY BY HAND
11201142
1143+
// dart format width=80
11211144
part of 'test_lib.dart';
11221145
11231146
// **************************************************************************

source_gen/test/generator_for_annotation_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'package:analyzer/dart/element/element.dart';
1212
import 'package:build/build.dart';
1313
import 'package:build_test/build_test.dart';
1414
import 'package:source_gen/source_gen.dart';
15+
import 'package:source_gen/src/builder.dart';
1516
import 'package:test/test.dart';
1617

1718
void main() {
@@ -44,6 +45,7 @@ void main() {
4445
outputs: {
4546
'a|lib/file.g.dart': r'''
4647
// GENERATED CODE - DO NOT MODIFY BY HAND
48+
// dart format width=80
4749
4850
// **************************************************************************
4951
// Generator: Repeating
@@ -128,6 +130,7 @@ void main() {
128130
outputs: {
129131
'a|lib/file.g.dart': '''
130132
// GENERATED CODE - DO NOT MODIFY BY HAND
133+
$dartFormatWidth
131134
132135
// **************************************************************************
133136
// Generator: Deprecated
@@ -164,6 +167,7 @@ void main() {
164167
outputs: {
165168
'a|lib/file.g.dart': '''
166169
// GENERATED CODE - DO NOT MODIFY BY HAND
170+
$dartFormatWidth
167171
168172
// **************************************************************************
169173
// Generator: Deprecated

0 commit comments

Comments
 (0)