Chromium Code Reviews| Index: pkg/compiler/lib/src/resolution/members.dart |
| diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart |
| index da697606a998ac59767d664a0b83b5d7da1d0866..6964846d5da3368b70c80e35af6f1c1e5d81af15 100644 |
| --- a/pkg/compiler/lib/src/resolution/members.dart |
| +++ b/pkg/compiler/lib/src/resolution/members.dart |
| @@ -2994,19 +2994,16 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
| setter = warnAndCreateErroneousElement( |
| node.selector, target.name, MessageKind.ASSIGNING_TYPE); |
| registry.registerThrowNoSuchMethod(); |
| - } else if (target.isFinal || |
| - target.isConst || |
| - (target.isFunction && |
| - Elements.isStaticOrTopLevelFunction(target) && |
| - !target.isSetter)) { |
| - if (target.isFunction) { |
| - setter = warnAndCreateErroneousElement( |
| - node.selector, target.name, MessageKind.ASSIGNING_METHOD); |
| - } else { |
| - setter = warnAndCreateErroneousElement( |
| + } else if (target.isFinal || target.isConst) { |
| + setter = warnAndCreateErroneousElement( |
| node.selector, target.name, MessageKind.CANNOT_RESOLVE_SETTER); |
| - } |
| registry.registerThrowNoSuchMethod(); |
| + } else if (target.isFunction && target.name != '[]=') { |
| + assert(!target.isSetter); |
|
Siggi Cherem (dart-lang)
2015/04/11 00:12:21
in your original patch, you had this as part of th
Johnni Winther
2015/04/13 09:41:09
You're right - and I did document isFunction accor
|
| + setter = warnAndCreateErroneousElement( |
| + node.selector, target.name, MessageKind.ASSIGNING_METHOD); |
| + registry.registerThrowNoSuchMethod(); |
| + if (node.isSuperCall) registry.registerSuperNoSuchMethod(); |
|
Siggi Cherem (dart-lang)
2015/04/11 00:12:21
without this, codegen may fail later on (createInv
Johnni Winther
2015/04/13 09:41:09
Nice catch. And you're right about the selectors.
|
| } |
| if (isPotentiallyMutableTarget(target)) { |
| registry.registerPotentialMutation(target, node); |