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

Unified Diff: sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart

Issue 392873002: Element-model refactoring. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 6 years, 5 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: sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart
diff --git a/sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart b/sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart
index c45769fcc6dd30a85cead211c3bde0f3c3fa156e..ca06b73c45c39b020e2757cb15f3038d624bdd7e 100644
--- a/sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart
+++ b/sdk/lib/_internal/compiler/implementation/inferrer/simple_types_inferrer.dart
@@ -392,7 +392,7 @@ abstract class InferrerEngine<T, V extends TypeSystem>
bool isNativeElement(Element element) {
if (element.isNative) return true;
- return element.isMember
+ return element.isClassMember
&& element.enclosingClass.isNative
&& element.isField;
}
@@ -491,20 +491,21 @@ class SimpleTypeInferrerVisitor<T>
if (analyzedElement.isGenerativeConstructor) {
isThisExposed = false;
- signature.forEachParameter((element) {
+ signature.forEachParameter((ParameterElement element) {
T parameterType = inferrer.typeOfElement(element);
- if (element.kind == ElementKind.FIELD_PARAMETER) {
- if (element.fieldElement.modifiers.isFinal) {
+ if (element.isInitializingFormal) {
+ InitializingFormalElement initializingFormal = element;
+ if (initializingFormal.fieldElement.isFinal) {
inferrer.recordTypeOfFinalField(
node,
analyzedElement,
- element.fieldElement,
+ initializingFormal.fieldElement,
parameterType);
} else {
- locals.updateField(element.fieldElement, parameterType);
+ locals.updateField(initializingFormal.fieldElement, parameterType);
inferrer.recordTypeOfNonFinalField(
- element.parseNode(compiler),
- element.fieldElement,
+ initializingFormal.node,
+ initializingFormal.fieldElement,
parameterType);
}
}
@@ -538,8 +539,8 @@ class SimpleTypeInferrerVisitor<T>
if (!isConstructorRedirect) {
// Iterate over all instance fields, and give a null type to
// fields that we haven't initialized for sure.
- cls.forEachInstanceField((_, field) {
- if (field.modifiers.isFinal) return;
+ cls.forEachInstanceField((_, FieldElement field) {
+ if (field.isFinal) return;
T type = locals.fieldScope.readField(field);
if (type == null && field.initializer == null) {
inferrer.recordTypeOfNonFinalField(node, field, types.nullType);
@@ -842,7 +843,7 @@ class SimpleTypeInferrerVisitor<T>
handleDynamicSend(node, setterSelector, receiverType,
new ArgumentsTypes<T>([newType], null));
} else if (Elements.isLocal(element)) {
- TypedElement local = element;
+ LocalElement local = element;
getterType = locals.use(local);
newType = handleDynamicSend(
node, operatorSelector, getterType, operatorArguments);
@@ -1079,7 +1080,7 @@ class SimpleTypeInferrerVisitor<T>
} else if (Elements.isErroneousElement(element)) {
return types.dynamicType;
} else if (Elements.isLocal(element)) {
- TypedElement local = element;
+ LocalElement local = element;
assert(locals.use(local) != null);
return locals.use(local);
} else {

Powered by Google App Engine
This is Rietveld 408576698