| 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);
|
| }
|
|
|
|
|