8b23e3449d
The following classes are moved from `package:analyzer` to
`package:_fe_analyzer_shared`:
- `Diagnostic`
- `DiagnosticMessage`
- `DiagnosticMessageImpl`
The following declarations are also moved, since they are needed by
the above classes:
- `formatList`
- `Severity`
- `Source`
- `TimestampedData`
There is no change to the analyzer public API, and `export`
declarations have been added to the analyzer libraries that the
declarations have been moved from, so that code depending on these
declarations is unaffected.
These changes are part of a larger arc of work that introduces methods
`.withArguments` and `.at`, forming a literate API for reporting
analyzer errors that looks roughly like this:
diagnosticReporter.reportError(
ERROR_CODE.withArguments(...arguments...).at(...location...));
Moving this code into `_fe_analyzer_shared` is necessary because
scanner error codes are defined inside `_fe_analyzer_shared` (to allow
the scanner to be shared between the analyzer and CFE). Hence, to
avoid a circular depedency between `_fe_analyzer_shared` and
`analyzer`, the `.withArguments` and `.at` methods will need to live
in `_fe_analyzer_shared` too, as well as the classes representing the
diagnostic messages they create.
Note that there are some minor changes to
`pkg/analysis_server_plugin/api.txt` and
`pkg/analyzer_plugin/api.txt`; these have to do with the way the
`api.txt` generator chooses to report referenced elements, and don't
reflect actual API changes.
Change-Id: I6a6a6964a5c46f4a0205ce0d85620669ce55eb3c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/444620
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
61 lines
2.2 KiB
Dart
61 lines
2.2 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.g.dart';
|
|
|
|
export 'package:_fe_analyzer_shared/src/base/errors.dart'
|
|
show
|
|
DiagnosticCode,
|
|
DiagnosticSeverity,
|
|
DiagnosticType,
|
|
// Continue exporting the deprecated element until it is removed.
|
|
// ignore: deprecated_member_use
|
|
ErrorCode,
|
|
// Continue exporting the deprecated element until it is removed.
|
|
// ignore: deprecated_member_use
|
|
ErrorSeverity,
|
|
// Continue exporting the deprecated element until it is removed.
|
|
// ignore: deprecated_member_use
|
|
ErrorType;
|
|
export 'package:analyzer/src/dart/error/lint_codes.dart' show LintCode;
|
|
export 'package:analyzer/src/diagnostic/diagnostic_code_values.g.dart';
|
|
|
|
/// The lazy initialized map from [DiagnosticCode.uniqueName] 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.uniqueName] to the [DiagnosticCode] instance
|
|
/// for all [diagnosticCodeValues].
|
|
HashMap<String, DiagnosticCode> _computeUniqueNameToCodeMap() {
|
|
var result = HashMap<String, DiagnosticCode>();
|
|
for (DiagnosticCode diagnosticCode in diagnosticCodeValues) {
|
|
var uniqueName = diagnosticCode.uniqueName;
|
|
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;
|