OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 js_backend; | 5 part of js_backend; |
6 | 6 |
7 /** | 7 /** |
8 * Assigns JavaScript identifiers to Dart variables, class-names and members. | 8 * Assigns JavaScript identifiers to Dart variables, class-names and members. |
9 * | 9 * |
10 * Names are generated through three stages: | 10 * Names are generated through three stages: |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 _literalAsyncPrefix = new StringBackedName(asyncPrefix); | 452 _literalAsyncPrefix = new StringBackedName(asyncPrefix); |
453 _literalGetterPrefix = new StringBackedName(getterPrefix); | 453 _literalGetterPrefix = new StringBackedName(getterPrefix); |
454 _literalSetterPrefix = new StringBackedName(setterPrefix); | 454 _literalSetterPrefix = new StringBackedName(setterPrefix); |
455 _literalLazyGetterPrefix = new StringBackedName(lazyGetterPrefix); | 455 _literalLazyGetterPrefix = new StringBackedName(lazyGetterPrefix); |
456 } | 456 } |
457 | 457 |
458 JavaScriptBackend get backend => compiler.backend; | 458 JavaScriptBackend get backend => compiler.backend; |
459 | 459 |
460 DiagnosticReporter get reporter => compiler.reporter; | 460 DiagnosticReporter get reporter => compiler.reporter; |
461 | 461 |
| 462 CoreClasses get coreClasses => compiler.coreClasses; |
| 463 |
462 String get deferredTypesName => 'deferredTypes'; | 464 String get deferredTypesName => 'deferredTypes'; |
463 String get isolateName => 'Isolate'; | 465 String get isolateName => 'Isolate'; |
464 String get isolatePropertiesName => r'$isolateProperties'; | 466 String get isolatePropertiesName => r'$isolateProperties'; |
465 jsAst.Name get noSuchMethodName => invocationName(Selectors.noSuchMethod_); | 467 jsAst.Name get noSuchMethodName => invocationName(Selectors.noSuchMethod_); |
466 | 468 |
467 /** | 469 /** |
468 * Some closures must contain their name. The name is stored in | 470 * Some closures must contain their name. The name is stored in |
469 * [STATIC_CLOSURE_NAME_NAME]. | 471 * [STATIC_CLOSURE_NAME_NAME]. |
470 */ | 472 */ |
471 String get STATIC_CLOSURE_NAME_NAME => r'$name'; | 473 String get STATIC_CLOSURE_NAME_NAME => r'$name'; |
(...skipping 30 matching lines...) Expand all Loading... |
502 case JsGetName.FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG: | 504 case JsGetName.FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG: |
503 return asName(functionTypeRequiredParametersTag); | 505 return asName(functionTypeRequiredParametersTag); |
504 case JsGetName.FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG: | 506 case JsGetName.FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG: |
505 return asName(functionTypeOptionalParametersTag); | 507 return asName(functionTypeOptionalParametersTag); |
506 case JsGetName.FUNCTION_TYPE_NAMED_PARAMETERS_TAG: | 508 case JsGetName.FUNCTION_TYPE_NAMED_PARAMETERS_TAG: |
507 return asName(functionTypeNamedParametersTag); | 509 return asName(functionTypeNamedParametersTag); |
508 case JsGetName.IS_INDEXABLE_FIELD_NAME: | 510 case JsGetName.IS_INDEXABLE_FIELD_NAME: |
509 Element cls = backend.findHelper('JavaScriptIndexingBehavior'); | 511 Element cls = backend.findHelper('JavaScriptIndexingBehavior'); |
510 return operatorIs(cls); | 512 return operatorIs(cls); |
511 case JsGetName.NULL_CLASS_TYPE_NAME: | 513 case JsGetName.NULL_CLASS_TYPE_NAME: |
512 return runtimeTypeName(compiler.nullClass); | 514 return runtimeTypeName(coreClasses.nullClass); |
513 case JsGetName.OBJECT_CLASS_TYPE_NAME: | 515 case JsGetName.OBJECT_CLASS_TYPE_NAME: |
514 return runtimeTypeName(compiler.objectClass); | 516 return runtimeTypeName(coreClasses.objectClass); |
515 case JsGetName.FUNCTION_CLASS_TYPE_NAME: | 517 case JsGetName.FUNCTION_CLASS_TYPE_NAME: |
516 return runtimeTypeName(compiler.functionClass); | 518 return runtimeTypeName(coreClasses.functionClass); |
517 default: | 519 default: |
518 reporter.reportErrorMessage( | 520 reporter.reportErrorMessage( |
519 node, | 521 node, |
520 MessageKind.GENERIC, | 522 MessageKind.GENERIC, |
521 {'text': 'Error: Namer has no name for "$name".'}); | 523 {'text': 'Error: Namer has no name for "$name".'}); |
522 return asName('BROKEN'); | 524 return asName('BROKEN'); |
523 } | 525 } |
524 } | 526 } |
525 | 527 |
526 /// Return a reference to the given [name]. | 528 /// Return a reference to the given [name]. |
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1198 libraryLongNames[library] = disambiguated; | 1200 libraryLongNames[library] = disambiguated; |
1199 name = disambiguated; | 1201 name = disambiguated; |
1200 } else { | 1202 } else { |
1201 name = element.name; | 1203 name = element.name; |
1202 } | 1204 } |
1203 return name; | 1205 return name; |
1204 } | 1206 } |
1205 | 1207 |
1206 String suffixForGetInterceptor(Iterable<ClassElement> classes) { | 1208 String suffixForGetInterceptor(Iterable<ClassElement> classes) { |
1207 String abbreviate(ClassElement cls) { | 1209 String abbreviate(ClassElement cls) { |
1208 if (cls == compiler.objectClass) return "o"; | 1210 if (cls == coreClasses.objectClass) return "o"; |
1209 if (cls == backend.jsStringClass) return "s"; | 1211 if (cls == backend.jsStringClass) return "s"; |
1210 if (cls == backend.jsArrayClass) return "a"; | 1212 if (cls == backend.jsArrayClass) return "a"; |
1211 if (cls == backend.jsDoubleClass) return "d"; | 1213 if (cls == backend.jsDoubleClass) return "d"; |
1212 if (cls == backend.jsIntClass) return "i"; | 1214 if (cls == backend.jsIntClass) return "i"; |
1213 if (cls == backend.jsNumberClass) return "n"; | 1215 if (cls == backend.jsNumberClass) return "n"; |
1214 if (cls == backend.jsNullClass) return "u"; | 1216 if (cls == backend.jsNullClass) return "u"; |
1215 if (cls == backend.jsBoolClass) return "b"; | 1217 if (cls == backend.jsBoolClass) return "b"; |
1216 if (cls == backend.jsInterceptorClass) return "I"; | 1218 if (cls == backend.jsInterceptorClass) return "I"; |
1217 return cls.name; | 1219 return cls.name; |
1218 } | 1220 } |
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2023 } | 2025 } |
2024 } | 2026 } |
2025 } | 2027 } |
2026 } | 2028 } |
2027 | 2029 |
2028 enum NamingScope { | 2030 enum NamingScope { |
2029 global, | 2031 global, |
2030 instance, | 2032 instance, |
2031 constant | 2033 constant |
2032 } | 2034 } |
OLD | NEW |