| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 part of dart2js.js_emitter; | |
| 6 | |
| 7 class ClassStubGenerator { | |
| 8 final Namer namer; | |
| 9 final Compiler compiler; | |
| 10 final JavaScriptBackend backend; | |
| 11 | |
| 12 ClassStubGenerator(this.compiler, this.namer, this.backend); | |
| 13 | |
| 14 jsAst.Expression generateClassConstructor(ClassElement classElement, | |
| 15 Iterable<String> fields) { | |
| 16 // TODO(sra): Implement placeholders in VariableDeclaration position: | |
| 17 // | |
| 18 // String constructorName = namer.getNameOfClass(classElement); | |
| 19 // return js.statement('function #(#) { #; }', | |
| 20 // [ constructorName, fields, | |
| 21 // fields.map( | |
| 22 // (name) => js('this.# = #', [name, name]))])); | |
| 23 return js('function(#) { #; }', | |
| 24 [fields, | |
| 25 fields.map((name) => js('this.# = #', [name, name]))]); | |
| 26 } | |
| 27 | |
| 28 jsAst.Expression generateGetter(Element member, String fieldName) { | |
| 29 ClassElement cls = member.enclosingClass; | |
| 30 String receiver = backend.isInterceptorClass(cls) ? 'receiver' : 'this'; | |
| 31 List<String> args = backend.isInterceptedMethod(member) ? ['receiver'] : []; | |
| 32 return js('function(#) { return #.# }', [args, receiver, fieldName]); | |
| 33 } | |
| 34 | |
| 35 jsAst.Expression generateSetter(Element member, String fieldName) { | |
| 36 ClassElement cls = member.enclosingClass; | |
| 37 String receiver = backend.isInterceptorClass(cls) ? 'receiver' : 'this'; | |
| 38 List<String> args = backend.isInterceptedMethod(member) ? ['receiver'] : []; | |
| 39 // TODO(floitsch): remove 'return'? | |
| 40 return js('function(#, v) { return #.# = v; }', | |
| 41 [args, receiver, fieldName]); | |
| 42 } | |
| 43 } | |
| OLD | NEW |