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

Unified Diff: compiler/java/com/google/dart/compiler/resolver/Resolver.java

Issue 10459070: Infer also field types in classes and top-level (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Use Type.isInferred() Created 8 years, 7 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: compiler/java/com/google/dart/compiler/resolver/Resolver.java
diff --git a/compiler/java/com/google/dart/compiler/resolver/Resolver.java b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
index debeaa6d61482f2d72b86d758558ae95e88ae2d6..052c1158fc67598904fb4548cfe8275bb849a677 100644
--- a/compiler/java/com/google/dart/compiler/resolver/Resolver.java
+++ b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
@@ -69,7 +69,9 @@ import com.google.dart.compiler.common.SourceInfo;
import com.google.dart.compiler.type.InterfaceType;
import com.google.dart.compiler.type.InterfaceType.Member;
import com.google.dart.compiler.type.Type;
+import com.google.dart.compiler.type.TypeKind;
import com.google.dart.compiler.type.TypeVariable;
+import com.google.dart.compiler.type.Types;
import com.google.dart.compiler.util.apache.StringUtils;
import java.util.EnumSet;
@@ -642,9 +644,10 @@ public class Resolver {
resolve(expression);
// Now, this constant has a type. Save it for future reference.
Element element = node.getElement();
- if (expression.getType() != null
- && element.getType().equals(typeProvider.getDynamicType())) {
- Elements.setType(element, expression.getType());
+ Type expressionType = expression.getType();
+ if (expressionType != null && TypeKind.of(element.getType()) == TypeKind.DYNAMIC) {
+ Type fieldType = Types.makeInferred(expressionType);
+ Elements.setType(element, fieldType);
}
} else if (isFinal) {
if (isStatic) {
@@ -1202,6 +1205,9 @@ public class Resolver {
checkInvocationTarget(x, currentMethod, target);
visit(x.getArguments());
+ if (x.getFunctionName() != null) {
+ recordElement(x.getFunctionName(), element);
+ }
return recordElement(x, element);
}

Powered by Google App Engine
This is Rietveld 408576698