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

Unified Diff: compiler/java/com/google/dart/compiler/parser/DartParser.java

Issue 10545131: Issue 3531. Don't allow using built-in identifier as import prefix (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 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 side-by-side diff with in-line comments
Download patch
Index: compiler/java/com/google/dart/compiler/parser/DartParser.java
diff --git a/compiler/java/com/google/dart/compiler/parser/DartParser.java b/compiler/java/com/google/dart/compiler/parser/DartParser.java
index 50660fa0921f189a6a0e8626a60920b48e2e1cfd..96293a0bc0d54dadddbc7d3b38c047d1e6eb4ed1 100644
--- a/compiler/java/com/google/dart/compiler/parser/DartParser.java
+++ b/compiler/java/com/google/dart/compiler/parser/DartParser.java
@@ -130,12 +130,12 @@ public class DartParser extends CompletionHooksParserBase {
// Pseudo-keywords that should also be valid identifiers.
private static final String ABSTRACT_KEYWORD = "abstract";
+ private static final String AS_KEYWORD = "as";
private static final String ASSERT_KEYWORD = "assert";
private static final String CALL_KEYWORD = "call";
private static final String DYNAMIC_KEYWORD = "Dynamic";
private static final String EQUALS_KEYWORD = "equals";
- private static final String EXTENDS_KEYWORD = "extends";
- private static final String FACTORY_KEYWORD = "factory"; // TODO(zundel): remove
+ private static final String FACTORY_KEYWORD = "factory";
private static final String GETTER_KEYWORD = "get";
private static final String IMPLEMENTS_KEYWORD = "implements";
private static final String INTERFACE_KEYWORD = "interface";
@@ -150,24 +150,52 @@ public class DartParser extends CompletionHooksParserBase {
public static final String[] PSEUDO_KEYWORDS = {
ABSTRACT_KEYWORD,
+ AS_KEYWORD,
ASSERT_KEYWORD,
- CALL_KEYWORD,
DYNAMIC_KEYWORD,
EQUALS_KEYWORD,
- EXTENDS_KEYWORD,
FACTORY_KEYWORD,
GETTER_KEYWORD,
IMPLEMENTS_KEYWORD,
INTERFACE_KEYWORD,
NEGATE_KEYWORD,
- NATIVE_KEYWORD,
OPERATOR_KEYWORD,
- PREFIX_KEYWORD,
SETTER_KEYWORD,
STATIC_KEYWORD,
TYPEDEF_KEYWORD
};
public static final Set<String> PSEUDO_KEYWORDS_SET = ImmutableSet.copyOf(PSEUDO_KEYWORDS);
+
+ public static final String[] RESERVED_WORDS = {
+ "break",
+ "case",
+ "catch",
+ "class",
+ "const",
+ "continue",
+ "default",
+ "do",
+ "else",
+ "extends",
+ "false",
Brian Wilkerson 2012/06/12 15:20:02 Missing "final".
scheglov 2012/06/12 18:04:22 Done.
+ "finally",
+ "for",
+ "if",
+ "in",
+ "is",
+ "new",
+ "null",
+ "return",
+ "super",
+ "switch",
+ "this",
+ "throw",
+ "true",
+ "try",
+ "var",
+ "void",
+ "while"};
+ public static final Set<String> RESERVED_WORDS_SET = ImmutableSet.copyOf(RESERVED_WORDS);
public DartParser(Source source,
String sourceCode,
@@ -554,8 +582,8 @@ public class DartParser extends CompletionHooksParserBase {
// Try to parse bound.
DartTypeNode bound = null;
if (peek(0) != Token.EOS && peek(0) != Token.COMMA && peek(0) != Token.GT) {
- if (optionalPseudoKeyword(EXTENDS_KEYWORD)) {
- // OK, this is EXTENDS_KEYWORD, parse type.
+ if (optional(Token.EXTENDS)) {
+ // OK, this is EXTENDS, parse type.
bound = parseTypeAnnotation();
} else if (looksLikeTopLevelKeyword()) {
return done(new DartTypeParameter(name, bound));
@@ -645,11 +673,11 @@ public class DartParser extends CompletionHooksParserBase {
DartTypeNode superType = null;
List<DartTypeNode> interfaces = null;
if (isParsingInterface) {
- if (optionalPseudoKeyword(EXTENDS_KEYWORD)) {
+ if (optional(Token.EXTENDS)) {
interfaces = parseTypeAnnotationList();
}
} else {
- if (optionalPseudoKeyword(EXTENDS_KEYWORD)) {
+ if (optional(Token.EXTENDS)) {
superType = parseTypeAnnotation();
}
if (optionalPseudoKeyword(IMPLEMENTS_KEYWORD)) {
@@ -792,6 +820,7 @@ public class DartParser extends CompletionHooksParserBase {
nestingLevel -= 2;
break;
case COMMA:
+ case EXTENDS:
case IDENTIFIER:
break;
default:

Powered by Google App Engine
This is Rietveld 408576698