[lint] `unecessary_ignore`: skip generated files Bug: https://github.com/dart-lang/sdk/issues/35234 Change-Id: I7ba59a32906b25c4343edff212cbac3acaa94e41 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/404721 Auto-Submit: Phil Quitslund <pquitslund@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart index f20214b..331906c 100644 --- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart +++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -9,6 +9,7 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/error/listener.dart'; +import 'package:analyzer/source/file_source.dart'; import 'package:analyzer/src/context/source.dart'; import 'package:analyzer/src/dart/analysis/analysis_options.dart'; import 'package:analyzer/src/dart/analysis/file_analysis.dart'; @@ -355,7 +356,9 @@ // This must happen after all other diagnostics have been computed but // before the list of diagnostics has been filtered. - for (var fileAnalysis in _libraryFiles.values) { + for (var fileAnalysis in _libraryFiles.values + // Only validate non-generated files. + .whereNot((f) => f.file.source.isGenerated)) { IgnoreValidator( fileAnalysis.errorReporter, fileAnalysis.errorListener.errors, @@ -717,7 +720,7 @@ } else if (state is LibraryImportWithFile && !state.importedFile.exists) { var errorCode = state.isDocImport ? WarningCode.URI_DOES_NOT_EXIST_IN_DOC_IMPORT - : isGeneratedSource(state.importedSource) + : state.importedSource.isGenerated ? CompileTimeErrorCode.URI_HAS_NOT_BEEN_GENERATED : CompileTimeErrorCode.URI_DOES_NOT_EXIST; errorReporter.atNode( @@ -1152,3 +1155,7 @@ return DirectiveUriImpl(); } } + +extension on FileSource { + bool get isGenerated => isGeneratedSource(this); +}
diff --git a/pkg/linter/test/rules/unnecessary_ignore_test.dart b/pkg/linter/test/rules/unnecessary_ignore_test.dart index e916df0..a538995 100644 --- a/pkg/linter/test/rules/unnecessary_ignore_test.dart +++ b/pkg/linter/test/rules/unnecessary_ignore_test.dart
@@ -10,6 +10,7 @@ defineReflectiveSuite(() { defineReflectiveTests(UnnecessaryIgnoreTest); defineReflectiveTests(UnnecessaryIgnoreDisabledTest); + defineReflectiveTests(UnnecessaryIgnoreGeneratedFileTest); }); } @@ -36,6 +37,29 @@ } @reflectiveTest +class UnnecessaryIgnoreGeneratedFileTest extends LintRuleTest { + @override + String get lintRule => 'unnecessary_ignore'; + + @override + String get testFileName => 'test.g.dart'; + + test_file() async { + await assertNoDiagnostics(r''' +// ignore_for_file: unused_local_variable +void f() {} +'''); + } + + test_line() async { + await assertNoDiagnostics(r''' +// ignore: unused_local_variable +void f() {} +'''); + } +} + +@reflectiveTest class UnnecessaryIgnoreTest extends LintRuleTest { @override String get lintRule => 'unnecessary_ignore';