| Index: compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
|
| diff --git a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
|
| index e8e37936220c3cc90e9729ab238cde76b468e6dd..88221918da00a107b288a734bab20058f1eee11b 100644
|
| --- a/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
|
| +++ b/compiler/java/com/google/dart/compiler/type/TypeAnalyzer.java
|
| @@ -107,6 +107,7 @@ import com.google.dart.compiler.resolver.Element;
|
| import com.google.dart.compiler.resolver.ElementKind;
|
| import com.google.dart.compiler.resolver.Elements;
|
| import com.google.dart.compiler.resolver.FieldElement;
|
| +import com.google.dart.compiler.resolver.LibraryElement;
|
| import com.google.dart.compiler.resolver.MethodElement;
|
| import com.google.dart.compiler.resolver.ResolverErrorCode;
|
| import com.google.dart.compiler.resolver.TypeErrorCode;
|
| @@ -1053,6 +1054,27 @@ public class TypeAnalyzer implements DartCompilationPhase {
|
| break;
|
|
|
| case FIELD:
|
| + type = typeAsMemberOf(element, currentClass);
|
| + type.getClass(); // quick null check
|
| + // try to resolve as getter/setter
|
| + if (element.getModifiers().isAbstractField()
|
| + && element.getEnclosingElement() instanceof LibraryElement) {
|
| + FieldElement fieldElement = (FieldElement) element;
|
| + if (Elements.inGetterContext(node)) {
|
| + MethodElement getter = fieldElement.getGetter();
|
| + if (getter != null) {
|
| + node.setElement(getter);
|
| + }
|
| + }
|
| + if (Elements.inSetterContext(node)) {
|
| + MethodElement setter = fieldElement.getSetter();
|
| + if (setter != null) {
|
| + node.setElement(setter);
|
| + }
|
| + }
|
| + }
|
| + break;
|
| +
|
| case METHOD:
|
| type = typeAsMemberOf(element, currentClass);
|
| type.getClass(); // quick null check
|
|
|