Skip to content

Commit 77d673c

Browse files
srawlinsCommit Queue
authored andcommitted
linter: Reduce usage of InheritanceManager3
Change-Id: Ifb33d26de1223a575cf29b7904f1cf1269f4a3e8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/428063 Reviewed-by: Paul Berry <[email protected]> Commit-Queue: Samuel Rawlins <[email protected]>
1 parent 365734b commit 77d673c

12 files changed

+41
-79
lines changed

pkg/linter/lib/src/extensions.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,8 @@ extension LinterContextExtension on LinterContext {
591591
}
592592

593593
extension MethodDeclarationExtension on MethodDeclaration {
594+
bool get hasInheritedMethod => lookUpInheritedMethod() != null;
595+
594596
/// Returns whether this method is an override of a method in any supertype.
595597
bool get isOverride {
596598
var element = declaredFragment?.element;
@@ -621,17 +623,14 @@ extension MethodDeclarationExtension on MethodDeclaration {
621623
}
622624
}
623625

624-
bool hasInheritedMethod(InheritanceManager3 inheritanceManager) =>
625-
lookUpInheritedMethod(inheritanceManager) != null;
626-
627-
MethodElement? lookUpInheritedMethod(InheritanceManager3 inheritanceManager) {
626+
MethodElement? lookUpInheritedMethod() {
628627
var declaredElement = declaredFragment?.element;
629628
if (declaredElement != null) {
630629
var parent = declaredElement.enclosingElement2;
631630
if (parent is InterfaceElement) {
632631
var methodName = Name.forElement(declaredElement);
633632
if (methodName == null) return null;
634-
var inherited = inheritanceManager.getInherited4(parent, methodName);
633+
var inherited = parent.getInheritedMember(methodName);
635634
if (inherited is MethodElement2OrMember) return inherited;
636635
}
637636
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ class _Visitor extends SimpleAstVisitor<void> {
4444
var element = fragment.element;
4545
if (element.isSealed) return;
4646

47-
var interface = context.inheritanceManager.getInterface2(element);
48-
var map = interface.map2;
49-
for (var member in map.values) {
47+
for (var member in element.interfaceMembers.values) {
5048
var enclosingElement = member.enclosingElement2;
5149
if (enclosingElement is ClassElement &&
5250
!enclosingElement.isDartCoreObject) {

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

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class AvoidImplementingValueTypes extends LintRule {
2323
NodeLintRegistry registry,
2424
LinterContext context,
2525
) {
26-
var visitor = _Visitor(this, context.inheritanceManager);
26+
var visitor = _Visitor(this);
2727
registry.addClassDeclaration(this, visitor);
2828
}
2929
}
@@ -32,9 +32,8 @@ class _Visitor extends SimpleAstVisitor<void> {
3232
static var equalsName = Name(null, '==');
3333

3434
final LintRule rule;
35-
final InheritanceManager3 inheritanceManager;
3635

37-
_Visitor(this.rule, this.inheritanceManager);
36+
_Visitor(this.rule);
3837

3938
@override
4039
void visitClassDeclaration(ClassDeclaration node) {
@@ -53,11 +52,7 @@ class _Visitor extends SimpleAstVisitor<void> {
5352
}
5453

5554
bool _overridesEquals(InterfaceElement element) {
56-
var member = inheritanceManager.getMember4(
57-
element,
58-
equalsName,
59-
concrete: true,
60-
);
55+
var member = element.getInterfaceMember(equalsName);
6156
var definingLibrary = member?.enclosingElement2?.library2;
6257
return definingLibrary != null && !definingLibrary.isDartCore;
6358
}

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class _Visitor extends SimpleAstVisitor<void> {
8686
!node.isSetter &&
8787
!declaredElement.isPrivate &&
8888
!node.isOperator &&
89-
!node.hasInheritedMethod(context.inheritanceManager) &&
89+
!node.hasInheritedMethod &&
9090
!_isOverridingMember(declaredElement)) {
9191
checkParams(node.parameters?.parameters);
9292
}
@@ -100,11 +100,7 @@ class _Visitor extends SimpleAstVisitor<void> {
100100
if (name == null) return false;
101101

102102
var libraryUri = classElement.library2.uri;
103-
return context.inheritanceManager.getInherited3(
104-
classElement.thisType,
105-
Name(libraryUri, name),
106-
) !=
107-
null;
103+
return classElement.getInheritedMember(Name(libraryUri, name)) != null;
108104
}
109105

110106
static bool _isBoolean(FormalParameter node) {

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,10 @@ class _Visitor extends SimpleAstVisitor<void> {
4040
/// Whether the `wildcard_variables` feature is enabled.
4141
final bool _wildCardVariablesEnabled;
4242

43-
final InheritanceManager3 inheritanceManager;
44-
4543
final LintRule rule;
4644

4745
_Visitor(this.rule, LinterContext context)
48-
: _wildCardVariablesEnabled = context.isEnabled(Feature.wildcard_variables),
49-
inheritanceManager = context.inheritanceManager;
46+
: _wildCardVariablesEnabled = context.isEnabled(Feature.wildcard_variables);
5047

5148
bool isWildcardIdentifier(String lexeme) =>
5249
_wildCardVariablesEnabled && lexeme == '_';
@@ -73,10 +70,8 @@ class _Visitor extends SimpleAstVisitor<void> {
7370
if (parentElement is! InterfaceElement) return;
7471
if (parentElement.isPrivate) return;
7572

76-
var parentMethod = inheritanceManager.getMember4(
77-
parentElement,
73+
var parentMethod = parentElement.getInheritedConcreteMember(
7874
Name(parentElement.library2.uri, node.name.lexeme),
79-
forSuper: true,
8075
);
8176
if (parentMethod == null) return;
8277

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

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class AvoidSettersWithoutGetters extends LintRule {
2222
NodeLintRegistry registry,
2323
LinterContext context,
2424
) {
25-
var visitor = _Visitor(this, context.inheritanceManager);
25+
var visitor = _Visitor(this);
2626
registry.addClassDeclaration(this, visitor);
2727
registry.addEnumDeclaration(this, visitor);
2828
registry.addExtensionTypeDeclaration(this, visitor);
@@ -32,9 +32,8 @@ class AvoidSettersWithoutGetters extends LintRule {
3232

3333
class _Visitor extends SimpleAstVisitor<void> {
3434
final LintRule rule;
35-
final InheritanceManager3 inheritanceManager;
3635

37-
_Visitor(this.rule, this.inheritanceManager);
36+
_Visitor(this.rule);
3837

3938
@override
4039
void visitClassDeclaration(ClassDeclaration node) {
@@ -63,20 +62,17 @@ class _Visitor extends SimpleAstVisitor<void> {
6362
if (name == null) continue;
6463

6564
// If we're overriding a setter, don't report here.
66-
var overridden = inheritanceManager.getOverridden4(interface, name);
65+
var overridden = interface.getOverridden(name);
6766
if (overridden != null && overridden.isNotEmpty) continue;
6867

6968
var getterName = element.name3;
7069
if (getterName == null) continue;
7170

72-
// Check for a declared (static) getter.
73-
ExecutableElement? getter = interface.getGetter2(getterName);
74-
// Then look up for an inherited one.
75-
getter ??= inheritanceManager.getMember4(
76-
interface,
77-
name.forGetter,
78-
concrete: true,
79-
);
71+
var getter =
72+
// Check for a declared (static) getter.
73+
interface.getGetter2(getterName) ??
74+
// Then look for an inherited one.
75+
interface.getInheritedConcreteMember(name.forGetter);
8076

8177
if (getter == null) {
8278
rule.reportAtToken(member.name);

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class DiagnosticDescribeAllProperties extends LintRule {
2929
NodeLintRegistry registry,
3030
LinterContext context,
3131
) {
32-
var visitor = _Visitor(this, context.inheritanceManager);
32+
var visitor = _Visitor(this);
3333
registry.addClassDeclaration(this, visitor);
3434
}
3535
}
@@ -64,9 +64,8 @@ class _IdentifierVisitor extends RecursiveAstVisitor<void> {
6464

6565
class _Visitor extends SimpleAstVisitor<void> {
6666
final LintRule rule;
67-
final InheritanceManager3 inheritanceManager;
6867

69-
_Visitor(this.rule, this.inheritanceManager);
68+
_Visitor(this.rule);
7069

7170
void removeReferences(MethodDeclaration? method, List<Token> properties) {
7271
method?.body.accept(_IdentifierVisitor(properties));
@@ -132,7 +131,6 @@ class _Visitor extends SimpleAstVisitor<void> {
132131
var name = member.name3;
133132
if (name == null) return false;
134133

135-
return inheritanceManager.getInherited4(classElement, Name(null, name)) !=
136-
null;
134+
return classElement.getInheritedMember(Name(null, name)) != null;
137135
}
138136
}

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,15 @@ class OverriddenFields extends LintRule {
2424
NodeLintRegistry registry,
2525
LinterContext context,
2626
) {
27-
var visitor = _Visitor(this, context.inheritanceManager);
27+
var visitor = _Visitor(this);
2828
registry.addFieldDeclaration(this, visitor);
2929
}
3030
}
3131

3232
class _Visitor extends SimpleAstVisitor<void> {
3333
final LintRule rule;
34-
final InheritanceManager3 inheritanceManager;
3534

36-
_Visitor(this.rule, this.inheritanceManager);
35+
_Visitor(this.rule);
3736

3837
@override
3938
void visitFieldDeclaration(FieldDeclaration node) {
@@ -43,10 +42,8 @@ class _Visitor extends SimpleAstVisitor<void> {
4342
for (var variable in node.fields.variables) {
4443
var parent = variable.declaredFragment?.element.enclosingElement2;
4544
if (parent is InterfaceElement) {
46-
var overriddenMember = inheritanceManager.getMember4(
47-
parent,
45+
var overriddenMember = parent.getInheritedConcreteMember(
4846
Name(parent.library2.uri, variable.name.lexeme),
49-
forSuper: true,
5047
);
5148
if (overriddenMember is GetterElement2OrMember &&
5249
overriddenMember.isSynthetic) {

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,12 @@ class PreferFinalFields extends LintRule {
3131

3232
class _DeclarationsCollector extends RecursiveAstVisitor<void> {
3333
final fields = <FieldElement, VariableDeclaration>{};
34-
final InheritanceManager3 inheritanceManager;
3534

36-
_DeclarationsCollector(this.inheritanceManager);
3735
bool overridesField(FieldElement field) {
3836
var enclosingElement = field.enclosingElement2;
3937
if (enclosingElement is! InterfaceElement) return false;
40-
return inheritanceManager.getOverridden4(
41-
enclosingElement,
38+
39+
return enclosingElement.getOverridden(
4240
Name.forLibrary(field.library2, '${field.name3!}='),
4341
) !=
4442
null;
@@ -112,9 +110,7 @@ class _Visitor extends SimpleAstVisitor<void> {
112110

113111
@override
114112
void visitCompilationUnit(CompilationUnit node) {
115-
var declarationsCollector = _DeclarationsCollector(
116-
context.inheritanceManager,
117-
);
113+
var declarationsCollector = _DeclarationsCollector();
118114
node.accept(declarationsCollector);
119115
var fields = declarationsCollector.fields;
120116

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,12 @@ class _DeclarationGatherer {
9494
return false;
9595
}
9696

97-
var nameObj = Name.forElement(element);
98-
if (nameObj == null) {
97+
var name = Name.forElement(element);
98+
if (name == null) {
9999
return false;
100100
}
101101

102-
var inheritance = linterContext.inheritanceManager;
103-
return inheritance.getOverridden(containerElement, nameObj) != null;
102+
return containerElement.getOverridden(name) != null;
104103
}
105104

106105
for (var member in members) {

0 commit comments

Comments
 (0)