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

Side by Side Diff: pkg/js_ast/lib/src/builder.dart

Issue 1198293002: dart2js: Use an abstract Name class for names in the generated JavaScript ast. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fix new emitter. Created 5 years, 6 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
OLDNEW
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 // Utilities for building JS ASTs at runtime. Contains a builder class 5 // Utilities for building JS ASTs at runtime. Contains a builder class
6 // and a parser that parses part of the language. 6 // and a parser that parses part of the language.
7 7
8 part of js_ast; 8 part of js_ast;
9 9
10 10
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 } else { 345 } else {
346 _parts = new List.from(parts, growable: false); 346 _parts = new List.from(parts, growable: false);
347 } 347 }
348 return new StringConcatenation(_parts); 348 return new StringConcatenation(_parts);
349 } 349 }
350 350
351 Iterable<Literal> joinLiterals(Iterable<Literal> list, Literal separator) { 351 Iterable<Literal> joinLiterals(Iterable<Literal> list, Literal separator) {
352 return new _InterleaveIterable(list, separator); 352 return new _InterleaveIterable(list, separator);
353 } 353 }
354 354
355 LiteralString quoteName(Name name, {allowNull: false}) {
356 if (name == null) {
357 assert(allowNull);
358 return new LiteralString('""');
359 }
360 return new LiteralStringFromName(name);
361 }
362
355 LiteralNumber number(num value) => new LiteralNumber('$value'); 363 LiteralNumber number(num value) => new LiteralNumber('$value');
356 364
357 LiteralBool boolean(bool value) => new LiteralBool(value); 365 LiteralBool boolean(bool value) => new LiteralBool(value);
358 366
359 ArrayInitializer numArray(Iterable<int> list) => 367 ArrayInitializer numArray(Iterable<int> list) =>
360 new ArrayInitializer(list.map(number).toList()); 368 new ArrayInitializer(list.map(number).toList());
361 369
362 ArrayInitializer stringArray(Iterable<String> list) => 370 ArrayInitializer stringArray(Iterable<String> list) =>
363 new ArrayInitializer(list.map(string).toList()); 371 new ArrayInitializer(list.map(string).toList());
364 372
365 Comment comment(String text) => new Comment(text); 373 Comment comment(String text) => new Comment(text);
366 374
367 Call propertyCall(Expression receiver, 375 Call propertyCall(Expression receiver,
368 String fieldName, 376 Expression fieldName,
369 List<Expression> arguments) { 377 List<Expression> arguments) {
370 return new Call(new PropertyAccess.field(receiver, fieldName), arguments); 378 return new Call(new PropertyAccess(receiver, fieldName), arguments);
371 } 379 }
372 } 380 }
373 381
374 LiteralString string(String value) => js.string(value); 382 LiteralString string(String value) => js.string(value);
383 LiteralString quoteName(Name name, {allowNull: false}) {
384 return js.quoteName(name, allowNull: allowNull);
385 }
375 LiteralString stringPart(String value) => js.stringPart(value); 386 LiteralString stringPart(String value) => js.stringPart(value);
376 Iterable<Literal> joinLiterals(Iterable<Literal> list, Literal separator) { 387 Iterable<Literal> joinLiterals(Iterable<Literal> list, Literal separator) {
377 return js.joinLiterals(list, separator); 388 return js.joinLiterals(list, separator);
378 } 389 }
390 StringConcatenation concatenateStrings(Iterable<Literal> parts,
391 {addQuotes: false}) {
392 return js.concatenateStrings(parts, addQuotes: addQuotes);
393 }
394
379 LiteralNumber number(num value) => js.number(value); 395 LiteralNumber number(num value) => js.number(value);
380 ArrayInitializer numArray(Iterable<int> list) => js.numArray(list); 396 ArrayInitializer numArray(Iterable<int> list) => js.numArray(list);
381 ArrayInitializer stringArray(Iterable<String> list) => js.stringArray(list); 397 ArrayInitializer stringArray(Iterable<String> list) => js.stringArray(list);
382 Call propertyCall(Expression receiver, 398 Call propertyCall(Expression receiver,
383 String fieldName, 399 Expression fieldName,
384 List<Expression> arguments) { 400 List<Expression> arguments) {
385 return js.propertyCall(receiver, fieldName, arguments); 401 return js.propertyCall(receiver, fieldName, arguments);
386 } 402 }
387 403
388 class MiniJsParserError { 404 class MiniJsParserError {
389 MiniJsParserError(this.parser, this.message) { } 405 MiniJsParserError(this.parser, this.message) { }
390 406
391 final MiniJsParser parser; 407 final MiniJsParser parser;
392 final String message; 408 final String message;
393 409
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 class _InterleaveIterable extends IterableBase { 1419 class _InterleaveIterable extends IterableBase {
1404 Iterable<Node> source; 1420 Iterable<Node> source;
1405 Node separator; 1421 Node separator;
1406 1422
1407 _InterleaveIterable(this.source, this.separator); 1423 _InterleaveIterable(this.source, this.separator);
1408 1424
1409 Iterator<Node> get iterator { 1425 Iterator<Node> get iterator {
1410 return new _InterleaveIterator(source.iterator, separator); 1426 return new _InterleaveIterator(source.iterator, separator);
1411 } 1427 }
1412 } 1428 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698