Skip to content

Commit e6f0542

Browse files
stereotype441Commit Queue
authored andcommitted
[messages] Enforce camelCase in messages.yaml files.
Now that the `messages.yaml` files have been converted to consistently use camelCase for message names, it is no longer necessary for the logic that consumes `messages.yaml` files to support other case conventions. Change-Id: I6a6a69645d6409c12ef409f6b27ae07cc2403557 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/467080 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Paul Berry <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent dfb2f72 commit e6f0542

File tree

4 files changed

+29
-55
lines changed

4 files changed

+29
-55
lines changed

pkg/analyzer/test/verify_diagnostics_test.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,8 @@ class DocumentationValidator {
375375
message.documentation,
376376
);
377377
if (docs != null) {
378-
codeName =
379-
(message.sharedName ?? message.analyzerCode).lowerSnakeCaseName;
380-
variableName = message.analyzerCode.lowerSnakeCaseName;
378+
codeName = (message.sharedName ?? message.analyzerCode).snakeCaseName;
379+
variableName = message.analyzerCode.snakeCaseName;
381380
if (unverifiedDocs.contains(variableName)) {
382381
continue;
383382
}

pkg/analyzer_utilities/lib/analyzer_messages.dart

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,13 @@ List<M> decodeAnalyzerMessagesYaml<M extends AnalyzerMessage>(
196196
key: keyNode,
197197
value: diagnosticValue,
198198
decoder: (messageYaml) {
199-
var analyzerCode = DiagnosticCodeName.fromCamelOrSnakeCase(
200-
diagnosticName,
201-
);
199+
if (!diagnosticName.isCamelCase) {
200+
throw LocatedError(
201+
'Message names should be camelCase',
202+
span: keyNode.span,
203+
);
204+
}
205+
var analyzerCode = DiagnosticCodeName.fromCamelCase(diagnosticName);
202206
return decodeMessage(
203207
messageYaml,
204208
analyzerCode: analyzerCode,
@@ -625,7 +629,7 @@ LocatableDiagnostic $withArgumentsName({$withArgumentsParams}) {
625629
outputConstantHeader(constant);
626630
constant.writeln('const $staticType $constantName =');
627631
constant.writeln('$concreteClassName(');
628-
var name = (sharedName?.snakeCaseName ?? diagnosticCode).toLowerCase();
632+
var name = sharedName?.snakeCaseName ?? diagnosticCode;
629633
constant.writeln("name: '$name',");
630634
var maxWidth = 80 - 8 /* indentation */ - 2 /* quotes */ - 1 /* comma */;
631635
var messageAsCode = convertTemplate(problemMessage);
@@ -652,7 +656,7 @@ LocatableDiagnostic $withArgumentsName({$withArgumentsParams}) {
652656
if (baseClasses.requiresTypeArgument) {
653657
constant.writeln('type: ${type.code},');
654658
}
655-
String uniqueName = analyzerCode.snakeCaseName.toLowerCase();
659+
String uniqueName = analyzerCode.snakeCaseName;
656660
constant.writeln("uniqueName: '$uniqueName',");
657661
if (withArgumentsName != null) {
658662
constant.writeln('withArguments: $withArgumentsName,');

pkg/analyzer_utilities/lib/messages.dart

Lines changed: 15 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,8 @@ abstract class CfeStyleMessage extends Message {
176176
var s when s.isCamelCase => DiagnosticCodeName.fromCamelCase(
177177
messageYaml.keyString,
178178
),
179-
var s when s.isPascalCase => DiagnosticCodeName.fromPascalCase(
180-
messageYaml.keyString,
181-
),
182179
_ => throw LocatedError(
183-
'Front end codes must be camelCase or PascalCase',
180+
'Front end codes must be camelCase',
184181
span: messageYaml.keySpan,
185182
),
186183
},
@@ -239,12 +236,8 @@ class DiagnosticCodeName implements Comparable<DiagnosticCodeName> {
239236
'linesLongerThan80Chars': 'lines_longer_than_80_chars',
240237
};
241238

242-
/// The diagnostic name, as a "snake case" name (words separated by
243-
/// underscores).
244-
///
245-
/// The name might be lower case or upper case.
246-
// TODO(paulberry): change `messages.yaml` to consistently use lower snake
247-
// case, and remove [lowerSnakeCaseName].
239+
/// The diagnostic name, as a "lower snake case" name (lower case words
240+
/// separated by underscores).
248241
final String snakeCaseName;
249242

250243
/// The diagnostic name, as a "camel case" name (lower case word followed by
@@ -264,38 +257,13 @@ class DiagnosticCodeName implements Comparable<DiagnosticCodeName> {
264257
}
265258
}
266259

267-
factory DiagnosticCodeName.fromCamelOrSnakeCase(String value) =>
268-
value.isCamelCase
269-
? DiagnosticCodeName.fromCamelCase(value)
270-
: DiagnosticCodeName.fromSnakeCase(value);
271-
272-
factory DiagnosticCodeName.fromPascalCase(String pascalCaseName) {
273-
var snakeCaseName = pascalCaseName.toSnakeCase();
274-
var camelCaseName = snakeCaseName.toPascalCase();
275-
return DiagnosticCodeName._(
276-
snakeCaseName: snakeCaseName,
277-
camelCaseName: camelCaseName,
278-
);
279-
}
280-
281-
DiagnosticCodeName.fromSnakeCase(this.snakeCaseName)
282-
: camelCaseName = snakeCaseName.toCamelCase();
283-
284-
DiagnosticCodeName._({
285-
required this.snakeCaseName,
286-
required this.camelCaseName,
287-
});
288-
289260
/// The string that should be generated into analyzer source code to refer to
290261
/// this diagnostic code.
291262
String get analyzerCodeReference => ['diag', camelCaseName].join('.');
292263

293264
@override
294265
int get hashCode => snakeCaseName.hashCode;
295266

296-
/// The diagnostic name, converted to lower snake case.
297-
String get lowerSnakeCaseName => snakeCaseName.toLowerCase();
298-
299267
/// The diagnostic name, converted to PascalCase.
300268
String get pascalCaseName => snakeCaseName.toPascalCase();
301269

@@ -662,10 +630,17 @@ abstract class Message {
662630
isRequired: requireProblemMessage,
663631
) ??
664632
[],
665-
sharedName = switch (messageYaml.getOptionalString('sharedName')) {
666-
var s? => DiagnosticCodeName.fromCamelOrSnakeCase(s),
667-
null => null,
668-
},
633+
sharedName = messageYaml.get(
634+
'sharedName',
635+
decode: (s) => switch (s) {
636+
YamlScalar(:String value) =>
637+
value.isCamelCase
638+
? DiagnosticCodeName.fromCamelCase(value)
639+
: throw 'Shared names should be camelCase',
640+
_ => throw 'Must be a string',
641+
},
642+
ifAbsent: () => null,
643+
),
669644
removedIn = messageYaml.getOptionalString('removedIn'),
670645
previousName = messageYaml.getOptionalString('previousName'),
671646
parameters = messageYaml.parameters,
@@ -1008,15 +983,11 @@ class SharedMessage extends CfeStyleMessage with MessageWithAnalyzerCode {
1008983
switch (node) {
1009984
case YamlScalar(value: String s):
1010985
switch (s.split('.')) {
1011-
case [_, var snakeCaseName]
1012-
when snakeCaseName == snakeCaseName.toUpperCase():
1013-
return DiagnosticCodeName.fromSnakeCase(snakeCaseName);
1014986
case [var camelCaseName] when camelCaseName.isCamelCase:
1015987
return DiagnosticCodeName.fromCamelCase(camelCaseName);
1016988
}
1017989
}
1018-
throw 'Analyzer codes must be either camelCase names or must take the form '
1019-
'ClassName.DIAGNOSTIC_NAME.';
990+
throw 'Analyzer codes must be camelCase names.';
1020991
}
1021992
}
1022993

pkg/linter/tool/messages_info.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const String _messagesFileName = 'pkg/linter/messages.yaml';
1313
final Map<String, RuleInfo> messagesRuleInfo = () {
1414
{
1515
var lintNames = lintMessages
16-
.map((m) => m.analyzerCode.lowerSnakeCaseName)
16+
.map((m) => m.analyzerCode.snakeCaseName)
1717
.toList(growable: false);
1818
var lintCodeKeysSorted = lintNames.sorted();
1919
for (var i = 0; i < lintNames.length; i++) {
@@ -29,12 +29,12 @@ final Map<String, RuleInfo> messagesRuleInfo = () {
2929
var builders = <String, _RuleBuilder>{};
3030
for (var message in lintMessages) {
3131
var sharedNameString =
32-
(message.sharedName ?? message.analyzerCode).lowerSnakeCaseName;
32+
(message.sharedName ?? message.analyzerCode).snakeCaseName;
3333
var rule = builders.putIfAbsent(
3434
sharedNameString,
3535
() => _RuleBuilder(sharedNameString),
3636
);
37-
rule.addEntry(message.analyzerCode.lowerSnakeCaseName, message);
37+
rule.addEntry(message.analyzerCode.snakeCaseName, message);
3838
}
3939

4040
return builders.map((key, value) {

0 commit comments

Comments
 (0)