Skip to content

Commit 9a76ff8

Browse files
pqCommit Queue
authored and
Commit Queue
committed
[element model] migrate cascade_invocations
Bug: https://github.com/dart-lang/linter/issues/5099 Change-Id: Ic70839e4c56da27fbc7b3e336d790605e1cf97c2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/394600 Commit-Queue: Brian Wilkerson <[email protected]> Auto-Submit: Phil Quitslund <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 598de0a commit 9a76ff8

File tree

3 files changed

+20
-22
lines changed

3 files changed

+20
-22
lines changed

pkg/linter/analyzer_use_new_elements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ lib/src/rules/avoid_renaming_method_parameters.dart
55
lib/src/rules/avoid_setters_without_getters.dart
66
lib/src/rules/avoid_types_as_parameter_names.dart
77
lib/src/rules/avoid_void_async.dart
8-
lib/src/rules/cascade_invocations.dart
98
lib/src/rules/deprecated_member_use_from_same_package.dart
109
lib/src/rules/invalid_runtime_check_with_js_interop_types.dart
1110
lib/src/rules/prefer_asserts_in_initializer_lists.dart

pkg/linter/lib/src/extensions.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ extension AstNodeNullableExtension on AstNode? {
107107
if (node is Identifier) {
108108
return node.element;
109109
} else if (node is PropertyAccess) {
110-
// TODO(pq): implement.
111-
return null;
110+
return node.propertyName.element;
112111
}
113112
}
114113
return null;

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

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import 'package:analyzer/dart/ast/ast.dart';
66
import 'package:analyzer/dart/ast/token.dart';
77
import 'package:analyzer/dart/ast/visitor.dart';
8-
import 'package:analyzer/dart/element/element.dart';
8+
import 'package:analyzer/dart/element/element2.dart';
99

1010
import '../analyzer.dart';
1111
import '../extensions.dart';
1212

1313
const _desc = r'Cascade consecutive method invocations on the same reference.';
1414

15-
Element? _getElementFromVariableDeclarationStatement(
15+
Element2? _getElementFromVariableDeclarationStatement(
1616
VariableDeclarationStatement statement) {
1717
var variables = statement.variables.variables;
1818
if (variables.length == 1) {
@@ -25,39 +25,39 @@ Element? _getElementFromVariableDeclarationStatement(
2525
// In such a case, we should not return any cascadable element here.
2626
return null;
2727
}
28-
return variable.declaredElement;
28+
return variable.declaredElement2 ?? variable.declaredFragment?.element;
2929
}
3030
return null;
3131
}
3232

33-
ExecutableElement? _getExecutableElementFromMethodInvocation(
33+
ExecutableElement2? _getExecutableElementFromMethodInvocation(
3434
MethodInvocation node) {
3535
if (_isInvokedWithoutNullAwareOperator(node.operator)) {
36-
var executableElement = node.methodName.canonicalElement;
37-
if (executableElement is ExecutableElement) {
36+
var executableElement = node.methodName.canonicalElement2;
37+
if (executableElement is ExecutableElement2) {
3838
return executableElement;
3939
}
4040
}
4141
return null;
4242
}
4343

44-
Element? _getPrefixElementFromExpression(Expression rawExpression) {
44+
Element2? _getPrefixElementFromExpression(Expression rawExpression) {
4545
var expression = rawExpression.unParenthesized;
4646
if (expression is PrefixedIdentifier) {
47-
return expression.prefix.canonicalElement;
47+
return expression.prefix.canonicalElement2;
4848
} else if (expression is PropertyAccess &&
4949
_isInvokedWithoutNullAwareOperator(expression.operator) &&
5050
expression.target is SimpleIdentifier) {
51-
return expression.target.canonicalElement;
51+
return expression.target.canonicalElement2;
5252
}
5353
return null;
5454
}
5555

56-
Element? _getTargetElementFromCascadeExpression(CascadeExpression node) =>
57-
node.target.canonicalElement;
56+
Element2? _getTargetElementFromCascadeExpression(CascadeExpression node) =>
57+
node.target.canonicalElement2;
5858

59-
Element? _getTargetElementFromMethodInvocation(MethodInvocation node) =>
60-
node.target.canonicalElement;
59+
Element2? _getTargetElementFromMethodInvocation(MethodInvocation node) =>
60+
node.target.canonicalElement2;
6161

6262
bool _isInvokedWithoutNullAwareOperator(Token? token) =>
6363
token?.type == TokenType.PERIOD;
@@ -126,7 +126,7 @@ class _CascadableExpression {
126126
/// in the right part of an assignment in a following expression that we would
127127
/// like to join to this.
128128
final bool isCritical;
129-
final Element? element;
129+
final Element2? element;
130130
final List<AstNode> criticalNodes;
131131

132132
factory _CascadableExpression.fromExpressionStatement(
@@ -163,14 +163,14 @@ class _CascadableExpression {
163163
var leftExpression = node.leftHandSide.unParenthesized;
164164
if (leftExpression is SimpleIdentifier) {
165165
return _CascadableExpression._internal(
166-
leftExpression.staticElement?.canonicalElement, [node.rightHandSide],
166+
leftExpression.element, [node.rightHandSide],
167167
canReceive: node.operator.type != TokenType.QUESTION_QUESTION_EQ,
168168
isCritical: true);
169169
}
170170
// setters
171171
var variable = _getPrefixElementFromExpression(leftExpression);
172172
var canReceive = node.operator.type != TokenType.QUESTION_QUESTION_EQ &&
173-
variable is VariableElement &&
173+
variable is VariableElement2 &&
174174
!variable.isStatic;
175175
return _CascadableExpression._internal(variable, [node.rightHandSide],
176176
canJoin: true, canReceive: canReceive, canBeCascaded: true);
@@ -201,12 +201,12 @@ class _CascadableExpression {
201201

202202
factory _CascadableExpression._fromPrefixedIdentifier(
203203
PrefixedIdentifier node) =>
204-
_CascadableExpression._internal(node.prefix.canonicalElement, [],
204+
_CascadableExpression._internal(node.prefix.canonicalElement2, [],
205205
canJoin: true, canReceive: true, canBeCascaded: true);
206206

207207
factory _CascadableExpression._fromPropertyAccess(PropertyAccess node) {
208208
var targetIsSimple = node.target is SimpleIdentifier;
209-
return _CascadableExpression._internal(node.target.canonicalElement, [],
209+
return _CascadableExpression._internal(node.target.canonicalElement2, [],
210210
canJoin: targetIsSimple,
211211
canReceive: targetIsSimple,
212212
canBeCascaded: true);
@@ -248,7 +248,7 @@ class _NodeVisitor extends UnifyingAstVisitor<void> {
248248
_NodeVisitor(this.expressionBox);
249249

250250
bool isCriticalNode(AstNode node) =>
251-
node.canonicalElement == expressionBox.element;
251+
node.canonicalElement2 == expressionBox.element;
252252

253253
bool isOrHasCriticalNode(AstNode node) {
254254
node.accept(this);

0 commit comments

Comments
 (0)