| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 part of dart2js.js_emitter; | 5 part of dart2js.js_emitter; |
| 6 | 6 |
| 7 /// This class should morph into something that makes it easy to build | 7 /// This class should morph into something that makes it easy to build |
| 8 /// JavaScript representations of libraries, class-sides, and instance-sides. | 8 /// JavaScript representations of libraries, class-sides, and instance-sides. |
| 9 /// Initially, it is just a placeholder for code that is moved from | 9 /// Initially, it is just a placeholder for code that is moved from |
| 10 /// [CodeEmitterTask]. | 10 /// [CodeEmitterTask]. |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 jsAst.Fun function = js.fun(parametersBuffer, body); | 144 jsAst.Fun function = js.fun(parametersBuffer, body); |
| 145 | 145 |
| 146 addStub(selector, function); | 146 addStub(selector, function); |
| 147 } | 147 } |
| 148 | 148 |
| 149 void addParameterStubs(FunctionElement member, AddStubFunction defineStub, | 149 void addParameterStubs(FunctionElement member, AddStubFunction defineStub, |
| 150 [bool canTearOff = false]) { | 150 [bool canTearOff = false]) { |
| 151 if (member.enclosingElement.isClosure()) { | 151 if (member.enclosingElement.isClosure()) { |
| 152 ClosureClassElement cls = member.enclosingElement; | 152 ClosureClassElement cls = member.enclosingElement; |
| 153 if (cls.supertype.element == compiler.boundClosureClass) { | 153 if (cls.supertype.element == compiler.boundClosureClass) { |
| 154 compiler.internalErrorOnElement(cls.methodElement, 'Bound closure1.'); | 154 compiler.internalError(cls.methodElement, 'Bound closure1.'); |
| 155 } | 155 } |
| 156 if (cls.methodElement.isInstanceMember()) { | 156 if (cls.methodElement.isInstanceMember()) { |
| 157 compiler.internalErrorOnElement(cls.methodElement, 'Bound closure2.'); | 157 compiler.internalError(cls.methodElement, 'Bound closure2.'); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 | 160 |
| 161 // We fill the lists depending on the selector. For example, | 161 // We fill the lists depending on the selector. For example, |
| 162 // take method foo: | 162 // take method foo: |
| 163 // foo(a, b, {c, d}); | 163 // foo(a, b, {c, d}); |
| 164 // | 164 // |
| 165 // We may have multiple ways of calling foo: | 165 // We may have multiple ways of calling foo: |
| 166 // (1) foo(1, 2); | 166 // (1) foo(1, 2); |
| 167 // (2) foo(1, 2, c: 3); | 167 // (2) foo(1, 2, c: 3); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 assert(invariant(member, member.isDeclaration)); | 330 assert(invariant(member, member.isDeclaration)); |
| 331 | 331 |
| 332 if (member.isField()) { | 332 if (member.isField()) { |
| 333 addMemberField(member, builder); | 333 addMemberField(member, builder); |
| 334 } else if (member.isFunction() || | 334 } else if (member.isFunction() || |
| 335 member.isGenerativeConstructorBody() || | 335 member.isGenerativeConstructorBody() || |
| 336 member.isGenerativeConstructor() || | 336 member.isGenerativeConstructor() || |
| 337 member.isAccessor()) { | 337 member.isAccessor()) { |
| 338 addMemberMethod(member, builder); | 338 addMemberMethod(member, builder); |
| 339 } else { | 339 } else { |
| 340 compiler.internalErrorOnElement( | 340 compiler.internalError(member, |
| 341 member, 'unexpected kind: "${member.kind}"'); | 341 'Unexpected kind: "${member.kind}".'); |
| 342 } | 342 } |
| 343 if (member.isInstanceMember()) emitExtraAccessors(member, builder); | 343 if (member.isInstanceMember()) emitExtraAccessors(member, builder); |
| 344 } | 344 } |
| 345 | 345 |
| 346 void addMemberMethod(FunctionElement member, ClassBuilder builder) { | 346 void addMemberMethod(FunctionElement member, ClassBuilder builder) { |
| 347 if (member.isAbstract) return; | 347 if (member.isAbstract) return; |
| 348 jsAst.Expression code = backend.generatedCode[member]; | 348 jsAst.Expression code = backend.generatedCode[member]; |
| 349 if (code == null) return; | 349 if (code == null) return; |
| 350 String name = namer.getNameOfMember(member); | 350 String name = namer.getNameOfMember(member); |
| 351 task.interceptorEmitter.recordMangledNameOfMemberMethod(member, name); | 351 task.interceptorEmitter.recordMangledNameOfMemberMethod(member, name); |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 expressions.add(js.string(member.name)); | 526 expressions.add(js.string(member.name)); |
| 527 } | 527 } |
| 528 | 528 |
| 529 builder.addProperty(name, js.toExpression(expressions)); | 529 builder.addProperty(name, js.toExpression(expressions)); |
| 530 } | 530 } |
| 531 | 531 |
| 532 void addMemberField(VariableElement member, ClassBuilder builder) { | 532 void addMemberField(VariableElement member, ClassBuilder builder) { |
| 533 // For now, do nothing. | 533 // For now, do nothing. |
| 534 } | 534 } |
| 535 } | 535 } |
| OLD | NEW |