Files
sdk/pkg/analyzer/lib/error/error.dart
T
Paul Berry 22013528d6 [messages] Use lower case diagnostic names in analyzer.
Changes the logic in `pkg/analyzer` to use
`DiagnosticCode.lowerCaseName` instead of `DiagnosticCode.name`, and
`DiagnosticCode.lowerCaseUniqueName` instead of
`DiagnosticCode.uniqueName`. This ensures that diagnostic codes are
matched in a case-insensitive fashion.

This paves the way for deprecating (and eventually removing) the
`DiagnosticCode.name` and `DiagnosticCode.uniqueName` getters.

Change-Id: I6a6a6964bae7f2d423e44211d2ad73202da65727
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/466281
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2025-12-09 08:04:44 -08:00

50 lines
1.8 KiB
Dart

// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/// @docImport 'package:analyzer/error/listener.dart';
library;
import 'dart:collection';
import 'package:_fe_analyzer_shared/src/base/errors.dart';
import 'package:analyzer/src/diagnostic/diagnostic_code_values.dart';
export 'package:_fe_analyzer_shared/src/base/errors.dart'
show DiagnosticCode, DiagnosticSeverity, DiagnosticType;
export 'package:analyzer/src/dart/error/lint_codes.dart' show LintCode;
export 'package:analyzer/src/diagnostic/diagnostic_code_values.dart'
show diagnosticCodeValues, errorCodeValues;
/// The lazy initialized map from [DiagnosticCode.lowerCaseUniqueName] to the
/// [DiagnosticCode] instance.
final HashMap<String, DiagnosticCode> _uniqueNameToCodeMap =
_computeUniqueNameToCodeMap();
/// Return the [DiagnosticCode] with the given [uniqueName], or `null` if not
/// found.
DiagnosticCode? errorCodeByUniqueName(String uniqueName) {
return _uniqueNameToCodeMap[uniqueName];
}
/// The map from [DiagnosticCode.lowerCaseUniqueName] to the [DiagnosticCode]
/// instance for all [diagnosticCodeValues].
HashMap<String, DiagnosticCode> _computeUniqueNameToCodeMap() {
var result = HashMap<String, DiagnosticCode>();
for (DiagnosticCode diagnosticCode in diagnosticCodeValues) {
var uniqueName = diagnosticCode.lowerCaseUniqueName;
assert(() {
if (result.containsKey(uniqueName)) {
throw StateError('Not unique: $uniqueName');
}
return true;
}());
result[uniqueName] = diagnosticCode;
}
return result;
}
/// A deprecated name for [Diagnostic]. Please use [Diagnostic].
@Deprecated("Use 'Diagnostic' instead.")
typedef AnalysisError = Diagnostic;