Version 3.9.0-94.0.dev Merge 81ab0dab3c31e7b37336fcd842b92fa452594edb into dev
diff --git a/pkg/analyzer/lib/source/error_processor.dart b/pkg/analyzer/lib/source/error_processor.dart index 5dc5484..c5736c8 100644 --- a/pkg/analyzer/lib/source/error_processor.dart +++ b/pkg/analyzer/lib/source/error_processor.dart
@@ -2,6 +2,7 @@ // 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. +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/src/generated/engine.dart'; import 'package:analyzer/src/task/options.dart'; @@ -75,28 +76,28 @@ /// The string that unique describes the processor. String get description => '$code -> ${severity?.name}'; - /// Check if this processor applies to the given [error]. + /// Check if this processor applies to the given [diagnostic]. /// /// Note: [code] is normalized to uppercase; `errorCode.name` for regular /// analysis issues uses uppercase; `errorCode.name` for lints uses lowercase. @visibleForTesting - bool appliesTo(AnalysisError error) => - code == error.errorCode.name || - code == error.errorCode.name.toUpperCase(); + bool appliesTo(Diagnostic diagnostic) => + code == diagnostic.errorCode.name || + code == diagnostic.errorCode.name.toUpperCase(); @override String toString() => "ErrorProcessor[code='$code', severity=$severity]"; /// Returns an error processor associated in the [analysisOptions] for the - /// given [error], or `null` if none is found. + /// given [diagnostic], or `null` if none is found. static ErrorProcessor? getProcessor( // TODO(srawlins): Make `analysisOptions` non-nullable, in a breaking // change release. AnalysisOptions? analysisOptions, - AnalysisError error, + Diagnostic diagnostic, ) { return analysisOptions?.errorProcessors.firstWhereOrNull( - (processor) => processor.appliesTo(error), + (processor) => processor.appliesTo(diagnostic), ); } }
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart index 0af798c..9b12d2a 100644 --- a/pkg/analyzer/lib/src/dart/analysis/driver.dart +++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -9,6 +9,7 @@ import 'package:analyzer/dart/analysis/declared_variables.dart'; import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/ast/ast.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/exception/exception.dart'; @@ -1407,7 +1408,10 @@ // getErrors() _errorsRequestedFiles.completeAll( unitFile.path, - _createErrorsResultImpl(file: unitFile, errors: unitResult.errors), + _createErrorsResultImpl( + file: unitFile, + diagnostics: unitResult.errors, + ), ); // getIndex() @@ -1572,15 +1576,15 @@ events.GetErrorsFromBytes(file: file, library: library), ); var unit = AnalysisDriverResolvedUnit.fromBuffer(bytes); - var errors = _getErrorsFromSerialized(file, unit.errors); + var errors = _getDiagnosticsFromSerialized(file, unit.errors); _updateHasErrorOrWarningFlag(file, errors); - var result = _createErrorsResultImpl(file: file, errors: errors); + var result = _createErrorsResultImpl(file: file, diagnostics: errors); return result; } ErrorsResultImpl _createErrorsResultImpl({ required FileState file, - required List<AnalysisError> errors, + required List<Diagnostic> diagnostics, }) { return ErrorsResultImpl( session: currentSession, @@ -1590,7 +1594,7 @@ uri: file.uri, isLibrary: file.kind is LibraryFileKind, isPart: file.kind is PartFileKind, - errors: errors, + errors: diagnostics, analysisOptions: file.analysisOptions, ); } @@ -1676,6 +1680,21 @@ } } + /// Return [Diagnostic]s for the given [serialized] diagnostics. + List<Diagnostic> _getDiagnosticsFromSerialized( + FileState file, + List<AnalysisDriverUnitError> serialized, + ) { + List<Diagnostic> diagnostics = <Diagnostic>[]; + for (AnalysisDriverUnitError error in serialized) { + var analysisError = ErrorEncoding.decode(file.source, error); + if (analysisError != null) { + diagnostics.add(analysisError); + } + } + return diagnostics; + } + void _getErrors(String path) { var file = _fsState.getFileForPath(path); @@ -1781,21 +1800,6 @@ _analyzeFile(path); } - /// Return [AnalysisError]s for the given [serialized] errors. - List<AnalysisError> _getErrorsFromSerialized( - FileState file, - List<AnalysisDriverUnitError> serialized, - ) { - List<AnalysisError> errors = <AnalysisError>[]; - for (AnalysisDriverUnitError error in serialized) { - var analysisError = ErrorEncoding.decode(file.source, error); - if (analysisError != null) { - errors.add(analysisError); - } - } - return errors; - } - Future<void> _getFilesDefiningClassMemberName( _GetFilesDefiningClassMemberNameRequest request, ) async { @@ -1958,7 +1962,7 @@ isLibrary: file.kind is LibraryFileKind, isPart: file.kind is PartFileKind, errors: [ - AnalysisError.tmp( + Diagnostic.tmp( source: file.source, offset: 0, length: 0, @@ -2329,14 +2333,14 @@ } } - /// Given the list of [errors] for the [file], update the [file]'s + /// Given the list of [diagnostics] for the [file], update the [file]'s /// [FileState.hasErrorOrWarning] flag. void _updateHasErrorOrWarningFlag( FileState file, - List<AnalysisError> errors, + List<Diagnostic> diagnostics, ) { - for (var error in errors) { - var severity = error.errorCode.errorSeverity; + for (var diagnostic in diagnostics) { + var severity = diagnostic.errorCode.errorSeverity; if (severity == DiagnosticSeverity.ERROR) { file.hasErrorOrWarning = true; return; @@ -2663,7 +2667,7 @@ } class ErrorEncoding { - static AnalysisError? decode(Source source, AnalysisDriverUnitError error) { + static Diagnostic? decode(Source source, AnalysisDriverUnitError error) { String errorName = error.uniqueName; DiagnosticCode? diagnosticCode = errorCodeByUniqueName(errorName) ?? _lintCodeByUniqueName(errorName); @@ -2691,7 +2695,7 @@ ); } - return AnalysisError.forValues( + return Diagnostic.forValues( source: source, offset: error.offset, length: error.length, @@ -2702,9 +2706,9 @@ ); } - static AnalysisDriverUnitErrorBuilder encode(AnalysisError error) { + static AnalysisDriverUnitErrorBuilder encode(Diagnostic diagnostic) { var contextMessages = <DiagnosticMessageBuilder>[]; - for (var message in error.contextMessages) { + for (var message in diagnostic.contextMessages) { contextMessages.add( DiagnosticMessageBuilder( filePath: message.filePath, @@ -2717,11 +2721,11 @@ } return AnalysisDriverUnitErrorBuilder( - offset: error.offset, - length: error.length, - uniqueName: error.errorCode.uniqueName, - message: error.message, - correction: error.correctionMessage ?? '', + offset: diagnostic.offset, + length: diagnostic.length, + uniqueName: diagnostic.errorCode.uniqueName, + message: diagnostic.message, + correction: diagnostic.correctionMessage ?? '', contextMessages: contextMessages, ); }
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart index 6886eda..21d8713 100644 --- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart +++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -13,7 +13,7 @@ import 'package:analyzer/dart/analysis/features.dart'; import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/dart/element/element.dart'; -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/source/file_source.dart'; @@ -2109,7 +2109,8 @@ class ParsedFileState { final String code; final CompilationUnitImpl unit; - final List<AnalysisError> errors; + // TODO(srawlins): Rename to `diagnostics`. + final List<Diagnostic> errors; ParsedFileState({ required this.code,
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart index cf53d57..5d52af6 100644 --- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart +++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -4,6 +4,7 @@ import 'package:analyzer/dart/analysis/declared_variables.dart'; import 'package:analyzer/dart/analysis/features.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/source/file_source.dart'; @@ -129,7 +130,7 @@ var results = <UnitAnalysisResult>[]; for (var fileAnalysis in _libraryFiles.values) { var errors = fileAnalysis.errorListener.errors; - errors = _filterIgnoredErrors(fileAnalysis, errors); + errors = _filterIgnoredDiagnostics(fileAnalysis, errors); results.add( UnitAnalysisResult(fileAnalysis.file, fileAnalysis.unit, errors), ); @@ -564,25 +565,25 @@ } } - /// Returns a subset of the given [errors] that are not marked as ignored in + /// Returns a subset of the given [diagnostics] that are not marked as ignored in /// the file. - List<AnalysisError> _filterIgnoredErrors( + List<Diagnostic> _filterIgnoredDiagnostics( FileAnalysis fileAnalysis, - List<AnalysisError> errors, + List<Diagnostic> diagnostics, ) { - if (errors.isEmpty) { - return errors; + if (diagnostics.isEmpty) { + return diagnostics; } IgnoreInfo ignoreInfo = fileAnalysis.ignoreInfo; if (!ignoreInfo.hasIgnores) { - return errors; + return diagnostics; } var unignorableCodes = _analysisOptions.unignorableNames; - bool isIgnored(AnalysisError error) { - var code = error.errorCode; + bool isIgnored(Diagnostic diagnostic) { + var code = diagnostic.errorCode; // Don't allow un-ignorable codes to be ignored. if (unignorableCodes.contains(code.name) || unignorableCodes.contains(code.uniqueName) || @@ -590,10 +591,10 @@ unignorableCodes.contains(code.name.toUpperCase())) { return false; } - return ignoreInfo.ignored(error); + return ignoreInfo.ignored(diagnostic); } - return errors.where((AnalysisError e) => !isIgnored(e)).toList(); + return diagnostics.where((Diagnostic e) => !isIgnored(e)).toList(); } /// Find constants in [unit] to compute. @@ -1120,7 +1121,8 @@ class UnitAnalysisResult { final FileState file; final CompilationUnitImpl unit; - final List<AnalysisError> errors; + // TODO(srawlins): Renamed to `diagnostics`. + final List<Diagnostic> errors; UnitAnalysisResult(this.file, this.unit, this.errors); }
diff --git a/pkg/analyzer/lib/src/dart/analysis/results.dart b/pkg/analyzer/lib/src/dart/analysis/results.dart index bec166f..5d2173a 100644 --- a/pkg/analyzer/lib/src/dart/analysis/results.dart +++ b/pkg/analyzer/lib/src/dart/analysis/results.dart
@@ -7,7 +7,7 @@ import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/element/element.dart'; -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/dart/analysis/file_state.dart'; @@ -197,7 +197,7 @@ class ErrorsResultImpl implements ErrorsResult { @override - final List<AnalysisError> errors; + final List<Diagnostic> errors; @override final bool isLibrary; @@ -334,7 +334,7 @@ final CompilationUnit unit; @override - final List<AnalysisError> errors; + final List<Diagnostic> errors; ParsedUnitResultImpl({ required super.session, @@ -349,7 +349,7 @@ final String content; @override - final List<AnalysisError> errors; + final List<Diagnostic> errors; @override final CompilationUnit unit; @@ -481,7 +481,7 @@ final CompilationUnitImpl unit; @override - final List<AnalysisError> errors; + final List<Diagnostic> errors; ResolvedUnitResultImpl({ required super.session,
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart index 9f3a259..03781bb 100644 --- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart +++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -15,6 +15,7 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/src/dart/ast/ast.dart'; @@ -836,7 +837,7 @@ .WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION, )) { _errorReporter.reportError( - AnalysisError.tmp( + Diagnostic.tmp( source: _errorReporter.source, offset: error.offset, length: error.length, @@ -847,7 +848,7 @@ ); } else if (defaultDiagnosticCode != null) { _errorReporter.reportError( - AnalysisError.tmp( + Diagnostic.tmp( source: _errorReporter.source, offset: error.offset, length: error.length,
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index 99a6bf1..89c5b69 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -17,7 +17,7 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/source/source.dart'; import 'package:analyzer/src/dart/analysis/experiments.dart'; @@ -1658,21 +1658,21 @@ /// // TODO(kallentu): Remove this field once we fix up g3's dependency on // annotations having a valid result as well as unresolved errors. - List<AnalysisError>? additionalErrors; + List<Diagnostic>? additionalErrors; /// Initialize a newly created annotation. The given [compilationUnit] is the /// compilation unit in which the annotation appears. ElementAnnotationImpl(this.compilationUnit); @override - List<AnalysisError> get constantEvaluationErrors { + List<Diagnostic> get constantEvaluationErrors { var evaluationResult = this.evaluationResult; var additionalErrors = this.additionalErrors; if (evaluationResult is InvalidConstant) { // When we have an [InvalidConstant], we don't report the additional // errors because this result contains the most relevant error. return [ - AnalysisError.tmp( + Diagnostic.tmp( source: source, offset: evaluationResult.offset, length: evaluationResult.length, @@ -1682,7 +1682,7 @@ ), ]; } - return additionalErrors ?? const <AnalysisError>[]; + return additionalErrors ?? const <Diagnostic>[]; } @override
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart index b547a4a..c44bd3e 100644 --- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart +++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -8,7 +8,7 @@ import 'package:analyzer/dart/analysis/features.dart'; import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/element/element.dart'; -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/analysis_options/analysis_options_provider.dart'; @@ -328,22 +328,22 @@ errorsSignatureBuilder.addString(file.contentHash); var errorsKey = '${errorsSignatureBuilder.toHex()}.errors'; - List<AnalysisError> errors; + List<Diagnostic> diagnostics; var bytes = _errorResultsCache.get(errorsKey); if (bytes != null) { var data = CiderUnitErrors.fromBuffer(bytes); - errors = + diagnostics = data.errors.map((error) { return ErrorEncoding.decode(file.source, error)!; }).toList(); } else { var unitResult = await resolve(path: path, performance: performance); - errors = unitResult.errors; + diagnostics = unitResult.errors; _errorResultsCache.put( errorsKey, CiderUnitErrorsBuilder( - errors: errors.map(ErrorEncoding.encode).toList(), + errors: diagnostics.map(ErrorEncoding.encode).toList(), ).toBuffer(), ); } @@ -356,7 +356,7 @@ lineInfo: file.lineInfo, isLibrary: file.kind is LibraryFileKind, isPart: file.kind is PartFileKind, - errors: errors, + errors: diagnostics, analysisOptions: file.analysisOptions, ); });
diff --git a/pkg/analyzer/lib/src/dart/scanner/scanner.dart b/pkg/analyzer/lib/src/dart/scanner/scanner.dart index 07e01f5..b3ed234 100644 --- a/pkg/analyzer/lib/src/dart/scanner/scanner.dart +++ b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
@@ -10,7 +10,7 @@ import 'package:_fe_analyzer_shared/src/scanner/token.dart' show Token, TokenType; import 'package:analyzer/dart/analysis/features.dart'; -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/source/source.dart'; import 'package:analyzer/src/dart/analysis/experiments.dart'; @@ -129,7 +129,7 @@ List<Object?>? arguments, ) { _errorListener.onError( - AnalysisError.tmp( + Diagnostic.tmp( source: source, offset: offset, length: 1, @@ -202,7 +202,7 @@ var latestVersion = ExperimentStatus.currentVersion; if (overrideVersion > latestVersion) { _errorListener.onError( - AnalysisError.tmp( + Diagnostic.tmp( source: source, offset: versionToken.offset, length: versionToken.length,
diff --git a/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart b/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart index 02f5c53..16bbd48 100644 --- a/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart +++ b/pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart
@@ -19,13 +19,13 @@ /// Return a diagnostic indicating that [duplicate] uses the same [variable] /// as a previous [original] node in a pattern assignment. - AnalysisError duplicateAssignmentPatternVariable({ + Diagnostic duplicateAssignmentPatternVariable({ required Source source, required PromotableElement variable, required AssignedVariablePatternImpl original, required AssignedVariablePatternImpl duplicate, }) { - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicate.offset, length: duplicate.length, @@ -45,7 +45,7 @@ /// Return a diagnostic indicating that [duplicateElement] reuses a name /// already used by [originalElement]. - AnalysisError duplicateDefinition( + Diagnostic duplicateDefinition( DiagnosticCode code, Element duplicateElement, Element originalElement, @@ -55,7 +55,7 @@ var duplicateFragment = duplicate.firstFragment; var original = originalElement.nonSynthetic2; var originalFragment = original.firstFragment; - return AnalysisError.tmp( + return Diagnostic.tmp( source: duplicateFragment.libraryFragment!.source, offset: duplicateFragment.nameOffset2 ?? -1, length: duplicate.name3!.length, @@ -75,14 +75,14 @@ /// Return a diagnostic indicating that [duplicateNode] reuses a name /// already used by [originalNode]. - AnalysisError duplicateDefinitionForNodes( + Diagnostic duplicateDefinitionForNodes( Source source, DiagnosticCode code, SyntacticEntity duplicateNode, SyntacticEntity originalNode, List<Object> arguments, ) { - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicateNode.offset, length: duplicateNode.length, @@ -102,14 +102,14 @@ /// Return a diagnostic indicating that [duplicateField] reuses a name /// already used by [originalField]. - AnalysisError duplicateFieldDefinitionInLiteral( + Diagnostic duplicateFieldDefinitionInLiteral( Source source, NamedExpression duplicateField, NamedExpression originalField, ) { var duplicateNode = duplicateField.name.label; var duplicateName = duplicateNode.name; - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicateNode.offset, length: duplicateNode.length, @@ -132,14 +132,14 @@ /// /// This method requires that both the [duplicateField] and [originalField] /// have a non-null `name`. - AnalysisError duplicateFieldDefinitionInType( + Diagnostic duplicateFieldDefinitionInType( Source source, RecordTypeAnnotationField duplicateField, RecordTypeAnnotationField originalField, ) { var duplicateNode = duplicateField.name!; var duplicateName = duplicateNode.lexeme; - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicateNode.offset, length: duplicateNode.length, @@ -159,7 +159,7 @@ /// Return a diagnostic indicating that [duplicateField] reuses a name /// already used by [originalField]. - AnalysisError duplicatePatternField({ + Diagnostic duplicatePatternField({ required Source source, required String name, required PatternField duplicateField, @@ -169,7 +169,7 @@ var originalTarget = originalNode.name ?? originalNode.colon; var duplicateNode = duplicateField.name!; var duplicateTarget = duplicateNode.name ?? duplicateNode.colon; - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicateTarget.offset, length: duplicateTarget.length, @@ -189,12 +189,12 @@ /// Return a diagnostic indicating that [duplicateElement] reuses a name /// already used by [originalElement]. - AnalysisError duplicateRestElementInPattern({ + Diagnostic duplicateRestElementInPattern({ required Source source, required RestPatternElement originalElement, required RestPatternElement duplicateElement, }) { - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicateElement.offset, length: duplicateElement.length, @@ -213,12 +213,12 @@ /// Return a diagnostic indicating that the [duplicateElement] (in a constant /// set) is a duplicate of the [originalElement]. - AnalysisError equalElementsInConstSet( + Diagnostic equalElementsInConstSet( Source source, Expression duplicateElement, Expression originalElement, ) { - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicateElement.offset, length: duplicateElement.length, @@ -237,12 +237,12 @@ /// Return a diagnostic indicating that the [duplicateKey] (in a constant map) /// is a duplicate of the [originalKey]. - AnalysisError equalKeysInConstMap( + Diagnostic equalKeysInConstMap( Source source, Expression duplicateKey, Expression originalKey, ) { - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicateKey.offset, length: duplicateKey.length, @@ -261,12 +261,12 @@ /// Return a diagnostic indicating that the [duplicateKey] (in a map pattern) /// is a duplicate of the [originalKey]. - AnalysisError equalKeysInMapPattern( + Diagnostic equalKeysInMapPattern( Source source, Expression duplicateKey, Expression originalKey, ) { - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: duplicateKey.offset, length: duplicateKey.length, @@ -283,7 +283,7 @@ ); } - AnalysisError invalidNullAwareAfterShortCircuit( + Diagnostic invalidNullAwareAfterShortCircuit( Source source, int offset, int length, @@ -291,7 +291,7 @@ Token previousToken, ) { var lexeme = previousToken.lexeme; - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: offset, length: length, @@ -312,7 +312,7 @@ /// Return a diagnostic indicating that [member] is not a correct override of /// [superMember]. - AnalysisError invalidOverride( + Diagnostic invalidOverride( Source source, DiagnosticCode code, SyntacticEntity errorNode, @@ -324,7 +324,7 @@ // named, so we can safely assume `_thisMember.enclosingElement3.name` and // `superMember.enclosingElement3.name` are non-`null`. var superFragment = superMember.nonSynthetic2.firstFragment; - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: errorNode.offset, length: errorNode.length, @@ -364,7 +364,7 @@ /// Return a diagnostic indicating that the given [nameToken] was referenced /// before it was declared. - AnalysisError referencedBeforeDeclaration( + Diagnostic referencedBeforeDeclaration( Source source, { required Token nameToken, required Element element2, @@ -383,7 +383,7 @@ ), ]; } - return AnalysisError.tmp( + return Diagnostic.tmp( source: source, offset: nameToken.offset, length: nameToken.length,
diff --git a/pkg/analyzer/lib/src/error.dart b/pkg/analyzer/lib/src/error.dart index d75cdce..62db297 100644 --- a/pkg/analyzer/lib/src/error.dart +++ b/pkg/analyzer/lib/src/error.dart
@@ -4,12 +4,12 @@ import 'dart:collection'; -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; -/// A wrapper around [AnalysisError] that provides a more user-friendly string +/// A wrapper around [Diagnostic] that provides a more user-friendly string /// representation. class AnalyzerError implements Exception { - final AnalysisError error; + final Diagnostic error; AnalyzerError(this.error); @@ -78,9 +78,9 @@ : _errors = errors.toList(); /// Creates an [AnalyzerErrorGroup] from a list of lower-level - /// [AnalysisError]s. - AnalyzerErrorGroup.fromAnalysisErrors(Iterable<AnalysisError> errors) - : this(errors.map((e) => AnalyzerError(e))); + /// [Diagnostic]s. + AnalyzerErrorGroup.fromAnalysisErrors(Iterable<Diagnostic> diagnostics) + : this(diagnostics.map((e) => AnalyzerError(e))); /// The errors in this collection. List<AnalyzerError> get errors =>
diff --git a/pkg/analyzer/lib/src/error/ignore_validator.dart b/pkg/analyzer/lib/src/error/ignore_validator.dart index 9add25f..eb86567 100644 --- a/pkg/analyzer/lib/src/error/ignore_validator.dart +++ b/pkg/analyzer/lib/src/error/ignore_validator.dart
@@ -2,6 +2,7 @@ // 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. +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/source/line_info.dart'; @@ -29,7 +30,7 @@ final ErrorReporter _errorReporter; /// The diagnostics that are reported in the file being analyzed. - final List<AnalysisError> _reportedErrors; + final List<Diagnostic> _reportedErrors; /// The information about the ignore comments in the file being analyzed. final IgnoreInfo _ignoreInfo; @@ -284,7 +285,7 @@ } } -extension on AnalysisError { +extension on Diagnostic { String get ignoreName => errorCode.name.toLowerCase(); String get ignoreUniqueName {
diff --git a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart index 40e8677..6994886 100644 --- a/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart +++ b/pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart
@@ -9,6 +9,7 @@ import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/dart/ast/visitor.dart'; import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/src/dart/ast/ast.dart'; @@ -1019,7 +1020,7 @@ if (element != null) { var fragment = element.firstFragment; _errorListener.onError( - AnalysisError.tmp( + Diagnostic.tmp( source: fragment.libraryFragment!.source, offset: fragment.nameOffset2 ??
diff --git a/pkg/analyzer/lib/src/fasta/error_converter.dart b/pkg/analyzer/lib/src/fasta/error_converter.dart index cb9620a..2a0782e 100644 --- a/pkg/analyzer/lib/src/fasta/error_converter.dart +++ b/pkg/analyzer/lib/src/fasta/error_converter.dart
@@ -9,6 +9,7 @@ codeAssertAsExpression, codeSetOrMapLiteralTooManyTypeArguments; import 'package:analyzer/dart/ast/token.dart' show Token; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/src/dart/error/syntactic_errors.dart'; @@ -565,7 +566,7 @@ var errorCode = fastaAnalyzerErrorCodes[index]; if (errorCode != null) { errorReporter!.reportError( - AnalysisError.tmp( + Diagnostic.tmp( source: errorReporter!.source, offset: offset, length: length, @@ -602,7 +603,7 @@ }) { if (errorReporter != null) { errorReporter!.reportError( - AnalysisError.tmp( + Diagnostic.tmp( source: errorReporter!.source, offset: offset, length: length,
diff --git a/pkg/analyzer/lib/src/ignore_comments/ignore_info.dart b/pkg/analyzer/lib/src/ignore_comments/ignore_info.dart index 9f37cda..5bbc61e 100644 --- a/pkg/analyzer/lib/src/ignore_comments/ignore_info.dart +++ b/pkg/analyzer/lib/src/ignore_comments/ignore_info.dart
@@ -4,6 +4,7 @@ import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/token.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/utilities/extensions/string.dart'; @@ -190,10 +191,10 @@ return ignoredOnLine; } - /// Whether [error] is ignored via an inline "ignore" comment. - bool ignored(AnalysisError error, {String? pluginName}) { - var line = _lineInfo.getLocation(error.offset).lineNumber; - return _ignoredAt(error.errorCode, line, pluginName: pluginName); + /// Whether [diagnostic] is ignored via an inline "ignore" comment. + bool ignored(Diagnostic diagnostic, {String? pluginName}) { + var line = _lineInfo.getLocation(diagnostic.offset).lineNumber; + return _ignoredAt(diagnostic.errorCode, line, pluginName: pluginName); } /// Returns whether the [errorCode] is ignored at the given [line].
diff --git a/pkg/analyzer/lib/src/lint/constants.dart b/pkg/analyzer/lib/src/lint/constants.dart index 20dafe7..e6cfa3e 100644 --- a/pkg/analyzer/lib/src/lint/constants.dart +++ b/pkg/analyzer/lib/src/lint/constants.dart
@@ -5,6 +5,7 @@ import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/dart/constant/value.dart'; import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/src/dart/ast/ast.dart'; @@ -23,7 +24,8 @@ final DartObject? value; /// The errors reported during the evaluation. - final List<AnalysisError> errors; + // TODO(srawlins): Rename to `diagnostics`. + final List<Diagnostic> errors; LinterConstantEvaluationResult._(this.value, this.errors); } @@ -36,7 +38,7 @@ bool hasConstError = false; @override - void onError(AnalysisError error) { + void onError(Diagnostic error) { ErrorCode errorCode = error.errorCode; if (errorCode is CompileTimeErrorCode) { switch (errorCode) {
diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart index 4d31e12..4b5ab12 100644 --- a/pkg/analyzer/lib/src/lint/linter.dart +++ b/pkg/analyzer/lib/src/lint/linter.dart
@@ -299,7 +299,7 @@ ErrorCode? errorCode, }) { // Cache error and location info for creating `AnalysisErrorInfo`s. - var error = AnalysisError.tmp( + var error = Diagnostic.tmp( source: node.source, offset: node.span.start.offset, length: node.span.length,
diff --git a/pkg/analyzer/lib/src/lint/options_rule_validator.dart b/pkg/analyzer/lib/src/lint/options_rule_validator.dart index ad54f35..30fc59e 100644 --- a/pkg/analyzer/lib/src/lint/options_rule_validator.dart +++ b/pkg/analyzer/lib/src/lint/options_rule_validator.dart
@@ -2,7 +2,7 @@ // 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. -import 'package:analyzer/error/error.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/src/analysis_options/error/option_codes.dart'; import 'package:analyzer/src/lint/linter.dart'; @@ -46,7 +46,7 @@ } @override - List<AnalysisError> validate(ErrorReporter reporter, YamlMap options) { + List<Diagnostic> validate(ErrorReporter reporter, YamlMap options) { var node = options.valueAt(linter); if (node is YamlMap) { var rules = node.valueAt(rulesKey);
diff --git a/pkg/analyzer/lib/src/manifest/manifest_validator.dart b/pkg/analyzer/lib/src/manifest/manifest_validator.dart index 31f69a6..600db1b 100644 --- a/pkg/analyzer/lib/src/manifest/manifest_validator.dart +++ b/pkg/analyzer/lib/src/manifest/manifest_validator.dart
@@ -2,6 +2,7 @@ // 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. +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/source/source.dart'; @@ -408,7 +409,7 @@ ManifestValidator(this.source); /// Validate the [content] of the Android Manifest file. - List<AnalysisError> validate(String content, bool checkManifest) { + List<Diagnostic> validate(String content, bool checkManifest) { // TODO(srawlins): Simplify [checkManifest] notion. Why call the method if // the caller always knows whether it should just return empty? if (!checkManifest) return [];
diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart b/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart index 252ba1c..62cffbf 100644 --- a/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart +++ b/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart
@@ -36,7 +36,7 @@ /// /// The [source] argument must be the source of the file being validated. /// The [provider] argument must provide access to the file-system. -List<AnalysisError> validatePubspec({ +List<Diagnostic> validatePubspec({ // TODO(brianwilkerson): This method needs to take a `YamlDocument` rather // than the contents of the document so that it can validate an empty file. required YamlNode contents,
diff --git a/pkg/analyzer/lib/src/pubspec/validators/missing_dependency_validator.dart b/pkg/analyzer/lib/src/pubspec/validators/missing_dependency_validator.dart index 93f9327..fe751dc 100644 --- a/pkg/analyzer/lib/src/pubspec/validators/missing_dependency_validator.dart +++ b/pkg/analyzer/lib/src/pubspec/validators/missing_dependency_validator.dart
@@ -54,7 +54,7 @@ /// section of the pubspec.yaml file. /// Returns the list of names of the packages to be added/removed for these /// sections. - List<AnalysisError> validate(Set<String> usedDeps, Set<String> usedDevDeps) { + List<Diagnostic> validate(Set<String> usedDeps, Set<String> usedDevDeps) { var contents = this.contents; if (contents is! YamlMap) { return [];
diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/task/options.dart index ad0fcd4..90458f7 100644 --- a/pkg/analyzer/lib/src/task/options.dart +++ b/pkg/analyzer/lib/src/task/options.dart
@@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/dart/analysis/formatter_options.dart'; +import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/source/error_processor.dart'; @@ -22,14 +23,14 @@ import 'package:source_span/source_span.dart'; import 'package:yaml/yaml.dart'; -List<AnalysisError> analyzeAnalysisOptions( +List<Diagnostic> analyzeAnalysisOptions( Source source, String content, SourceFactory sourceFactory, String contextRoot, VersionConstraint? sdkVersionConstraint, ) { - List<AnalysisError> errors = []; + List<Diagnostic> errors = []; Source initialSource = source; SourceSpan? initialIncludeSpan; AnalysisOptionsProvider optionsProvider = AnalysisOptionsProvider( @@ -42,14 +43,14 @@ // functions, and should be refactored to a class maintaining state, with less // variable shadowing. void addDirectErrorOrIncludedError( - List<AnalysisError> validationErrors, + List<Diagnostic> validationErrors, Source source, { required bool sourceIsOptionsForContextRoot, }) { if (!sourceIsOptionsForContextRoot) { // [source] is an included file, and we should only report errors in // [initialSource], noting that the included file has warnings. - for (AnalysisError error in validationErrors) { + for (Diagnostic error in validationErrors) { var args = [ source.fullName, error.offset.toString(), @@ -57,7 +58,7 @@ error.message, ]; errors.add( - AnalysisError.tmp( + Diagnostic.tmp( source: initialSource, offset: initialIncludeSpan!.start.offset, length: initialIncludeSpan!.length, @@ -116,7 +117,7 @@ var includedSource = sourceFactory.resolveUri(source, includeUri); if (includedSource == initialSource) { errors.add( - AnalysisError.tmp( + Diagnostic.tmp( source: initialSource, offset: initialIncludeSpan!.start.offset, length: initialIncludeSpan!.length, @@ -128,7 +129,7 @@ } if (includedSource == null || !includedSource.exists()) { errors.add( - AnalysisError.tmp( + Diagnostic.tmp( source: initialSource, offset: initialIncludeSpan!.start.offset, length: initialIncludeSpan!.length, @@ -141,7 +142,7 @@ var spanInChain = includeChain[includedSource]; if (spanInChain != null) { errors.add( - AnalysisError.tmp( + Diagnostic.tmp( source: initialSource, offset: initialIncludeSpan!.start.offset, length: initialIncludeSpan!.length, @@ -185,7 +186,7 @@ // Report errors for included option files on the `include` directive // located in the initial options file. errors.add( - AnalysisError.tmp( + Diagnostic.tmp( source: initialSource, offset: initialIncludeSpan!.start.offset, length: initialIncludeSpan!.length, @@ -213,7 +214,7 @@ } on OptionsFormatException catch (e) { SourceSpan span = e.span!; errors.add( - AnalysisError.tmp( + Diagnostic.tmp( source: source, offset: span.start.offset, length: span.length, @@ -246,7 +247,7 @@ /// Validates the legacy 'plugins' options in [options], given /// [firstEnabledPluginName]. -List<AnalysisError> _validateLegacyPluginsOption( +List<Diagnostic> _validateLegacyPluginsOption( Source source, { required YamlMap options, String? firstEnabledPluginName, @@ -405,7 +406,7 @@ _PluginsOptionsValidator(), ]; - List<AnalysisError> validate(YamlMap options) { + List<Diagnostic> validate(YamlMap options) { RecordingErrorListener recorder = RecordingErrorListener(); ErrorReporter reporter = ErrorReporter(recorder, _source); for (var validator in _validators) {
diff --git a/tools/VERSION b/tools/VERSION index d7a6a42..a1f8a82 100644 --- a/tools/VERSION +++ b/tools/VERSION
@@ -27,5 +27,5 @@ MAJOR 3 MINOR 9 PATCH 0 -PRERELEASE 93 +PRERELEASE 94 PRERELEASE_PATCH 0