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

Unified Diff: pkg/compiler/lib/src/parser/parser.dart

Issue 1388523002: dart2js: add support for configuration-specific imports. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address comments. Created 5 years, 2 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
Index: pkg/compiler/lib/src/parser/parser.dart
diff --git a/pkg/compiler/lib/src/parser/parser.dart b/pkg/compiler/lib/src/parser/parser.dart
index 6ed2657b74a53e158e607f8e2b38a95ab8db671c..56e82f3be055318d488bcc7cecad745a025a1289 100644
--- a/pkg/compiler/lib/src/parser/parser.dart
+++ b/pkg/compiler/lib/src/parser/parser.dart
@@ -152,12 +152,13 @@ class Parser {
return token;
}
- /// import uri (as identifier)? combinator* ';'
+ /// import uri (if (test) uri)* (as identifier)? combinator* ';'
Token parseImport(Token token) {
Token importKeyword = token;
listener.beginImport(importKeyword);
assert(optional('import', token));
token = parseLiteralStringOrRecoverExpression(token.next);
+ token = parseConditionalUris(token);
Token deferredKeyword;
if (optional('deferred', token)) {
deferredKeyword = token;
@@ -175,12 +176,55 @@ class Parser {
return token;
}
+ /// if (test) uri
+ Token parseConditionalUris(Token token) {
+ listener.beginConditionalUris(token);
+ int count = 0;
+ while (optional('if', token)) {
+ count++;
+ token = parseConditionalUri(token);
+ }
+ listener.endConditionalUris(count);
+ return token;
+ }
+
+ Token parseConditionalUri(Token token) {
+ listener.beginConditionalUri(token);
+ Token ifKeyword = token;
+ token = expect('if', token);
+ token = expect('(', token);
+ token = parseDottedName(token);
+ Token equalitySign;
+ if (optional('==', token)) {
+ equalitySign = token;
+ token = parseLiteralStringOrRecoverExpression(token.next);
+ }
+ token = expect(')', token);
+ token = parseLiteralStringOrRecoverExpression(token);
+ listener.endConditionalUri(ifKeyword, equalitySign);
+ return token;
+ }
+
+ Token parseDottedName(Token token) {
+ listener.beginDottedName(token);
+ Token firstIdentifier = token;
+ token = parseIdentifier(token);
+ int count = 1;
+ while (optional('.', token)) {
+ token = parseIdentifier(token.next);
+ count++;
+ }
+ listener.endDottedName(count, firstIdentifier);
+ return token;
+ }
+
/// export uri combinator* ';'
Johnni Winther 2015/10/13 08:44:29 Update comment.
floitsch 2015/10/13 21:01:44 Done.
Token parseExport(Token token) {
Token exportKeyword = token;
listener.beginExport(exportKeyword);
assert(optional('export', token));
token = parseLiteralStringOrRecoverExpression(token.next);
+ token = parseConditionalUris(token);
token = parseCombinators(token);
Token semicolon = token;
token = expect(';', token);

Powered by Google App Engine
This is Rietveld 408576698