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

Side by Side Diff: lib/src/js/builder.dart

Issue 1030243002: [cleanup] remove PropertyName from js_ast (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « lib/src/codegen/js_codegen.dart ('k') | lib/src/js/nodes.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) 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 751 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 } 762 }
763 return new ArrayInitializer(values); 763 return new ArrayInitializer(values);
764 } else if (last != null && last.startsWith("/")) { 764 } else if (last != null && last.startsWith("/")) {
765 String regexp = getDelimited(lastPosition); 765 String regexp = getDelimited(lastPosition);
766 getToken(); 766 getToken();
767 String flags = lastToken; 767 String flags = lastToken;
768 if (!acceptCategory(ALPHA)) flags = ""; 768 if (!acceptCategory(ALPHA)) flags = "";
769 Expression expression = new RegExpLiteral(regexp + flags); 769 Expression expression = new RegExpLiteral(regexp + flags);
770 return expression; 770 return expression;
771 } else if (acceptCategory(HASH)) { 771 } else if (acceptCategory(HASH)) {
772 var nameOrPosition = parseHash(); 772 return parseInterpolatedExpression();
773 InterpolatedExpression expression =
774 new InterpolatedExpression(nameOrPosition);
775 interpolatedValues.add(expression);
776 return expression;
777 } else { 773 } else {
778 error("Expected primary expression"); 774 error("Expected primary expression");
779 return null; 775 return null;
780 } 776 }
781 } 777 }
782 778
779 InterpolatedExpression parseInterpolatedExpression() {
780 var expression = new InterpolatedExpression(parseHash());
781 interpolatedValues.add(expression);
782 return expression;
783 }
784
783 /** 785 /**
784 * CoverParenthesizedExpressionAndArrowParameterList[Yield] : 786 * CoverParenthesizedExpressionAndArrowParameterList[Yield] :
785 * ( Expression ) 787 * ( Expression )
786 * ( ) 788 * ( )
787 * ( ... BindingIdentifier ) 789 * ( ... BindingIdentifier )
788 * ( Expression , ... BindingIdentifier ) 790 * ( Expression , ... BindingIdentifier )
789 */ 791 */
790 Expression parseExpressionOrArrowFunction() { 792 Expression parseExpressionOrArrowFunction() {
791 if (acceptCategory(RPAREN)) { 793 if (acceptCategory(RPAREN)) {
792 expectCategory(ARROW); 794 expectCategory(ARROW);
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 * - method names: `#() { ... }` 1469 * - method names: `#() { ... }`
1468 * - property names: `#: ...` 1470 * - property names: `#: ...`
1469 * - entire methods: `#` 1471 * - entire methods: `#`
1470 */ 1472 */
1471 Property parseMethodOrProperty({bool onlyMethods: false}) { 1473 Property parseMethodOrProperty({bool onlyMethods: false}) {
1472 bool isStatic = acceptString('static'); 1474 bool isStatic = acceptString('static');
1473 1475
1474 bool isGetter = false; 1476 bool isGetter = false;
1475 bool isSetter = false; 1477 bool isSetter = false;
1476 Expression name = null; 1478 Expression name = null;
1479 bool propertyNameIsIdentifier = lastCategory == ALPHA;
1477 if (acceptCategory(HASH)) { 1480 if (acceptCategory(HASH)) {
1478 if (lastCategory != LPAREN && (onlyMethods || lastCategory != COLON)) { 1481 if (lastCategory != LPAREN && (onlyMethods || lastCategory != COLON)) {
1479 // Interpolated method 1482 // Interpolated method
1480 var member = new InterpolatedMethod(parseHash()); 1483 var member = new InterpolatedMethod(parseHash());
1481 interpolatedValues.add(member); 1484 interpolatedValues.add(member);
1482 return member; 1485 return member;
1483 } 1486 }
1484 var interpolated = new InterpolatedExpression(parseHash()); 1487 name = parseInterpolatedExpression();
1485 interpolatedValues.add(interpolated);
1486 name = interpolated;
1487 } else { 1488 } else {
1488 name = parsePropertyName(); 1489 name = parsePropertyName();
1489 } 1490 }
1490 1491
1491 // Allow get or set to be followed by another property name. 1492 // Allow get or set to be followed by another property name.
1492 if (name is PropertyName && 1493 if (propertyNameIsIdentifier &&
1493 (lastCategory == ALPHA || lastCategory == HASH)) { 1494 (lastCategory == ALPHA || lastCategory == HASH)) {
1494 PropertyName p = name; 1495 LiteralString p = name;
1495 isGetter = p.name == 'get'; 1496 isGetter = p.value == '"get"';
1496 isSetter = p.name == 'set'; 1497 isSetter = p.value == '"set"';
1497 if (isGetter || isSetter) { 1498 if (isGetter || isSetter) {
1498 name = parsePropertyName(); 1499 name = parsePropertyName();
1499 } 1500 }
1500 } 1501 }
1501 1502
1502 if (!onlyMethods && acceptCategory(COLON)) { 1503 if (!onlyMethods && acceptCategory(COLON)) {
1503 Expression value = parseAssignment(); 1504 Expression value = parseAssignment();
1504 return new Property(name, value); 1505 return new Property(name, value);
1505 } else { 1506 } else {
1506 var fun = parseFun(); 1507 var fun = parseFun();
1507 return new Method(name, fun, 1508 return new Method(name, fun,
1508 isGetter: isGetter, isSetter: isSetter, isStatic: isStatic); 1509 isGetter: isGetter, isSetter: isSetter, isStatic: isStatic);
1509 } 1510 }
1510 } 1511 }
1511 1512
1512 Expression parsePropertyName() { 1513 Expression parsePropertyName() {
1513 String identifier = lastToken; 1514 String identifier = lastToken;
1514 if (acceptCategory(ALPHA)) { 1515 if (acceptCategory(STRING)) {
1515 return new PropertyName(identifier);
1516 } else if (acceptCategory(STRING)) {
1517 return new LiteralString(identifier); 1516 return new LiteralString(identifier);
1518 } else if (acceptCategory(SYMBOL)) { 1517 } else if (acceptCategory(ALPHA) || acceptCategory(SYMBOL)) {
1519 // e.g. void 1518 // ALPHA or a SYMBOL, e.g. void
1520 return new LiteralString('"$identifier"'); 1519 return new LiteralString('"$identifier"');
1521 } else if (acceptCategory(LSQUARE)) { 1520 } else if (acceptCategory(LSQUARE)) {
1522 var expr = parseAssignment(); 1521 var expr = parseAssignment();
1523 expectCategory(RSQUARE); 1522 expectCategory(RSQUARE);
1524 return expr; 1523 return expr;
1525 } else if (acceptCategory(HASH)) { 1524 } else if (acceptCategory(HASH)) {
1526 var member = new InterpolatedPropertyName(parseHash()); 1525 return parseInterpolatedExpression();
1527 interpolatedValues.add(member);
1528 return member;
1529 } else { 1526 } else {
1530 error('Expected property name'); 1527 error('Expected property name');
1531 return null; 1528 return null;
1532 } 1529 }
1533 } 1530 }
1534 } 1531 }
OLDNEW
« no previous file with comments | « lib/src/codegen/js_codegen.dart ('k') | lib/src/js/nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698