[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>
This commit is contained in:
pq
2025-01-15 11:24:59 -08:00
committed by Commit Queue
parent 2dc6d31f8a
commit 3394fec2c7
2 changed files with 33 additions and 2 deletions
@@ -9,6 +9,7 @@ import 'package:analyzer/dart/analysis/features.dart';
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 @@ class LibraryAnalyzer {
// 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 @@ class LibraryAnalyzer {
} 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 @@ extension on file_state.DirectiveUri {
return DirectiveUriImpl();
}
}
extension on FileSource {
bool get isGenerated => isGeneratedSource(this);
}
@@ -10,6 +10,7 @@ main() {
defineReflectiveSuite(() {
defineReflectiveTests(UnnecessaryIgnoreTest);
defineReflectiveTests(UnnecessaryIgnoreDisabledTest);
defineReflectiveTests(UnnecessaryIgnoreGeneratedFileTest);
});
}
@@ -35,6 +36,29 @@ void f() {}
}
}
@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