Skip to content

Commit d3de4d9

Browse files
pqCommit Queue
authored and
Commit Queue
committed
[element model] migrate scope
Bug: https://github.com/dart-lang/linter/issues/5099 Change-Id: I85deb22dbe24f024ea69643dc4a3b30348a7fbad Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/394880 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Phil Quitslund <[email protected]>
1 parent 99315cb commit d3de4d9

File tree

7 files changed

+18
-16
lines changed

7 files changed

+18
-16
lines changed

pkg/analyzer/lib/dart/element/scope.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analyzer/dart/element/element.dart';
6+
import 'package:analyzer/dart/element/element2.dart';
67

78
/// Scopes are used to resolve names to elements.
89
///
@@ -21,5 +22,7 @@ abstract class Scope {
2122
/// Clients may not extend, implement or mix-in this class.
2223
abstract class ScopeLookupResult {
2324
Element? get getter;
25+
Element2? get getter2;
2426
Element? get setter;
27+
Element2? get setter2;
2528
}

pkg/analyzer/lib/src/dart/element/scope.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import 'package:_fe_analyzer_shared/src/scanner/string_canonicalizer.dart';
66
import 'package:analyzer/dart/analysis/features.dart';
77
import 'package:analyzer/dart/element/element.dart';
8+
import 'package:analyzer/dart/element/element2.dart';
89
import 'package:analyzer/dart/element/scope.dart';
910
import 'package:analyzer/src/dart/element/element.dart';
1011
import 'package:analyzer/src/dart/element/extensions.dart';
1112
import 'package:analyzer/src/summary2/combinator.dart';
1213
import 'package:analyzer/src/utilities/extensions/collection.dart';
14+
import 'package:analyzer/src/utilities/extensions/element.dart';
1315

1416
/// The scope for the initializers in a constructor.
1517
class ConstructorInitializerScope extends EnclosedScope {
@@ -774,6 +776,11 @@ class ScopeLookupResultImpl implements ScopeLookupResult {
774776
required this.getter,
775777
required this.setter,
776778
});
779+
780+
@override
781+
Element2? get getter2 => getter?.asElement2;
782+
@override
783+
Element2? get setter2 => setter?.asElement2;
777784
}
778785

779786
class TypeParameterScope extends EnclosedScope {

pkg/linter/analyzer_use_new_elements.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
lib/src/ast.dart
22
lib/src/extensions.dart
3-
lib/src/rules/avoid_renaming_method_parameters.dart
43
lib/src/rules/avoid_setters_without_getters.dart
54
lib/src/rules/avoid_void_async.dart
65
lib/src/rules/deprecated_member_use_from_same_package.dart
@@ -14,5 +13,4 @@ lib/src/rules/use_build_context_synchronously.dart
1413
lib/src/rules/use_late_for_private_fields_and_variables.dart
1514
lib/src/util/dart_type_utilities.dart
1615
lib/src/util/flutter_utils.dart
17-
lib/src/util/scope.dart
1816
test/rules/use_build_context_synchronously_test.dart

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class _Visitor extends SimpleAstVisitor<void> {
6666
var result =
6767
resolveNameInScope(name.lexeme, scope, shouldResolveSetter: false);
6868
if (result.isRequestedName) {
69-
var element = result.element2;
69+
var element = result.element;
7070
return element is ClassElement2 ||
7171
element is ExtensionTypeElement2 ||
7272
element is TypeAliasElement2 ||

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class _Visitor extends SimpleAstVisitor<void> {
7474
// The requested element is inherited, or from an extension.
7575
if (result.isNone) return true;
7676

77-
var resultElement = result.element2;
77+
var resultElement = result.element;
7878

7979
// The result has the matching name, might be shadowing.
8080
// Check that the element is the same.

pkg/linter/lib/src/util/scope.dart

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analyzer/dart/element/element.dart';
65
import 'package:analyzer/dart/element/element2.dart';
76
import 'package:analyzer/dart/element/scope.dart';
87
// ignore: implementation_imports
98
import 'package:analyzer/src/dart/ast/ast.dart';
109
// ignore: implementation_imports
1110
import 'package:analyzer/src/generated/resolver.dart' show ScopeResolverVisitor;
12-
// ignore: implementation_imports
13-
import 'package:analyzer/src/utilities/extensions/element.dart';
1411

1512
LinterNameInScopeResolutionResult resolveNameInScope(
1613
String id,
@@ -26,9 +23,9 @@ LinterNameInScopeResolutionResult resolveNameInScope(
2623
}
2724

2825
if (scope != null) {
29-
var ScopeLookupResult(:setter, :getter) = scope.lookup(id);
30-
var requestedElement = shouldResolveSetter ? setter : getter;
31-
var differentElement = shouldResolveSetter ? getter : setter;
26+
var ScopeLookupResult(:setter2, :getter2) = scope.lookup(id);
27+
var requestedElement = shouldResolveSetter ? setter2 : getter2;
28+
var differentElement = shouldResolveSetter ? getter2 : setter2;
3229

3330
if (requestedElement != null) {
3431
return LinterNameInScopeResolutionResult._requestedName(requestedElement);
@@ -45,7 +42,7 @@ LinterNameInScopeResolutionResult resolveNameInScope(
4542
/// The result of resolving of a basename `id` in a scope.
4643
class LinterNameInScopeResolutionResult {
4744
/// The element with the requested basename, `null` is [isNone].
48-
final Element? element;
45+
final Element2? element;
4946

5047
/// The state of the result.
5148
final _LinterNameInScopeResolutionResultState _state;
@@ -60,9 +57,6 @@ class LinterNameInScopeResolutionResult {
6057
const LinterNameInScopeResolutionResult._requestedName(this.element)
6158
: _state = _LinterNameInScopeResolutionResultState.requestedName;
6259

63-
/// The element with the requested basename, `null` is [isNone].
64-
Element2? get element2 => element.asElement2;
65-
6660
bool get isDifferentName =>
6761
_state == _LinterNameInScopeResolutionResultState.differentName;
6862

pkg/linter/test/scope_util_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,7 @@ mixin A<T> {
885885
void _resultDifferent(
886886
AstNode node, String id, bool setter, Element2 element) {
887887
var result = resolveNameInScope(id, node, shouldResolveSetter: setter);
888-
if (!result.isDifferentName || result.element2 != element) {
888+
if (!result.isDifferentName || result.element != element) {
889889
fail('Expected different $element, actual: $result');
890890
}
891891
}
@@ -900,7 +900,7 @@ mixin A<T> {
900900
void _resultRequested(
901901
AstNode node, String id, bool setter, Element2 element) {
902902
var result = resolveNameInScope(id, node, shouldResolveSetter: setter);
903-
if (!result.isRequestedName || result.element2 != element) {
903+
if (!result.isRequestedName || result.element != element) {
904904
fail('Expected requested $element, actual: $result');
905905
}
906906
}

0 commit comments

Comments
 (0)