Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6781363

Browse files
stereotype441Commit Queue
authored and
Commit Queue
committed
[messages] Add package getter to MessageWithAnalyzerCode.
Adds the abstract getter `MessageWithAnalyzerCode.package` (and implementations thereof). This returns the package into which this error code will be generated. Also adds a check to the `DiagnosticTables._` constructor to verify that the values returned by this getter are the same as the values returned by `MessageWithAnalyzerCode.diagnosticClassInfo.file.package`, and changes the code generation logic to use the former instead of the latter where possible. This paves the way for a follow-up CL that will remove `MessageWithAnalyzerCode.diagnosticClassInfo`, as part of a larger effort to remove the generated `DiagnosticCode`-derived classes entirely. Change-Id: I6a6a6964b03e53867f7dc7f7307e8e218c080b6c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/462161 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Paul Berry <paulberry@google.com>
1 parent 015d8a1 commit 6781363

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

‎pkg/analyzer_utilities/lib/analyzer_messages.dart‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ const transformSetErrorCodeFile = GeneratedDiagnosticFile(
187187
/// Decoded messages from the analysis server's `messages.yaml` file.
188188
final List<AnalyzerMessage> analysisServerMessages = decodeAnalyzerMessagesYaml(
189189
analysisServerPkgPath,
190+
package: AnalyzerDiagnosticPackage.analysisServer,
190191
);
191192

192193
/// The path to the `analysis_server` package.
@@ -197,6 +198,7 @@ final String analysisServerPkgPath = normalize(
197198
/// Decoded messages from the analyzer's `messages.yaml` file.
198199
final List<AnalyzerMessage> analyzerMessages = decodeAnalyzerMessagesYaml(
199200
analyzerPkgPath,
201+
package: AnalyzerDiagnosticPackage.analyzer,
200202
);
201203

202204
/// The path to the `analyzer` package.
@@ -211,6 +213,7 @@ final String linterPkgPath = normalize(join(pkg_root.packageRoot, 'linter'));
211213
final List<AnalyzerMessage> lintMessages = decodeAnalyzerMessagesYaml(
212214
linterPkgPath,
213215
allowLinterKeys: true,
216+
package: AnalyzerDiagnosticPackage.linter,
214217
);
215218

216219
/// Decodes a YAML object (in analyzer style `messages.yaml` format) into a list
@@ -221,6 +224,7 @@ final List<AnalyzerMessage> lintMessages = decodeAnalyzerMessagesYaml(
221224
List<AnalyzerMessage> decodeAnalyzerMessagesYaml(
222225
String packagePath, {
223226
bool allowLinterKeys = false,
227+
required AnalyzerDiagnosticPackage package,
224228
}) {
225229
var path = join(packagePath, 'messages.yaml');
226230
var yaml = loadYamlNode(
@@ -277,6 +281,7 @@ List<AnalyzerMessage> decodeAnalyzerMessagesYaml(
277281
messageYaml,
278282
analyzerCode: analyzerCode,
279283
allowLinterKeys: allowLinterKeys,
284+
package: package,
280285
);
281286
},
282287
);
@@ -357,6 +362,7 @@ class AliasMessage extends AnalyzerMessage {
357362
required this.aliasFor,
358363
required super.analyzerCode,
359364
required super.allowLinterKeys,
365+
required super.package,
360366
}) : super._();
361367

362368
String get aliasForClass => aliasFor.split('.').first;
@@ -471,23 +477,29 @@ class AnalyzerMessage extends Message with MessageWithAnalyzerCode {
471477
@override
472478
final bool hasPublishedDocs;
473479

480+
@override
481+
final AnalyzerDiagnosticPackage package;
482+
474483
factory AnalyzerMessage(
475484
MessageYaml messageYaml, {
476485
required AnalyzerCode analyzerCode,
477486
required bool allowLinterKeys,
487+
required AnalyzerDiagnosticPackage package,
478488
}) {
479489
if (messageYaml.getOptionalString('aliasFor') case var aliasFor?) {
480490
return AliasMessage(
481491
messageYaml,
482492
aliasFor: aliasFor,
483493
analyzerCode: analyzerCode,
484494
allowLinterKeys: allowLinterKeys,
495+
package: package,
485496
);
486497
} else {
487498
return AnalyzerMessage._(
488499
messageYaml,
489500
analyzerCode: analyzerCode,
490501
allowLinterKeys: allowLinterKeys,
502+
package: package,
491503
);
492504
}
493505
}
@@ -496,6 +508,7 @@ class AnalyzerMessage extends Message with MessageWithAnalyzerCode {
496508
MessageYaml messageYaml, {
497509
required this.analyzerCode,
498510
required bool allowLinterKeys,
511+
required this.package,
499512
}) : hasPublishedDocs = messageYaml.getBool('hasPublishedDocs'),
500513
super(messageYaml) {
501514
// Ignore extra keys related to analyzer example-based tests.
@@ -651,6 +664,9 @@ mixin MessageWithAnalyzerCode on Message {
651664
/// `null` if the YAML doesn't contain this information.
652665
bool get hasPublishedDocs;
653666

667+
/// The package into which this error code will be generated.
668+
AnalyzerDiagnosticPackage get package;
669+
654670
void outputConstantHeader(StringSink out) {
655671
out.write(toAnalyzerComments(indent: ' '));
656672
if (deprecatedMessage != null) {

‎pkg/analyzer_utilities/lib/messages.dart‎

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -448,12 +448,19 @@ class DiagnosticTables {
448448
analyzerCode.snakeCaseName] ??=
449449
[])
450450
.add(message);
451-
var diagnosticClass = analyzerCode.diagnosticClass;
452-
if (!message.isRemoved && message is! AliasMessage) {
453-
(activeMessagesByPackage[diagnosticClass.file.package] ??= []).add(
454-
message,
451+
var package = message.package;
452+
if (analyzerCode.diagnosticClass.file.package != package) {
453+
throw LocatedError(
454+
'Expected to generate this analyzer code to '
455+
'package:${package.dirName}, but its diagnostic class '
456+
'(${analyzerCode.diagnosticClass.name}) lives in '
457+
'package:${analyzerCode.diagnosticClass.file.package.dirName}',
458+
span: message.keySpan,
455459
);
456460
}
461+
if (!message.isRemoved && message is! AliasMessage) {
462+
(activeMessagesByPackage[package] ??= []).add(message);
463+
}
457464
}
458465
}
459466

@@ -980,6 +987,9 @@ class SharedMessage extends CfeStyleMessage with MessageWithAnalyzerCode {
980987
),
981988
hasPublishedDocs = messageYaml.getBool('hasPublishedDocs');
982989

990+
@override
991+
AnalyzerDiagnosticPackage get package => AnalyzerDiagnosticPackage.analyzer;
992+
983993
static AnalyzerCode _decodeAnalyzerCode(YamlNode node) {
984994
switch (node) {
985995
case YamlScalar(value: String s):

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /