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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/js_backend/namer.dart

Issue 170103003: Avoid use of empty string as a property name. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart » ('j') | 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 class Namer implements ClosureNamer { 10 class Namer implements ClosureNamer {
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 final String currentIsolate = r'$'; 220 final String currentIsolate = r'$';
221 final String getterPrefix = r'get$'; 221 final String getterPrefix = r'get$';
222 final String setterPrefix = r'set$'; 222 final String setterPrefix = r'set$';
223 final String metadataField = '@'; 223 final String metadataField = '@';
224 final String callCatchAllName = r'call$catchAll'; 224 final String callCatchAllName = r'call$catchAll';
225 final String reflectableField = r'$reflectable'; 225 final String reflectableField = r'$reflectable';
226 final String defaultValuesField = r'$defaultValues'; 226 final String defaultValuesField = r'$defaultValues';
227 final String methodsWithOptionalArgumentsField = 227 final String methodsWithOptionalArgumentsField =
228 r'$methodsWithOptionalArguments'; 228 r'$methodsWithOptionalArguments';
229 229
230 final String classDescriptorProperty = r'^';
231
230 // Name of property in a class description for the native dispatch metadata. 232 // Name of property in a class description for the native dispatch metadata.
231 final String nativeSpecProperty = '%'; 233 final String nativeSpecProperty = '%';
232 234
233 static final RegExp IDENTIFIER = new RegExp(r'^[A-Za-z_$][A-Za-z0-9_$]*$'); 235 static final RegExp IDENTIFIER = new RegExp(r'^[A-Za-z_$][A-Za-z0-9_$]*$');
234 static final RegExp NON_IDENTIFIER_CHAR = new RegExp(r'[^A-Za-z_0-9$]'); 236 static final RegExp NON_IDENTIFIER_CHAR = new RegExp(r'[^A-Za-z_0-9$]');
235 237
236 /** 238 /**
237 * Map from top-level or static elements to their unique identifiers provided 239 * Map from top-level or static elements to their unique identifiers provided
238 * by [getName]. 240 * by [getName].
239 * 241 *
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 String get STATIC_CLOSURE_NAME_NAME => r'$name'; 285 String get STATIC_CLOSURE_NAME_NAME => r'$name';
284 String get closureInvocationSelectorName => Compiler.CALL_OPERATOR_NAME; 286 String get closureInvocationSelectorName => Compiler.CALL_OPERATOR_NAME;
285 bool get shouldMinify => false; 287 bool get shouldMinify => false;
286 288
287 String getNameForJsGetName(Node node, String name) { 289 String getNameForJsGetName(Node node, String name) {
288 switch (name) { 290 switch (name) {
289 case 'GETTER_PREFIX': return getterPrefix; 291 case 'GETTER_PREFIX': return getterPrefix;
290 case 'SETTER_PREFIX': return setterPrefix; 292 case 'SETTER_PREFIX': return setterPrefix;
291 case 'CALL_CATCH_ALL': return callCatchAllName; 293 case 'CALL_CATCH_ALL': return callCatchAllName;
292 case 'REFLECTABLE': return reflectableField; 294 case 'REFLECTABLE': return reflectableField;
295 case 'CLASS_DESCRIPTOR_PROPERTY': return classDescriptorProperty;
293 default: 296 default:
294 compiler.reportError( 297 compiler.reportError(
295 node, MessageKind.GENERIC, 298 node, MessageKind.GENERIC,
296 {'text': 'Error: Namer has no name for "$name".'}); 299 {'text': 'Error: Namer has no name for "$name".'});
297 return 'BROKEN'; 300 return 'BROKEN';
298 } 301 }
299 } 302 }
300 303
301 String constantName(Constant constant) { 304 String constantName(Constant constant) {
302 // In the current implementation it doesn't make sense to give names to 305 // In the current implementation it doesn't make sense to give names to
(...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 if (!first) { 1398 if (!first) {
1396 sb.write('_'); 1399 sb.write('_');
1397 } 1400 }
1398 sb.write('_'); 1401 sb.write('_');
1399 visit(link.head); 1402 visit(link.head);
1400 first = true; 1403 first = true;
1401 } 1404 }
1402 } 1405 }
1403 } 1406 }
1404 } 1407 }
OLDNEW
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698