| 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 a2f47c0daf44bc1d44749d3667093dfca2a9cf42..a849bfbc5fb9c43fdbdab7b8b90ae615d2150bc8 100644
|
| --- a/compiler/java/com/google/dart/compiler/resolver/Resolver.java
|
| +++ b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
|
| @@ -1266,18 +1266,25 @@ public class Resolver {
|
| switch (ElementKind.of(element)) {
|
| case FIELD:
|
| FieldElement field = (FieldElement) element;
|
| + x.setType(field.getType());
|
| if (!field.getModifiers().isStatic()) {
|
| onError(x.getName(), ResolverErrorCode.NOT_A_STATIC_FIELD,
|
| x.getPropertyName());
|
| }
|
| if (Elements.inGetterContext(x)) {
|
| - if (field.getGetter() == null && field.getSetter() != null) {
|
| - onError(x.getName(), ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_GETTER);
|
| + if (field.getSetter() != null) {
|
| + element = field.getGetter();
|
| + if (element == null) {
|
| + onError(x.getName(), ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_GETTER);
|
| + }
|
| }
|
| }
|
| if (Elements.inSetterContext(x)) {
|
| - if (field.getSetter() == null && field.getGetter() != null) {
|
| - onError(x.getName(), ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_SETTER);
|
| + if (field.getGetter() != null) {
|
| + element = field.getSetter();
|
| + if (element == null) {
|
| + onError(x.getName(), ResolverErrorCode.FIELD_DOES_NOT_HAVE_A_SETTER);
|
| + }
|
| }
|
| }
|
| break;
|
| @@ -1370,9 +1377,6 @@ public class Resolver {
|
| default:
|
| break;
|
| }
|
| - if (x.getName() != null) {
|
| - recordElement(x.getName(), element);
|
| - }
|
| return recordElement(x, element);
|
| }
|
|
|
| @@ -1952,8 +1956,10 @@ public class Resolver {
|
| }
|
| break;
|
| case METHOD:
|
| - topLevelContext.onError(node.getArg1(), ResolverErrorCode.CANNOT_ASSIGN_TO_METHOD,
|
| - lhs.getName());
|
| + if (!lhs.getModifiers().isSetter()) {
|
| + topLevelContext.onError(node.getArg1(), ResolverErrorCode.CANNOT_ASSIGN_TO_METHOD,
|
| + lhs.getName());
|
| + }
|
| break;
|
| }
|
| }
|
|
|