Skip to content

Commit 81ab0da

Browse files
srawlinsCommit Queue
authored andcommitted
analyzer: Use Diagnostic instead of AnalysisError in lib/src
Work towards #60635 Change-Id: Ifce5f4919f5bb8e12ac73994263d1a9fe745e0e9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/426402 Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Samuel Rawlins <[email protected]>
1 parent cfa4be3 commit 81ab0da

22 files changed

+154
-137
lines changed

pkg/analyzer/lib/source/error_processor.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
import 'package:analyzer/diagnostic/diagnostic.dart';
56
import 'package:analyzer/error/error.dart';
67
import 'package:analyzer/src/generated/engine.dart';
78
import 'package:analyzer/src/task/options.dart';
@@ -75,28 +76,28 @@ class ErrorProcessor {
7576
/// The string that unique describes the processor.
7677
String get description => '$code -> ${severity?.name}';
7778

78-
/// Check if this processor applies to the given [error].
79+
/// Check if this processor applies to the given [diagnostic].
7980
///
8081
/// Note: [code] is normalized to uppercase; `errorCode.name` for regular
8182
/// analysis issues uses uppercase; `errorCode.name` for lints uses lowercase.
8283
@visibleForTesting
83-
bool appliesTo(AnalysisError error) =>
84-
code == error.errorCode.name ||
85-
code == error.errorCode.name.toUpperCase();
84+
bool appliesTo(Diagnostic diagnostic) =>
85+
code == diagnostic.errorCode.name ||
86+
code == diagnostic.errorCode.name.toUpperCase();
8687

8788
@override
8889
String toString() => "ErrorProcessor[code='$code', severity=$severity]";
8990

9091
/// Returns an error processor associated in the [analysisOptions] for the
91-
/// given [error], or `null` if none is found.
92+
/// given [diagnostic], or `null` if none is found.
9293
static ErrorProcessor? getProcessor(
9394
// TODO(srawlins): Make `analysisOptions` non-nullable, in a breaking
9495
// change release.
9596
AnalysisOptions? analysisOptions,
96-
AnalysisError error,
97+
Diagnostic diagnostic,
9798
) {
9899
return analysisOptions?.errorProcessors.firstWhereOrNull(
99-
(processor) => processor.appliesTo(error),
100+
(processor) => processor.appliesTo(diagnostic),
100101
);
101102
}
102103
}

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:analyzer/dart/analysis/analysis_options.dart';
99
import 'package:analyzer/dart/analysis/declared_variables.dart';
1010
import 'package:analyzer/dart/analysis/results.dart';
1111
import 'package:analyzer/dart/ast/ast.dart';
12+
import 'package:analyzer/diagnostic/diagnostic.dart';
1213
import 'package:analyzer/error/error.dart';
1314
import 'package:analyzer/error/listener.dart';
1415
import 'package:analyzer/exception/exception.dart';
@@ -1407,7 +1408,10 @@ class AnalysisDriver {
14071408
// getErrors()
14081409
_errorsRequestedFiles.completeAll(
14091410
unitFile.path,
1410-
_createErrorsResultImpl(file: unitFile, errors: unitResult.errors),
1411+
_createErrorsResultImpl(
1412+
file: unitFile,
1413+
diagnostics: unitResult.errors,
1414+
),
14111415
);
14121416

14131417
// getIndex()
@@ -1572,15 +1576,15 @@ class AnalysisDriver {
15721576
events.GetErrorsFromBytes(file: file, library: library),
15731577
);
15741578
var unit = AnalysisDriverResolvedUnit.fromBuffer(bytes);
1575-
var errors = _getErrorsFromSerialized(file, unit.errors);
1579+
var errors = _getDiagnosticsFromSerialized(file, unit.errors);
15761580
_updateHasErrorOrWarningFlag(file, errors);
1577-
var result = _createErrorsResultImpl(file: file, errors: errors);
1581+
var result = _createErrorsResultImpl(file: file, diagnostics: errors);
15781582
return result;
15791583
}
15801584

