Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1212)

Side by Side Diff: pkg/compiler/lib/src/js_backend/namer.dart

Issue 1433543004: Resolve some static warnings. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 767 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 return new StringBackedName(backend.getFixedBackendName(element)); 778 return new StringBackedName(backend.getFixedBackendName(element));
779 } 779 }
780 780
781 // Some elements, like e.g. instances of BoxFieldElement are special. 781 // Some elements, like e.g. instances of BoxFieldElement are special.
782 // They are created with a unique and safe name for the element model. 782 // They are created with a unique and safe name for the element model.
783 // While their name is unique, it is not very readable. So we try to 783 // While their name is unique, it is not very readable. So we try to
784 // preserve the original, proposed name. 784 // preserve the original, proposed name.
785 // However, as boxes are not really instances of classes, the usual naming 785 // However, as boxes are not really instances of classes, the usual naming
786 // scheme that tries to avoid name clashes with super classes does not 786 // scheme that tries to avoid name clashes with super classes does not
787 // apply. So we can directly grab a name. 787 // apply. So we can directly grab a name.
788 if (element is JSEntity) { 788 Entity asEntity = element;
789 if (asEntity is JSEntity) {
789 return _disambiguateInternalMember(element, 790 return _disambiguateInternalMember(element,
790 () => element.declaredEntity.name); 791 () => asEntity.declaredEntity.name);
791 } 792 }
792 793
793 // If the name of the field might clash with another field, 794 // If the name of the field might clash with another field,
794 // use a mangled field name to avoid potential clashes. 795 // use a mangled field name to avoid potential clashes.
795 // Note that if the class extends a native class, that native class might 796 // Note that if the class extends a native class, that native class might
796 // have fields with fixed backend names, so we assume the worst and always 797 // have fields with fixed backend names, so we assume the worst and always
797 // mangle the field names of classes extending native classes. 798 // mangle the field names of classes extending native classes.
798 // Methods on such classes are stored on the interceptor, not the instance, 799 // Methods on such classes are stored on the interceptor, not the instance,
799 // so only fields have the potential to clash with a native property name. 800 // so only fields have the potential to clash with a native property name.
800 ClassWorld classWorld = compiler.world; 801 ClassWorld classWorld = compiler.world;
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 /// This is used as the property name for fields, type variables, 1006 /// This is used as the property name for fields, type variables,
1006 /// constructor bodies, and super-accessors. 1007 /// constructor bodies, and super-accessors.
1007 /// 1008 ///
1008 /// The resulting name is unique within the instance-member namespace. 1009 /// The resulting name is unique within the instance-member namespace.
1009 jsAst.Name _disambiguateInternalMember(Element element, 1010 jsAst.Name _disambiguateInternalMember(Element element,
1010 String proposeName()) { 1011 String proposeName()) {
1011 jsAst.Name newName = internalInstanceMembers[element]; 1012 jsAst.Name newName = internalInstanceMembers[element];
1012 if (newName == null) { 1013 if (newName == null) {
1013 String name = proposeName(); 1014 String name = proposeName();
1014 1015
1015 if (element is PrivatelyNamedJSEntity) { 1016 Entity asEntity = element;
1016 NamingScope scope = _getPrivateScopeFor(element); 1017 if (asEntity is PrivatelyNamedJSEntity) {
1018 NamingScope scope = _getPrivateScopeFor(asEntity);
1017 newName = getFreshName(scope, name, 1019 newName = getFreshName(scope, name,
1018 sanitizeForAnnotations: true, 1020 sanitizeForAnnotations: true,
1019 sanitizeForNatives: false); 1021 sanitizeForNatives: false);
1020 internalInstanceMembers[element] = newName; 1022 internalInstanceMembers[element] = newName;
1021 } else { 1023 } else {
1022 bool mayClashNative = 1024 bool mayClashNative =
1023 _isUserClassExtendingNative(element.enclosingClass); 1025 _isUserClassExtendingNative(element.enclosingClass);
1024 newName = getFreshName(instanceScope, name, 1026 newName = getFreshName(instanceScope, name,
1025 sanitizeForAnnotations: true, 1027 sanitizeForAnnotations: true,
1026 sanitizeForNatives: mayClashNative); 1028 sanitizeForNatives: mayClashNative);
(...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after
2035 String suggestName(String original) => _suggestedNames[original]; 2037 String suggestName(String original) => _suggestedNames[original];
2036 void addSuggestion(String original, String suggestion) { 2038 void addSuggestion(String original, String suggestion) {
2037 assert(!_suggestedNames.containsKey(original)); 2039 assert(!_suggestedNames.containsKey(original));
2038 _suggestedNames[original] = suggestion; 2040 _suggestedNames[original] = suggestion;
2039 } 2041 }
2040 bool hasSuggestion(String original) => _suggestedNames.containsKey(original); 2042 bool hasSuggestion(String original) => _suggestedNames.containsKey(original);
2041 bool isSuggestion(String candidate) { 2043 bool isSuggestion(String candidate) {
2042 return _suggestedNames.containsValue(candidate); 2044 return _suggestedNames.containsValue(candidate);
2043 } 2045 }
2044 } 2046 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698