| Index: pkg/compiler/lib/src/js_backend/minify_namer.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/minify_namer.dart b/pkg/compiler/lib/src/js_backend/minify_namer.dart
|
| index 9a2d1e3fc4a1290eb5a086a1cceeaae5933d20fe..b6801684b7a65aac77cd1e0808819e968a3ce39b 100644
|
| --- a/pkg/compiler/lib/src/js_backend/minify_namer.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/minify_namer.dart
|
| @@ -7,7 +7,8 @@ part of js_backend;
|
| /**
|
| * Assigns JavaScript identifiers to Dart variables, class-names and members.
|
| */
|
| -class MinifyNamer extends Namer with _MinifiedFieldNamer {
|
| +class MinifyNamer extends Namer with _MinifiedFieldNamer,
|
| + _MinifiedOneShotInterceptorNamer {
|
| MinifyNamer(Compiler compiler) : super(compiler) {
|
| reserveBackendNames();
|
| fieldRegistry = new _FieldNamingRegistry(this);
|
| @@ -32,11 +33,11 @@ class MinifyNamer extends Namer with _MinifiedFieldNamer {
|
| /// [sanitizeForNatives] and [sanitizeForAnnotations] are ignored because the
|
| /// minified names will always avoid clashing with annotated names or natives.
|
| @override
|
| - jsAst.Name getFreshName(String proposedName,
|
| - Set<String> usedNames,
|
| - Map<String, String> suggestedNames,
|
| - {bool sanitizeForNatives: false,
|
| - bool sanitizeForAnnotations: false}) {
|
| + String _generateFreshStringForName(String proposedName,
|
| + Set<String> usedNames,
|
| + Map<String, String> suggestedNames,
|
| + {bool sanitizeForNatives: false,
|
| + bool sanitizeForAnnotations: false}) {
|
| String freshName;
|
| String suggestion = suggestedNames[proposedName];
|
| if (suggestion != null && !usedNames.contains(suggestion)) {
|
| @@ -46,7 +47,7 @@ class MinifyNamer extends Namer with _MinifiedFieldNamer {
|
| suggestedNames.values);
|
| }
|
| usedNames.add(freshName);
|
| - return new StringBackedName(freshName);
|
| + return freshName;
|
| }
|
|
|
| // From issue 7554. These should not be used on objects (as instance
|
| @@ -192,7 +193,7 @@ class MinifyNamer extends Namer with _MinifiedFieldNamer {
|
|
|
| /// Instance members starting with g and s are reserved for getters and
|
| /// setters.
|
| - bool _hasBannedPrefix(String name) {
|
| + static bool _hasBannedPrefix(String name) {
|
| int code = name.codeUnitAt(0);
|
| return code == $g || code == $s;
|
| }
|
| @@ -255,3 +256,18 @@ class MinifyNamer extends Namer with _MinifiedFieldNamer {
|
| }
|
| }
|
|
|
| +abstract class _MinifiedOneShotInterceptorNamer implements Namer {
|
| + /// Property name used for the one-shot interceptor method for the given
|
| + /// [selector] and return-type specialization.
|
| + jsAst.Name nameForGetOneShotInterceptor(Selector selector,
|
| + Iterable<ClassElement> classes) {
|
| + String root = selector.isOperator ? operatorNameToIdentifier(selector.name)
|
| + : privateName(selector.memberName);
|
| + String prefix = selector.isGetter ? r"$get"
|
| + : selector.isSetter ? r"$set" : "";
|
| + String arity = selector.isCall ? "${selector.argumentCount}" : "";
|
| + String suffix = suffixForGetInterceptor(classes);
|
| + String fullName = "\$intercepted$prefix\$$root$arity\$$suffix";
|
| + return _disambiguateInternalGlobal(fullName);
|
| + }
|
| +}
|
|
|