Version 2.14.0-373.0.dev
Merge commit '1d55cd7c2f9d3f3f53462c921d40ca5f1abe7729' into 'dev'
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index c175e24..9bdf31e 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -210,10 +210,6 @@
@override
final TypeSystemImpl typeSystem;
- /// The element representing the function containing the current node, or
- /// `null` if the current node is not contained in a function.
- ExecutableElement? _enclosingFunction;
-
/// The helper for tracking if the current location has access to `this`.
final ThisAccessTracker _thisAccessTracker = ThisAccessTracker.unit();
@@ -1223,13 +1219,10 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
- var outerFunction = _enclosingFunction;
- _enclosingFunction = node.declaredElement;
-
flowAnalysis!.topLevelDeclaration_enter(node, node.parameters);
flowAnalysis!.executableDeclaration_enter(node, node.parameters, false);
- var returnType = _enclosingFunction!.type.returnType;
+ var returnType = node.declaredElement!.type.returnType;
InferenceContext.setType(node.body, returnType);
super.visitConstructorDeclaration(node);
@@ -1245,8 +1238,6 @@
flowAnalysis!.executableDeclaration_exit(node.body, false);
flowAnalysis!.topLevelDeclaration_exit();
nullSafetyDeadCodeVerifier.flowEnd(node);
-
- _enclosingFunction = outerFunction;
}
@override
@@ -1447,9 +1438,6 @@
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
- var outerFunction = _enclosingFunction;
- _enclosingFunction = node.declaredElement;
-
bool isLocal = node.parent is FunctionDeclarationStatement;
if (isLocal) {
@@ -1464,7 +1452,7 @@
isLocal,
);
- var functionType = _enclosingFunction!.type;
+ var functionType = node.declaredElement!.type;
InferenceContext.setType(node.functionExpression, functionType);
super.visitFunctionDeclaration(node);
@@ -1489,7 +1477,6 @@
}
nullSafetyDeadCodeVerifier.flowEnd(node);
- _enclosingFunction = outerFunction;
node.accept(elementResolver);
// Note: no need to call the typeAnalyzer since it does not override
// visitFunctionDeclaration
@@ -1503,6 +1490,8 @@
@override
void visitFunctionExpression(covariant FunctionExpressionImpl node) {
+ // Note: we have to update _enclosingFunction because we don't make use of
+ // super.visitFunctionExpression.
var outerFunction = _enclosingFunction;
_enclosingFunction = node.declaredElement;
@@ -1712,13 +1701,10 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- var outerFunction = _enclosingFunction;
- _enclosingFunction = node.declaredElement;
-
flowAnalysis!.topLevelDeclaration_enter(node, node.parameters);
flowAnalysis!.executableDeclaration_enter(node, node.parameters, false);
- DartType returnType = _enclosingFunction!.returnType;
+ DartType returnType = node.declaredElement!.returnType;
InferenceContext.setType(node.body, returnType);
super.visitMethodDeclaration(node);
@@ -1734,7 +1720,6 @@
flowAnalysis!.topLevelDeclaration_exit();
nullSafetyDeadCodeVerifier.flowEnd(node);
- _enclosingFunction = outerFunction;
node.accept(elementResolver);
// Note: no need to call the typeAnalyzer since it does not override
// visitMethodDeclaration.
@@ -2418,6 +2403,10 @@
/// visited, or `null` if we are not in the scope of an extension.
ExtensionElement? enclosingExtension;
+ /// The element representing the function containing the current node, or
+ /// `null` if the current node is not contained in a function.
+ ExecutableElement? _enclosingFunction;
+
/// Initialize a newly created visitor to resolve the nodes in a compilation
/// unit.
///
@@ -2575,6 +2564,8 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
+ var outerFunction = _enclosingFunction;
+ _enclosingFunction = node.declaredElement;
Scope outerScope = nameScope;
try {
ConstructorElement element = node.declaredElement!;
@@ -2604,6 +2595,7 @@
visitConstructorDeclarationInScope(node);
} finally {
nameScope = outerScope;
+ _enclosingFunction = outerFunction;
}
}
@@ -2782,6 +2774,9 @@
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
+ var outerFunction = _enclosingFunction;
+ _enclosingFunction = node.declaredElement;
+
node.metadata.accept(this);
Scope outerScope = nameScope;
try {
@@ -2793,6 +2788,7 @@
visitFunctionDeclarationInScope(node);
} finally {
nameScope = outerScope;
+ _enclosingFunction = outerFunction;
}
}
@@ -2813,6 +2809,8 @@
return;
}
+ var outerFunction = _enclosingFunction;
+ _enclosingFunction = node.declaredElement;
Scope outerScope = nameScope;
try {
ExecutableElement element = node.declaredElement!;
@@ -2823,6 +2821,7 @@
super.visitFunctionExpression(node);
} finally {
nameScope = outerScope;
+ _enclosingFunction = outerFunction;
}
}
@@ -2949,6 +2948,9 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
+ var outerFunction = _enclosingFunction;
+ _enclosingFunction = node.declaredElement;
+
node.metadata.accept(this);
Scope outerScope = nameScope;
try {
@@ -2960,6 +2962,7 @@
visitMethodDeclarationInScope(node);
} finally {
nameScope = outerScope;
+ _enclosingFunction = outerFunction;
}
}
@@ -3145,10 +3148,6 @@
/// Instances of the class `VariableResolverVisitor` are used to resolve
/// [SimpleIdentifier]s to local variables and formal parameters.
class VariableResolverVisitor extends ScopedVisitor {
- /// The method or function that we are currently visiting, or `null` if we are
- /// not inside a method or function.
- ExecutableElement? _enclosingFunction;
-
/// The container with information about local variables.
final LocalVariableInfo _localVariableInfo = LocalVariableInfo();
@@ -3174,14 +3173,8 @@
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
- var outerFunction = _enclosingFunction;
- try {
- (node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
- _enclosingFunction = node.declaredElement;
- super.visitConstructorDeclaration(node);
- } finally {
- _enclosingFunction = outerFunction;
- }
+ (node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
+ super.visitConstructorDeclaration(node);
}
@override
@@ -3189,28 +3182,16 @@
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
- var outerFunction = _enclosingFunction;
- try {
- (node.functionExpression.body as FunctionBodyImpl).localVariableInfo =
- _localVariableInfo;
- _enclosingFunction = node.declaredElement;
- super.visitFunctionDeclaration(node);
- } finally {
- _enclosingFunction = outerFunction;
- }
+ (node.functionExpression.body as FunctionBodyImpl).localVariableInfo =
+ _localVariableInfo;
+ super.visitFunctionDeclaration(node);
}
@override
void visitFunctionExpression(FunctionExpression node) {
if (node.parent is! FunctionDeclaration) {
- var outerFunction = _enclosingFunction;
- try {
- (node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
- _enclosingFunction = node.declaredElement;
- super.visitFunctionExpression(node);
- } finally {
- _enclosingFunction = outerFunction;
- }
+ (node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
+ super.visitFunctionExpression(node);
} else {
super.visitFunctionExpression(node);
}
@@ -3221,14 +3202,8 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- var outerFunction = _enclosingFunction;
- try {
- (node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
- _enclosingFunction = node.declaredElement;
- super.visitMethodDeclaration(node);
- } finally {
- _enclosingFunction = outerFunction;
- }
+ (node.body as FunctionBodyImpl).localVariableInfo = _localVariableInfo;
+ super.visitMethodDeclaration(node);
}
@override
diff --git a/tools/VERSION b/tools/VERSION
index 38834f5..40d74c7 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 14
PATCH 0
-PRERELEASE 372
+PRERELEASE 373
PRERELEASE_PATCH 0
\ No newline at end of file