Skip to content

Commit a1516ef

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Remove 'FunctionExpressionImpl.declaredElement2'
Change-Id: Ie398dc23d6d5911dd02104ca4b31114d5d657153 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/395050 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent c97b84e commit a1516ef

File tree

8 files changed

+17
-48
lines changed

8 files changed

+17
-48
lines changed

pkg/analysis_server/lib/src/services/correction/dart/add_null_check.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class AddNullCheck extends ResolvedCorrectionProducer {
160160
if (enclosingExecutable is MethodDeclaration) {
161161
toType = enclosingExecutable.returnType?.type;
162162
} else if (enclosingExecutable is FunctionExpressionImpl) {
163-
toType = enclosingExecutable.returnType;
163+
toType = enclosingExecutable.declaredFragment!.element.returnType;
164164
}
165165
} else if (parent is BinaryExpression) {
166166
if (typeSystem.isNonNullable(fromType)) {

pkg/analysis_server/lib/src/services/correction/dart/convert_into_block_body.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ class ConvertIntoBlockBody extends ResolvedCorrectionProducer {
185185
} else if (node is ConstructorDeclaration) {
186186
return node.declaredFragment?.element;
187187
} else if (node is FunctionExpression) {
188-
return node.declaredFragment?.element ?? node.declaredElement2;
188+
return node.declaredFragment?.element;
189189
}
190190
return null;
191191
}

pkg/analyzer/lib/src/dart/ast/ast.dart

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8406,15 +8406,6 @@ abstract final class FunctionExpression implements Expression {
84068406
/// hasn't been resolved.
84078407
ExecutableElement? get declaredElement;
84088408

8409-
/// The element defined by this function expression.
8410-
///
8411-
/// Returns `null` if the AST structure hasn't been resolved.
8412-
///
8413-
/// Returns `null` if this expression is not a closure, and the parent is
8414-
/// not a local function.
8415-
@experimental
8416-
LocalFunctionElement? get declaredElement2;
8417-
84188409
/// The fragment declared by this function expression.
84198410
///
84208411
/// Returns `null` if the AST structure hasn't been resolved.
@@ -8451,7 +8442,7 @@ final class FunctionExpressionImpl extends ExpressionImpl
84518442
ExecutableElementImpl? declaredElement;
84528443

84538444
@override
8454-
LocalFunctionElementImpl? declaredElement2;
8445+
ExecutableElementImpl? declaredFragment;
84558446

84568447
/// Initializes a newly created function declaration.
84578448
FunctionExpressionImpl({
@@ -8483,14 +8474,6 @@ final class FunctionExpressionImpl extends ExpressionImpl
84838474
_body = _becomeParentOf(functionBody);
84848475
}
84858476

8486-
@override
8487-
ExecutableFragment? get declaredFragment {
8488-
if (declaredElement?.enclosingElement3 is CompilationUnitElement) {
8489-
return declaredElement;
8490-
}
8491-
return null;
8492-
}
8493-
84948477
@override
84958478
Token get endToken {
84968479
return _body.endToken;
@@ -8506,15 +8489,6 @@ final class FunctionExpressionImpl extends ExpressionImpl
85068489
@override
85078490
Precedence get precedence => Precedence.primary;
85088491

8509-
DartType get returnType {
8510-
// If a closure, or a local function.
8511-
if (declaredElement2 case var declaredElement?) {
8512-
return declaredElement.returnType;
8513-
}
8514-
// SAFETY: must be a top-level function.
8515-
return declaredFragment!.element.returnType;
8516-
}
8517-
85188492
@override
85198493
TypeParameterListImpl? get typeParameters => _typeParameters;
85208494

pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -698,12 +698,14 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
698698
: _elementWalker!.getFunction();
699699
node.declaredElement = element;
700700
expression.declaredElement = element;
701+
expression.declaredFragment = element;
701702
} else {
702703
var functionElement = node.declaredElement as FunctionElementImpl;
704+
functionElement.element = LocalFunctionElementImpl(functionElement);
705+
703706
element = functionElement;
704707
expression.declaredElement = functionElement;
705-
expression.declaredElement2 =
706-
functionElement.element as LocalFunctionElementImpl?;
708+
expression.declaredFragment = functionElement;
707709

708710
_setCodeRange(element, node);
709711
setElementDocumentationComment(element, node);
@@ -767,11 +769,11 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
767769
@override
768770
void visitFunctionExpression(covariant FunctionExpressionImpl node) {
769771
var fragment = FunctionElementImpl.forOffset(node.offset);
772+
fragment.element = LocalFunctionElementImpl(fragment);
773+
770774
_elementHolder.enclose(fragment);
771775
node.declaredElement = fragment;
772-
773-
var element = LocalFunctionElementImpl(fragment);
774-
node.declaredElement2 = element;
776+
node.declaredFragment = fragment;
775777

776778
fragment.hasImplicitReturnType = true;
777779
fragment.returnType = DynamicTypeImpl.instance;
@@ -1480,8 +1482,8 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
14801482
fragment.nameOffset2 = nameToken.offsetIfNotEmpty;
14811483
node.declaredElement = fragment;
14821484

1483-
var element = LocalFunctionElementImpl(fragment);
1484-
node.functionExpression.declaredElement2 = element;
1485+
fragment.element = LocalFunctionElementImpl(fragment);
1486+
node.functionExpression.declaredFragment = fragment;
14851487

14861488
// The fragment's old enclosing element needs to be set before we can get
14871489
// the new element for it.

pkg/analyzer/lib/src/error/error_handler_verifier.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ class ErrorHandlerVerifier {
227227
_checkErrorHandlerFunctionType(
228228
callback, callbackType, expectedReturnType);
229229
var catchErrorOnErrorExecutable = EnclosingExecutableContext.tmp(
230-
callback.declaredElement2,
230+
callback.declaredFragment!.element,
231231
isAsynchronous: true,
232232
catchErrorOnErrorReturnType: expectedReturnType);
233233
var returnStatementVerifier =

pkg/analyzer/lib/src/test_utilities/find_element2.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ class FindElement2 extends _FindElementBase {
211211
unit.accept(
212212
FunctionAstVisitor(functionExpression: (node, local) {
213213
if (local) {
214-
var functionElement = node.declaredElement2!;
214+
var functionElement = node.declaredFragment!.element;
215215
findIn(functionElement.formalParameters);
216216
}
217217
}),

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import 'package:analyzer/dart/ast/ast.dart';
66
import 'package:analyzer/dart/ast/visitor.dart';
7-
import 'package:analyzer/dart/element/element2.dart';
87
import 'package:analyzer/dart/element/type.dart';
98

109
import '../analyzer.dart';
@@ -59,7 +58,7 @@ class _Visitor extends SimpleAstVisitor<void> {
5958

6059
var (type, isAsync, code) = switch (parent) {
6160
FunctionExpression() => (
62-
parent.element?.returnType,
61+
parent.declaredFragment?.element.returnType,
6362
parent.body.isAsynchronous,
6463
LinterLintCode.avoid_returning_null_for_void_from_function,
6564
),
@@ -81,8 +80,3 @@ class _Visitor extends SimpleAstVisitor<void> {
8180
}
8281
}
8382
}
84-
85-
extension on FunctionExpression {
86-
ExecutableElement2? get element =>
87-
declaredFragment?.element ?? declaredElement2;
88-
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class _Visitor extends SimpleAstVisitor<void> {
100100

101101
@override
102102
void visitFunctionExpression(FunctionExpression node) {
103-
var element = node.declaredElement2 ?? node.declaredFragment?.element;
103+
var element = node.declaredFragment?.element;
104104
if (element?.name3 != '' || node.body.keyword != null) {
105105
return;
106106
}
@@ -140,8 +140,7 @@ class _Visitor extends SimpleAstVisitor<void> {
140140
return;
141141
}
142142

143-
var functionElement =
144-
node.declaredElement2 ?? node.declaredFragment?.element;
143+
var functionElement = node.declaredFragment?.element;
145144

146145
var nodeType = functionElement?.type;
147146
var invocationType = expression.constructorName.element?.type;

0 commit comments

Comments
 (0)