15811585
ErrorsResultImpl _createErrorsResultImpl({
15821586
required FileState file,
1583-
required List<AnalysisError> errors,
1587+
required List<Diagnostic> diagnostics,
15841588
}) {
15851589
return ErrorsResultImpl(
15861590
session: currentSession,
@@ -1590,7 +1594,7 @@ class AnalysisDriver {
15901594
uri: file.uri,
15911595
isLibrary: file.kind is LibraryFileKind,
15921596
isPart: file.kind is PartFileKind,
1593-
errors: errors,
1597+
errors: diagnostics,
15941598
analysisOptions: file.analysisOptions,
15951599
);
15961600
}
@@ -1676,6 +1680,21 @@ class AnalysisDriver {
16761680
}
16771681
}
16781682

1683+
/// Return [Diagnostic]s for the given [serialized] diagnostics.
1684+
List<Diagnostic> _getDiagnosticsFromSerialized(
1685+
FileState file,
1686+
List<AnalysisDriverUnitError> serialized,
1687+
) {
1688+
List<Diagnostic> diagnostics = <Diagnostic>[];
1689+
for (AnalysisDriverUnitError error in serialized) {
1690+
var analysisError = ErrorEncoding.decode(file.source, error);
1691+
if (analysisError != null) {
1692+
diagnostics.add(analysisError);
1693+
}
1694+
}
1695+
return diagnostics;
1696+
}
1697+
16791698
void _getErrors(String path) {
16801699
var file = _fsState.getFileForPath(path);
16811700

@@ -1781,21 +1800,6 @@ class AnalysisDriver {
17811800
_analyzeFile(path);
17821801
}
17831802

1784-
/// Return [AnalysisError]s for the given [serialized] errors.
1785-
List<AnalysisError> _getErrorsFromSerialized(
1786-
FileState file,
1787-
List<AnalysisDriverUnitError> serialized,
1788-
) {
1789-
List<AnalysisError> errors = <AnalysisError>[];
1790-
for (AnalysisDriverUnitError error in serialized) {
1791-
var analysisError = ErrorEncoding.decode(file.source, error);
1792-
if (analysisError != null) {
1793-
errors.add(analysisError);
1794-
}
1795-
}
1796-
return errors;
1797-
}
1798-
17991803
Future<void> _getFilesDefiningClassMemberName(
18001804
_GetFilesDefiningClassMemberNameRequest request,
18011805
) async {
@@ -1958,7 +1962,7 @@ class AnalysisDriver {
19581962
isLibrary: file.kind is LibraryFileKind,
19591963
isPart: file.kind is PartFileKind,
19601964
errors: [
1961-
AnalysisError.tmp(
1965+
Diagnostic.tmp(
19621966
source: file.source,
19631967
offset: 0,
19641968
length: 0,
@@ -2329,14 +2333,14 @@ class AnalysisDriver {
23292333
}
23302334
}
23312335

2332-
/// Given the list of [errors] for the [file], update the [file]'s
2336+
/// Given the list of [diagnostics] for the [file], update the [file]'s
23332337
/// [FileState.hasErrorOrWarning] flag.
23342338
void _updateHasErrorOrWarningFlag(
23352339
FileState file,
2336-
List<AnalysisError> errors,
2340+
List<Diagnostic> diagnostics,
23372341
) {
2338-
for (var error in errors) {
2339-
var severity = error.errorCode.errorSeverity;
2342+
for (var diagnostic in diagnostics) {
2343+
var severity = diagnostic.errorCode.errorSeverity;
23402344
if (severity == DiagnosticSeverity.ERROR) {
23412345
file.hasErrorOrWarning = true;
23422346
return;
@@ -2663,7 +2667,7 @@ abstract class DriverWatcher {
26632667
}
26642668

26652669
class ErrorEncoding {
2666-
static AnalysisError? decode(Source source, AnalysisDriverUnitError error) {
2670+
static Diagnostic? decode(Source source, AnalysisDriverUnitError error) {
26672671
String errorName = error.uniqueName;
26682672
DiagnosticCode? diagnosticCode =
26692673
errorCodeByUniqueName(errorName) ?? _lintCodeByUniqueName(errorName);
@@ -2691,7 +2695,7 @@ class ErrorEncoding {
26912695
);
26922696
}
26932697

2694-
return AnalysisError.forValues(
2698+
return Diagnostic.forValues(
26952699
source: source,
26962700
offset: error.offset,
26972701
length: error.length,
@@ -2702,9 +2706,9 @@ class ErrorEncoding {
27022706
);
27032707
}
27042708

2705-
static AnalysisDriverUnitErrorBuilder encode(AnalysisError error) {
2709+
static AnalysisDriverUnitErrorBuilder encode(Diagnostic diagnostic) {
27062710
var contextMessages = <DiagnosticMessageBuilder>[];
2707-
for (var message in error.contextMessages) {
2711+
for (var message in diagnostic.contextMessages) {
27082712
contextMessages.add(
27092713
DiagnosticMessageBuilder(
27102714
filePath: message.filePath,
@@ -2717,11 +2721,11 @@ class ErrorEncoding {
27172721
}
27182722

27192723
return AnalysisDriverUnitErrorBuilder(
2720-
offset: error.offset,
2721-
length: error.length,
2722-
uniqueName: error.errorCode.uniqueName,
2723-
message: error.message,
2724-
correction: error.correctionMessage ?? '',
2724+
offset: diagnostic.offset,
2725+
length: diagnostic.length,
2726+
uniqueName: diagnostic.errorCode.uniqueName,
2727+
message: diagnostic.message,
2728+
correction: diagnostic.correctionMessage ?? '',
27252729
contextMessages: contextMessages,
27262730
);
27272731
}

pkg/analyzer/lib/src/dart/analysis/file_state.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import 'package:analyzer/dart/analysis/declared_variables.dart';
1313
import 'package:analyzer/dart/analysis/features.dart';
1414
import 'package:analyzer/dart/ast/token.dart';
1515
import 'package:analyzer/dart/element/element.dart';
16-
import 'package:analyzer/error/error.dart';
16+
import 'package:analyzer/diagnostic/diagnostic.dart';
1717
import 'package:analyzer/error/listener.dart';
1818
import 'package:analyzer/file_system/file_system.dart';
1919
import 'package:analyzer/source/file_source.dart';
@@ -2109,7 +2109,8 @@ class LibraryResolutionResult {
21092109
class ParsedFileState {
21102110
final String code;
21112111
final CompilationUnitImpl unit;
2112-
final List<AnalysisError> errors;
2112+
// TODO(srawlins): Rename to `diagnostics`.
2113+
final List<Diagnostic> errors;
21132114

21142115
ParsedFileState({
21152116
required this.code,

pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'package:analyzer/dart/analysis/declared_variables.dart';
66
import 'package:analyzer/dart/analysis/features.dart';
7+
import 'package:analyzer/diagnostic/diagnostic.dart';
78
import 'package:analyzer/error/error.dart';
89
import 'package:analyzer/error/listener.dart';
910
import 'package:analyzer/source/file_source.dart';
@@ -129,7 +130,7 @@ class LibraryAnalyzer {
129130
var results = <UnitAnalysisResult>[];
130131
for (var fileAnalysis in _libraryFiles.values) {
131132
var errors = fileAnalysis.errorListener.errors;
132-
errors = _filterIgnoredErrors(fileAnalysis, errors);
133+
errors = _filterIgnoredDiagnostics(fileAnalysis, errors);
133134
results.add(
134135
UnitAnalysisResult(fileAnalysis.file, fileAnalysis.unit, errors),
135136
);
@@ -564,36 +565,36 @@ class LibraryAnalyzer {
564565
}
565566
}
566567

567-
/// Returns a subset of the given [errors] that are not marked as ignored in
568+
/// Returns a subset of the given [diagnostics] that are not marked as ignored in
568569
/// the file.
569-
List<AnalysisError> _filterIgnoredErrors(
570+
List<Diagnostic> _filterIgnoredDiagnostics(
570571
FileAnalysis fileAnalysis,
571-
List<AnalysisError> errors,
572+
List<Diagnostic> diagnostics,
572573
) {
573-
if (errors.isEmpty) {
574-
return errors;
574+
if (diagnostics.isEmpty) {
575+
return diagnostics;
575576
}
576577

577578
IgnoreInfo ignoreInfo = fileAnalysis.ignoreInfo;
578579
if (!ignoreInfo.hasIgnores) {
579-
return errors;
580+
return diagnostics;
580581
}
581582

582583
var unignorableCodes = _analysisOptions.unignorableNames;
583584

584-
bool isIgnored(AnalysisError error) {
585-
var code = error.errorCode;
585+
bool isIgnored(Diagnostic diagnostic) {
586+
var code = diagnostic.errorCode;
586587
// Don't allow un-ignorable codes to be ignored.
587588
if (unignorableCodes.contains(code.name) ||
588589
unignorableCodes.contains(code.uniqueName) ||
589590
// Lint rules have lower case names.
590591
unignorableCodes.contains(code.name.toUpperCase())) {
591592
return false;
592593
}
593-
return ignoreInfo.ignored(error);
594+
return ignoreInfo.ignored(diagnostic);
594595
}
595596

596-
return errors.where((AnalysisError e) => !isIgnored(e)).toList();
597+
return diagnostics.where((Diagnostic e) => !isIgnored(e)).toList();
597598
}
598599

599600
/// Find constants in [unit] to compute.
@@ -1120,7 +1121,8 @@ class LibraryAnalyzer {
11201121
class UnitAnalysisResult {
11211122
final FileState file;
11221123
final CompilationUnitImpl unit;
1123-
final List<AnalysisError> errors;
1124+
// TODO(srawlins): Renamed to `diagnostics`.
1125+
final List<Diagnostic> errors;
11241126

11251127
UnitAnalysisResult(this.file, this.unit, this.errors);
11261128
}

pkg/analyzer/lib/src/dart/analysis/results.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:analyzer/dart/analysis/session.dart';
77
import 'package:analyzer/dart/ast/token.dart';
88
import 'package:analyzer/dart/ast/visitor.dart';
99
import 'package:analyzer/dart/element/element.dart';
10-
import 'package:analyzer/error/error.dart';
10+
import 'package:analyzer/diagnostic/diagnostic.dart';
1111
import 'package:analyzer/file_system/file_system.dart';
1212
import 'package:analyzer/source/line_info.dart';
1313
import 'package:analyzer/src/dart/analysis/file_state.dart';
@@ -197,7 +197,7 @@ class ElementDeclarationResultImpl
197197

198198
class ErrorsResultImpl implements ErrorsResult {
199199
@override
200-
final List<AnalysisError> errors;
200+
final List<Diagnostic> errors;
201201

202202
@override
203203
final bool isLibrary;
@@ -334,7 +334,7 @@ class ParsedUnitResultImpl extends FileResultImpl implements ParsedUnitResult {
334334
final CompilationUnit unit;
335335

336336
@override
337-
final List<AnalysisError> errors;
337+
final List<Diagnostic> errors;
338338

339339
ParsedUnitResultImpl({
340340
required super.session,
@@ -349,7 +349,7 @@ class ParseStringResultImpl implements ParseStringResult {
349349
final String content;
350350

351351
@override
352-
final List<AnalysisError> errors;
352+
final List<Diagnostic> errors;
353353

354354
@override
355355
final CompilationUnit unit;
@@ -481,7 +481,7 @@ class ResolvedUnitResultImpl extends FileResultImpl
481481
final CompilationUnitImpl unit;
482482

483483
@override
484-
final List<AnalysisError> errors;
484+
final List<Diagnostic> errors;
485485

486486
ResolvedUnitResultImpl({
487487
required super.session,

pkg/analyzer/lib/src/dart/constant/constant_verifier.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'package:analyzer/dart/constant/value.dart';
1515
import 'package:analyzer/dart/element/element.dart';
1616
import 'package:analyzer/dart/element/nullability_suffix.dart';
1717
import 'package:analyzer/dart/element/type.dart';
18+
import 'package:analyzer/diagnostic/diagnostic.dart';
1819
import 'package:analyzer/error/error.dart';
1920
import 'package:analyzer/error/listener.dart';
2021
import 'package:analyzer/src/dart/ast/ast.dart';
@@ -836,7 +837,7 @@ class ConstantVerifier extends RecursiveAstVisitor<void> {
836837
.WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION,
837838
)) {
838839
_errorReporter.reportError(
839-
AnalysisError.tmp(
840+
Diagnostic.tmp(
840841
source: _errorReporter.source,
841842
offset: error.offset,
842843
length: error.length,
@@ -847,7 +848,7 @@ class ConstantVerifier extends RecursiveAstVisitor<void> {
847848
);
848849
} else if (defaultDiagnosticCode != null) {
849850
_errorReporter.reportError(
850-
AnalysisError.tmp(
851+
Diagnostic.tmp(
851852
source: _errorReporter.source,
852853
offset: error.offset,
853854
length: error.length,

0 commit comments

Comments
 (0)