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

Unified Diff: pkg/compiler/lib/src/inferrer/builder.dart

Issue 2961313002: Always store GlobalTypeInferenceElementData on the member context (Closed)
Patch Set: Created 3 years, 6 months 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/compiler/lib/src/inferrer/builder.dart
diff --git a/pkg/compiler/lib/src/inferrer/builder.dart b/pkg/compiler/lib/src/inferrer/builder.dart
index ffe037b850d738b5ae80a580717ce40fd32a1bae..fb273bfb27e8474cbfdde249fd3d61e561981dfb 100644
--- a/pkg/compiler/lib/src/inferrer/builder.dart
+++ b/pkg/compiler/lib/src/inferrer/builder.dart
@@ -56,7 +56,7 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation>
SetBulkMixin<TypeInformation, dynamic>
implements SemanticSendVisitor<TypeInformation, dynamic> {
final Compiler compiler;
- final AstElement analyzedElement;
+ final ExecutableElement analyzedElement;
final ResolvedAst resolvedAst;
final TypeSystem types;
final Map<JumpTarget, List<LocalsHandler>> breaksFor =
@@ -72,13 +72,13 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation>
bool isConstructorRedirect = false;
bool seenSuperConstructorCall = false;
SideEffects sideEffects = new SideEffects.empty();
- final Element outermostElement;
+ final MemberElement outermostElement;
final InferrerEngine inferrer;
final Setlet<Entity> capturedVariables = new Setlet<Entity>();
final GlobalTypeInferenceElementData inTreeData;
Siggi Cherem (dart-lang) 2017/06/29 21:40:09 rename to memberData like you did for the map in t
Johnni Winther 2017/06/30 08:14:50 Renamed to [memberData]. The builder is created fo
ElementGraphBuilder.internal(
- AstElement analyzedElement,
+ ExecutableElement analyzedElement,
this.resolvedAst,
this.outermostElement,
InferrerEngine inferrer,
@@ -87,9 +87,7 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation>
: this.analyzedElement = analyzedElement,
this.inferrer = inferrer,
this.types = inferrer.types,
- this.inTreeData = analyzedElement.isLocal
- ? inferrer.dataOfLocalFunction(analyzedElement)
- : inferrer.dataOfMember(analyzedElement) {
+ this.inTreeData = inferrer.dataOfMember(analyzedElement.memberContext) {
assert(outermostElement != null);
if (locals != null) return;
ast.Node node;
@@ -104,15 +102,10 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation>
new LocalsHandler(inferrer, types, compiler.options, node, fieldScope);
}
- ElementGraphBuilder(AstElement element, ResolvedAst resolvedAst,
+ ElementGraphBuilder(ExecutableElement element, ResolvedAst resolvedAst,
Compiler compiler, InferrerEngine inferrer, [LocalsHandler handler])
- : this.internal(
- element,
- resolvedAst,
- element.outermostEnclosingMemberOrTopLevel.implementation,
- inferrer,
- compiler,
- handler);
+ : this.internal(element, resolvedAst, element.memberContext, inferrer,
+ compiler, handler);
TreeElements get elements => resolvedAst.elements;
@@ -2737,12 +2730,7 @@ class ElementGraphBuilder extends ast.Visitor<TypeInformation>
mask = receiverType == types.dynamicType
? null
: types.newTypedSelector(receiverType, mask);
- if (analyzedElement.isLocal) {
- inferrer.updateSelectorInLocalFunction(
- analyzedElement, node, selector, mask);
- } else {
- inferrer.updateSelectorInMember(analyzedElement, node, selector, mask);
- }
+ inferrer.updateSelectorInMember(outermostElement, node, selector, mask);
}
// If the receiver of the call is a local, we may know more about

Powered by Google App Engine
This is Rietveld 408576698