OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library dart2js.js_emitter.program_builder; | 5 library dart2js.js_emitter.program_builder; |
6 | 6 |
7 import 'js_emitter.dart' show computeMixinClass; | 7 import 'js_emitter.dart' show computeMixinClass; |
8 import 'model.dart'; | 8 import 'model.dart'; |
9 | 9 |
10 import '../common.dart'; | 10 import '../common.dart'; |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 void visitMember(ClassElement enclosing, Element member) { | 316 void visitMember(ClassElement enclosing, Element member) { |
317 assert(invariant(element, member.isDeclaration)); | 317 assert(invariant(element, member.isDeclaration)); |
318 assert(invariant(element, element == enclosing)); | 318 assert(invariant(element, element == enclosing)); |
319 | 319 |
320 if (Elements.isNonAbstractInstanceMember(member)) { | 320 if (Elements.isNonAbstractInstanceMember(member)) { |
321 js.Expression code = backend.generatedCode[member]; | 321 js.Expression code = backend.generatedCode[member]; |
322 // TODO(herhut): Remove once _buildMethod can no longer return null. | 322 // TODO(herhut): Remove once _buildMethod can no longer return null. |
323 Method method = _buildMethod(member); | 323 Method method = _buildMethod(member); |
324 if (method != null) methods.add(method); | 324 if (method != null) methods.add(method); |
325 } | 325 } |
326 if (member.isGetter || member.isField) { | 326 if ((member.isGetter || member.isField) && |
| 327 !(member.enclosingClass == backend.closureClass && |
| 328 member.name == Compiler.CALL_OPERATOR_NAME)) { |
327 Set<Selector> selectors = | 329 Set<Selector> selectors = |
328 _compiler.codegenWorld.invokedNames[member.name]; | 330 _compiler.codegenWorld.invokedNames[member.name]; |
329 if (selectors != null && !selectors.isEmpty) { | 331 if (selectors != null && !selectors.isEmpty) { |
330 | 332 |
331 Map<String, js.Expression> callStubsForMember = | 333 Map<String, js.Expression> callStubsForMember = |
332 classStubGenerator.generateCallStubsForGetter(member, selectors); | 334 classStubGenerator.generateCallStubsForGetter(member, selectors); |
333 callStubsForMember.forEach((String name, js.Expression code) { | 335 callStubsForMember.forEach((String name, js.Expression code) { |
334 callStubs.add(_buildStubMethod(name, code, element: member)); | 336 callStubs.add(_buildStubMethod(name, code, element: member)); |
335 }); | 337 }); |
336 } | 338 } |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
653 _registry.registerConstant(outputUnit, constantValue); | 655 _registry.registerConstant(outputUnit, constantValue); |
654 assert(!_constants.containsKey(constantValue)); | 656 assert(!_constants.containsKey(constantValue)); |
655 String name = namer.constantName(constantValue); | 657 String name = namer.constantName(constantValue); |
656 String constantObject = namer.globalObjectForConstant(constantValue); | 658 String constantObject = namer.globalObjectForConstant(constantValue); |
657 Holder holder = _registry.registerHolder(constantObject); | 659 Holder holder = _registry.registerHolder(constantObject); |
658 Constant constant = new Constant(name, holder, constantValue); | 660 Constant constant = new Constant(name, holder, constantValue); |
659 _constants[constantValue] = constant; | 661 _constants[constantValue] = constant; |
660 } | 662 } |
661 } | 663 } |
662 } | 664 } |
OLD | NEW |