Index: pkg/front_end/lib/src/fasta/parser/identifier_context.dart |
diff --git a/pkg/front_end/lib/src/fasta/parser/identifier_context.dart b/pkg/front_end/lib/src/fasta/parser/identifier_context.dart |
index 6b72d0ff3630cc0ca8bb0bad7e5d7ce623c2574e..17d04f4a202954f4feceed42da43c0117e517ac4 100644 |
--- a/pkg/front_end/lib/src/fasta/parser/identifier_context.dart |
+++ b/pkg/front_end/lib/src/fasta/parser/identifier_context.dart |
@@ -11,8 +11,10 @@ |
class IdentifierContext { |
/// Identifier is being declared as the name of an import prefix (i.e. `Foo` |
/// in `import "..." as Foo;`) |
- static const importPrefixDeclaration = |
- const IdentifierContext._('importPrefixDeclaration', inDeclaration: true); |
+ static const importPrefixDeclaration = const IdentifierContext._( |
+ 'importPrefixDeclaration', |
+ inDeclaration: true, |
+ isBuiltInIdentifierAllowed: false); |
/// Identifier is the start of a dotted name in a conditional import or |
/// export. |
@@ -44,8 +46,10 @@ class IdentifierContext { |
isContinuation: true); |
/// Identifier is the name being declared by a typedef declaration. |
- static const typedefDeclaration = |
- const IdentifierContext._('typedefDeclaration', inDeclaration: true); |
+ static const typedefDeclaration = const IdentifierContext._( |
+ 'typedefDeclaration', |
+ inDeclaration: true, |
+ isBuiltInIdentifierAllowed: false); |
/// Identifier is a field initializer in a formal parameter list (i.e. it |
/// appears directly after `this.`). |
@@ -83,8 +87,8 @@ class IdentifierContext { |
isContinuation: true); |
/// Identifier is the type name being declared by an enum declaration. |
- static const enumDeclaration = |
- const IdentifierContext._('enumDeclaration', inDeclaration: true); |
+ static const enumDeclaration = const IdentifierContext._('enumDeclaration', |
+ inDeclaration: true, isBuiltInIdentifierAllowed: false); |
/// Identifier is an enumerated value name being declared by an enum |
/// declaration. |
@@ -93,27 +97,32 @@ class IdentifierContext { |
/// Identifier is the name being declared by a named mixin declaration (e.g. |
/// `Foo` in `class Foo = X with Y;`). |
- static const namedMixinDeclaration = |
- const IdentifierContext._('namedMixinDeclaration', inDeclaration: true); |
+ static const namedMixinDeclaration = const IdentifierContext._( |
+ 'namedMixinDeclaration', |
+ inDeclaration: true, |
+ isBuiltInIdentifierAllowed: false); |
/// Identifier is the name being declared by a class declaration. |
- static const classDeclaration = |
- const IdentifierContext._('classDeclaration', inDeclaration: true); |
+ static const classDeclaration = const IdentifierContext._('classDeclaration', |
+ inDeclaration: true, isBuiltInIdentifierAllowed: false); |
/// Identifier is the name of a type variable being declared (e.g. `Foo` in |
/// `class C<Foo extends num> {}`). |
- static const typeVariableDeclaration = |
- const IdentifierContext._('typeVariableDeclaration', inDeclaration: true); |
+ static const typeVariableDeclaration = const IdentifierContext._( |
+ 'typeVariableDeclaration', |
+ inDeclaration: true, |
+ isBuiltInIdentifierAllowed: false); |
/// Identifier is the start of a reference to a type declared elsewhere. |
- static const typeReference = |
- const IdentifierContext._('typeReference', isScopeReference: true); |
+ static const typeReference = const IdentifierContext._('typeReference', |
+ isScopeReference: true, isBuiltInIdentifierAllowed: false); |
/// Identifier is part of a reference to a type declared elsewhere, but it's |
/// not the first identifier of the reference. |
static const typeReferenceContinuation = const IdentifierContext._( |
'typeReferenceContinuation', |
- isContinuation: true); |
+ isContinuation: true, |
+ isBuiltInIdentifierAllowed: false); |
/// Identifier is a name being declared by a top level variable declaration. |
static const topLevelVariableDeclaration = const IdentifierContext._( |
@@ -262,12 +271,16 @@ class IdentifierContext { |
/// Indicates whether the identifier should be looked up in the current scope. |
final bool isScopeReference; |
+ /// Indicates whether built-in identifiers are allowed in this context. |
+ final bool isBuiltInIdentifierAllowed; |
+ |
const IdentifierContext._(this._name, |
{this.inDeclaration: false, |
this.inLibraryOrPartOfDeclaration: false, |
this.inSymbol: false, |
this.isContinuation: false, |
- this.isScopeReference: false}); |
+ this.isScopeReference: false, |
+ this.isBuiltInIdentifierAllowed: true}); |
String toString() => _name; |
} |