Skip to content

Commit 515e6f0

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate NullableDereferenceVerifier.
Well, "migrate", ignore `flow`. We will not able to change it until we have the Element2 based implementation. Change-Id: I3d2112837c6e2516370befb14d43b0f1e296bd8e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/395122 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent e819cd8 commit 515e6f0

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

pkg/analyzer/analyzer_use_new_elements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ lib/src/error/duplicate_definition_verifier.dart
107107
lib/src/error/imports_verifier.dart
108108
lib/src/error/inheritance_override.dart
109109
lib/src/error/literal_element_verifier.dart
110-
lib/src/error/nullable_dereference_verifier.dart
111110
lib/src/error/override_verifier.dart
112111
lib/src/error/required_parameters_verifier.dart
113112
lib/src/error/unused_local_elements_verifier.dart

pkg/linter/lib/src/extensions.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,13 @@ extension InhertanceManager3Extension on InheritanceManager3 {
575575
}
576576
}
577577

578+
extension InterfaceElement2Extension on InterfaceElement2 {
579+
/// Whether this element has the exact [name] and defined in the file with
580+
/// the given [uri].
581+
bool isExactly(String name, Uri uri) =>
582+
name3 == name && enclosingElement2.firstFragment.source.uri == uri;
583+
}
584+
578585
extension InterfaceTypeExtension on InterfaceType {
579586
/// Returns the collection of all interfaces that this type implements,
580587
/// including itself.

pkg/linter/lib/src/rules/analyzer_use_new_elements.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:analyzer/file_system/file_system.dart';
1010
import 'package:analyzer/src/dart/element/type_visitor.dart'; // ignore: implementation_imports
1111

1212
import '../analyzer.dart';
13+
import '../extensions.dart';
1314

1415
const _desc = r'Use new element model in opted-in files.';
1516

@@ -54,6 +55,15 @@ bool _isOldModelElement(Element2? element) {
5455
}
5556

5657
bool _isOldModelType(DartType? type) {
58+
if (type is InterfaceType) {
59+
if (type.element3.isExactly(
60+
'FlowAnalysis',
61+
Uri.parse(
62+
'package:_fe_analyzer_shared/src/flow_analysis/flow_analysis.dart'))) {
63+
return false;
64+
}
65+
}
66+
5767
var visitor = _TypeVisitor();
5868
type?.accept(visitor);
5969
return visitor.result;

0 commit comments

Comments
 (0)