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

Unified 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/js/builder.dart
diff --git a/lib/src/js/builder.dart b/lib/src/js/builder.dart
index 239bb91a0871aaf8b8eae2937551ae6ec3a66326..a69116981c53ee198636b469aa57e5e1daba4465 100644
--- a/lib/src/js/builder.dart
+++ b/lib/src/js/builder.dart
@@ -769,17 +769,19 @@ class MiniJsParser {
Expression expression = new RegExpLiteral(regexp + flags);
return expression;
} else if (acceptCategory(HASH)) {
- var nameOrPosition = parseHash();
- InterpolatedExpression expression =
- new InterpolatedExpression(nameOrPosition);
- interpolatedValues.add(expression);
- return expression;
+ return parseInterpolatedExpression();
} else {
error("Expected primary expression");
return null;
}
}
+ InterpolatedExpression parseInterpolatedExpression() {
+ var expression = new InterpolatedExpression(parseHash());
+ interpolatedValues.add(expression);
+ return expression;
+ }
+
/**
* CoverParenthesizedExpressionAndArrowParameterList[Yield] :
* ( Expression )
@@ -1474,6 +1476,7 @@ class MiniJsParser {
bool isGetter = false;
bool isSetter = false;
Expression name = null;
+ bool propertyNameIsIdentifier = lastCategory == ALPHA;
if (acceptCategory(HASH)) {
if (lastCategory != LPAREN && (onlyMethods || lastCategory != COLON)) {
// Interpolated method
@@ -1481,19 +1484,17 @@ class MiniJsParser {
interpolatedValues.add(member);
return member;
}
- var interpolated = new InterpolatedExpression(parseHash());
- interpolatedValues.add(interpolated);
- name = interpolated;
+ name = parseInterpolatedExpression();
} else {
name = parsePropertyName();
}
// Allow get or set to be followed by another property name.
- if (name is PropertyName &&
+ if (propertyNameIsIdentifier &&
(lastCategory == ALPHA || lastCategory == HASH)) {
- PropertyName p = name;
- isGetter = p.name == 'get';
- isSetter = p.name == 'set';
+ LiteralString p = name;
+ isGetter = p.value == '"get"';
+ isSetter = p.value == '"set"';
if (isGetter || isSetter) {
name = parsePropertyName();
}
@@ -1511,21 +1512,17 @@ class MiniJsParser {
Expression parsePropertyName() {
String identifier = lastToken;
- if (acceptCategory(ALPHA)) {
- return new PropertyName(identifier);
- } else if (acceptCategory(STRING)) {
+ if (acceptCategory(STRING)) {
return new LiteralString(identifier);
- } else if (acceptCategory(SYMBOL)) {
- // e.g. void
+ } else if (acceptCategory(ALPHA) || acceptCategory(SYMBOL)) {
+ // ALPHA or a SYMBOL, e.g. void
return new LiteralString('"$identifier"');
} else if (acceptCategory(LSQUARE)) {
var expr = parseAssignment();
expectCategory(RSQUARE);
return expr;
} else if (acceptCategory(HASH)) {
- var member = new InterpolatedPropertyName(parseHash());
- interpolatedValues.add(member);
- return member;
+ return parseInterpolatedExpression();
} else {
error('Expected property name');
return null;
« 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