| 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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 memberType = body.constructor.type; | 366 memberType = body.constructor.type; |
| 367 } else { | 367 } else { |
| 368 memberType = member.type; | 368 memberType = member.type; |
| 369 } | 369 } |
| 370 if (memberType.containsTypeVariables) { | 370 if (memberType.containsTypeVariables) { |
| 371 jsAst.Expression thisAccess = js(r'this.$receiver'); | 371 jsAst.Expression thisAccess = js(r'this.$receiver'); |
| 372 memberTypeExpression = | 372 memberTypeExpression = |
| 373 backend.rti.getSignatureEncoding(memberType, thisAccess); | 373 backend.rti.getSignatureEncoding(memberType, thisAccess); |
| 374 } else { | 374 } else { |
| 375 memberTypeExpression = | 375 memberTypeExpression = |
| 376 js.number(task.metadataEmitter.reifyType(memberType)); | 376 js.number(task.metadataCollector.reifyType(memberType)); |
| 377 } | 377 } |
| 378 } else { | 378 } else { |
| 379 memberTypeExpression = js('null'); | 379 memberTypeExpression = js('null'); |
| 380 } | 380 } |
| 381 | 381 |
| 382 expressions | 382 expressions |
| 383 ..addAll(tearOffInfo) | 383 ..addAll(tearOffInfo) |
| 384 ..add((tearOffName == null || member.isAccessor) | 384 ..add((tearOffName == null || member.isAccessor) |
| 385 ? js("null") : js.string(tearOffName)) | 385 ? js("null") : js.string(tearOffName)) |
| 386 ..add(js.number(requiredParameterCount)) | 386 ..add(js.number(requiredParameterCount)) |
| 387 ..add(js.number(optionalParameterCount)) | 387 ..add(js.number(optionalParameterCount)) |
| 388 ..add(memberTypeExpression) | 388 ..add(memberTypeExpression) |
| 389 ..addAll(task.metadataEmitter | 389 ..addAll(task.metadataCollector |
| 390 .reifyDefaultArguments(member).map(js.number)); | 390 .reifyDefaultArguments(member).map(js.number)); |
| 391 | 391 |
| 392 if (canBeReflected || canBeApplied) { | 392 if (canBeReflected || canBeApplied) { |
| 393 parameters.forEachParameter((Element parameter) { | 393 parameters.forEachParameter((Element parameter) { |
| 394 expressions.add( | 394 expressions.add( |
| 395 js.number(task.metadataEmitter.reifyName(parameter.name))); | 395 js.number(task.metadataCollector.reifyName(parameter.name))); |
| 396 if (backend.mustRetainMetadata) { | 396 if (backend.mustRetainMetadata) { |
| 397 Iterable<int> metadataIndices = | 397 Iterable<int> metadataIndices = |
| 398 parameter.metadata.map((MetadataAnnotation annotation) { | 398 parameter.metadata.map((MetadataAnnotation annotation) { |
| 399 ConstantValue constant = | 399 ConstantValue constant = |
| 400 backend.constants.getConstantForMetadata(annotation).value; | 400 backend.constants.getConstantForMetadata(annotation).value; |
| 401 backend.constants.addCompileTimeConstantForEmission(constant); | 401 backend.constants.addCompileTimeConstantForEmission(constant); |
| 402 return task.metadataEmitter.reifyMetadata(annotation); | 402 return task.metadataCollector.reifyMetadata(annotation); |
| 403 }); | 403 }); |
| 404 expressions.add(new jsAst.ArrayInitializer( | 404 expressions.add(new jsAst.ArrayInitializer( |
| 405 metadataIndices.map(js.number).toList())); | 405 metadataIndices.map(js.number).toList())); |
| 406 } | 406 } |
| 407 }); | 407 }); |
| 408 } | 408 } |
| 409 if (canBeReflected) { | 409 if (canBeReflected) { |
| 410 jsAst.LiteralString reflectionName; | 410 jsAst.LiteralString reflectionName; |
| 411 if (member.isConstructor) { | 411 if (member.isConstructor) { |
| 412 String reflectionNameString = emitter.getReflectionName(member, name); | 412 String reflectionNameString = emitter.getReflectionName(member, name); |
| 413 reflectionName = | 413 reflectionName = |
| 414 new jsAst.LiteralString( | 414 new jsAst.LiteralString( |
| 415 '"new ${Elements.reconstructConstructorName(member)}"'); | 415 '"new ${Elements.reconstructConstructorName(member)}"'); |
| 416 } else { | 416 } else { |
| 417 reflectionName = | 417 reflectionName = |
| 418 js.string(namer.privateName(member.library, member.name)); | 418 js.string(namer.privateName(member.library, member.name)); |
| 419 } | 419 } |
| 420 expressions | 420 expressions |
| 421 ..add(reflectionName) | 421 ..add(reflectionName) |
| 422 ..addAll(task.metadataEmitter.computeMetadata(member).map(js.number)); | 422 ..addAll(task.metadataCollector |
| 423 .computeMetadata(member).map(js.number)); |
| 423 } else if (isClosure && canBeApplied) { | 424 } else if (isClosure && canBeApplied) { |
| 424 expressions.add(js.string(namer.privateName(member.library, | 425 expressions.add(js.string(namer.privateName(member.library, |
| 425 member.name))); | 426 member.name))); |
| 426 } | 427 } |
| 427 | 428 |
| 428 jsAst.ArrayInitializer arrayInit = | 429 jsAst.ArrayInitializer arrayInit = |
| 429 new jsAst.ArrayInitializer(expressions.toList()); | 430 new jsAst.ArrayInitializer(expressions.toList()); |
| 430 compiler.dumpInfoTask.registerElementAst(member, | 431 compiler.dumpInfoTask.registerElementAst(member, |
| 431 builder.addProperty(name, arrayInit)); | 432 builder.addProperty(name, arrayInit)); |
| 432 } | 433 } |
| 433 | 434 |
| 434 void addMemberField(Field field, ClassBuilder builder) { | 435 void addMemberField(Field field, ClassBuilder builder) { |
| 435 // For now, do nothing. | 436 // For now, do nothing. |
| 436 } | 437 } |
| 437 } | 438 } |
| OLD | NEW |