Use new Scope in AstRewriter.

R=brianwilkerson@google.com

Change-Id: I755d3815ba9b0c7e638bc2f87bf64593f89baf7b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/158144
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov
2020-08-11 17:38:39 +00:00
committed by commit-bot@chromium.org
parent 07a0471e3f
commit 8bf2ae347d
@@ -8,7 +8,6 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/scope.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/dart/resolver/scope.dart';
import 'package:analyzer/src/error/codes.dart';
/// Helper for [MethodInvocation]s into [InstanceCreationExpression] to support
@@ -33,7 +32,7 @@ class AstRewriter {
// This isn't a constructor invocation because it's in a cascade.
return node;
}
Element element = nameScope.lookupIdentifier(methodName);
Element element = nameScope.lookup2(methodName.name).getter;
if (element is ClassElement) {
TypeName typeName = astFactory.typeName(methodName, node.typeArguments);
ConstructorName constructorName =
@@ -57,7 +56,7 @@ class AstRewriter {
// This isn't a constructor invocation because a null aware operator is
// being used.
}
Element element = nameScope.lookupIdentifier(target);
Element element = nameScope.lookup2(target.name).getter;
if (element is ClassElement) {
// Possible case: C.n()
var constructorElement = element.getNamedConstructor(methodName.name);
@@ -82,11 +81,7 @@ class AstRewriter {
}
} else if (element is PrefixElement) {
// Possible cases: p.C() or p.C<>()
Identifier identifier = astFactory.prefixedIdentifier(
astFactory.simpleIdentifier(target.token),
null,
astFactory.simpleIdentifier(methodName.token));
Element prefixedElement = nameScope.lookupIdentifier(identifier);
Element prefixedElement = element.scope.lookup2(methodName.name).getter;
if (prefixedElement is ClassElement) {
TypeName typeName = astFactory.typeName(
astFactory.prefixedIdentifier(target, node.operator, methodName),
@@ -111,10 +106,11 @@ class AstRewriter {
}
} else if (target is PrefixedIdentifier) {
// Possible case: p.C.n()
Element prefixElement = nameScope.lookupIdentifier(target.prefix);
Element prefixElement = nameScope.lookup2(target.prefix.name).getter;
target.prefix.staticElement = prefixElement;
if (prefixElement is PrefixElement) {
Element element = nameScope.lookupIdentifier(target);
Element element =
prefixElement.scope.lookup2(target.identifier.name).getter;
if (element is ClassElement) {
var constructorElement = element.getNamedConstructor(methodName.name);
if (constructorElement != null) {