Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1020)

Unified Diff: pkg/analyzer/lib/src/generated/resolver.dart

Issue 2551023005: Prepare for decoupling analyzer ASTs from element model. (Closed)
Patch Set: Address review comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/lib/src/generated/resolver.dart
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index df3ad03b5db7488cf0265ee48f554e1d04641400..c11284ba59b897cfe7e8073fe02c03a50feb5d25 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -7,6 +7,7 @@ library analyzer.src.generated.resolver;
import 'dart:collection';
import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
@@ -105,7 +106,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<Object> {
@override
Object visitAnnotation(Annotation node) {
- if (node.elementAnnotation?.isFactory == true) {
+ if (resolutionMap.elementAnnotationForAnnotation(node)?.isFactory == true) {
AstNode parent = node.parent;
if (parent is MethodDeclaration) {
_checkForInvalidFactory(parent);
@@ -193,7 +194,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<Object> {
@override
Object visitConstructorDeclaration(ConstructorDeclaration node) {
- if (node.element.isFactory) {
+ if (resolutionMap.elementDeclaredByConstructorDeclaration(node).isFactory) {
if (node.body is BlockFunctionBody) {
// Check the block for a return statement, if not, create the hint.
if (!ExitDetector.exits(node.body)) {
@@ -648,7 +649,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<Object> {
node is MethodInvocation &&
node.staticInvokeType is InterfaceType) {
displayName =
- "${node.staticInvokeType.displayName}.${element.displayName}";
+ "${resolutionMap.staticInvokeTypeForInvocationExpression(node).displayName}.${element.displayName}";
}
_errorReporter.reportErrorForNode(
HintCode.DEPRECATED_MEMBER_USE, node, [displayName]);
@@ -2287,7 +2288,7 @@ class DirectiveResolver extends SimpleAstVisitor {
@override
void visitCompilationUnit(CompilationUnit node) {
- _enclosingLibrary = node.element.library;
+ _enclosingLibrary = resolutionMap.elementForCompilationUnit(node).library;
for (Directive directive in node.directives) {
directive.accept(this);
}
@@ -3594,7 +3595,8 @@ class HintGenerator {
GatherUsedLocalElementsVisitor _usedLocalElementsVisitor;
HintGenerator(this._compilationUnits, this._context, this._errorListener) {
- _library = _compilationUnits[0].element.library;
+ _library =
+ resolutionMap.elementForCompilationUnit(_compilationUnits[0]).library;
_usedImportedElementsVisitor =
new GatherUsedImportedElementsVisitor(_library);
_enableDart2JSHints = _context.analysisOptions.dart2jsHint;
@@ -3614,8 +3616,9 @@ class HintGenerator {
}
}
CompilationUnit definingUnit = _compilationUnits[0];
- ErrorReporter definingUnitErrorReporter =
- new ErrorReporter(_errorListener, definingUnit.element.source);
+ ErrorReporter definingUnitErrorReporter = new ErrorReporter(
+ _errorListener,
+ resolutionMap.elementForCompilationUnit(definingUnit).source);
{
ImportsVerifier importsVerifier = new ImportsVerifier();
importsVerifier.addImports(definingUnit);
@@ -5788,7 +5791,8 @@ class ResolverVisitor extends ScopedVisitor {
@override
Object visitDefaultFormalParameter(DefaultFormalParameter node) {
- InferenceContext.setType(node.defaultValue, node.parameter.element?.type);
+ InferenceContext.setType(node.defaultValue,
+ resolutionMap.elementDeclaredByFormalParameter(node.parameter)?.type);
super.visitDefaultFormalParameter(node);
ParameterElement element = node.element;
if (element.initializer != null && node.defaultValue != null) {
@@ -5907,7 +5911,9 @@ class ResolverVisitor extends ScopedVisitor {
? typeProvider.iterableType
: typeProvider.streamType;
InferenceContext.setType(
- iterable, targetType.instantiate([loopVariable.type.type]));
+ iterable,
+ targetType
+ .instantiate([resolutionMap.typeForTypeName(loopVariable.type)]));
}
iterable?.accept(this);
loopVariable?.accept(this);
@@ -6017,7 +6023,9 @@ class ResolverVisitor extends ScopedVisitor {
_inferFormalParameterList(node.parameters, functionType);
DartType returnType;
- if (isFutureThen(node.staticParameterElement?.enclosingElement)) {
+ ParameterElement parameterElement =
+ resolutionMap.staticParameterElementForExpression(node);
+ if (isFutureThen(parameterElement?.enclosingElement)) {
var futureThenType =
InferenceContext.getContext(node.parent) as FunctionType;
@@ -6178,7 +6186,8 @@ class ResolverVisitor extends ScopedVisitor {
List<DartType> targs =
inferenceContext.matchTypes(classTypeName.type, contextType);
if (targs != null && targs.any((t) => !t.isDynamic)) {
- ClassElement classElement = classTypeName.type.element;
+ ClassElement classElement =
+ resolutionMap.typeForTypeName(classTypeName).element;
InterfaceType rawType = classElement.type;
InterfaceType fullType =
rawType.substitute2(targs, rawType.typeArguments);
@@ -6191,7 +6200,9 @@ class ResolverVisitor extends ScopedVisitor {
}
}
node.constructorName?.accept(this);
- FunctionType constructorType = node.constructorName.staticElement?.type;
+ FunctionType constructorType = resolutionMap
+ .staticElementForConstructorReference(node.constructorName)
+ ?.type;
if (constructorType != null) {
InferenceContext.setType(node.argumentList, constructorType);
}
@@ -6350,7 +6361,8 @@ class ResolverVisitor extends ScopedVisitor {
// because it needs to be visited in the context of the constructor
// invocation.
//
- InferenceContext.setType(node.argumentList, node.staticElement?.type);
+ InferenceContext.setType(node.argumentList,
+ resolutionMap.staticElementForConstructorReference(node)?.type);
node.argumentList?.accept(this);
node.accept(elementResolver);
node.accept(typeAnalyzer);
@@ -6384,7 +6396,8 @@ class ResolverVisitor extends ScopedVisitor {
// because it needs to be visited in the context of the constructor
// invocation.
//
- InferenceContext.setType(node.argumentList, node.staticElement?.type);
+ InferenceContext.setType(node.argumentList,
+ resolutionMap.staticElementForConstructorReference(node)?.type);
node.argumentList?.accept(this);
node.accept(elementResolver);
node.accept(typeAnalyzer);
@@ -6457,7 +6470,9 @@ class ResolverVisitor extends ScopedVisitor {
@override
visitVariableDeclarationList(VariableDeclarationList node) {
for (VariableDeclaration decl in node.variables) {
- InferenceContext.setType(decl, decl.element?.type);
+ VariableElement variableElement =
+ resolutionMap.elementDeclaredByVariableDeclaration(decl);
+ InferenceContext.setType(decl, variableElement?.type);
}
super.visitVariableDeclarationList(node);
}
@@ -6744,7 +6759,8 @@ class ResolverVisitor extends ScopedVisitor {
FunctionType expectedClosureType = mayByFunctionType as FunctionType;
// If the expectedClosureType is not more specific than the static type,
// return.
- DartType staticClosureType = closure.element?.type;
+ DartType staticClosureType =
+ resolutionMap.elementDeclaredByFunctionExpression(closure)?.type;
if (staticClosureType != null &&
!FunctionTypeImpl.relate(
expectedClosureType,

Powered by Google App Engine
This is Rietveld 408576698