Add comments
This commit is contained in:
parent
d03fca2326
commit
380918c497
2 changed files with 11 additions and 6 deletions
|
@ -11119,6 +11119,7 @@ module ts {
|
||||||
? Diagnostics.An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file
|
? Diagnostics.An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file
|
||||||
: Diagnostics.A_namespace_declaration_is_only_allowed_in_a_namespace_or_module;
|
: Diagnostics.A_namespace_declaration_is_only_allowed_in_a_namespace_or_module;
|
||||||
if (checkGrammarModuleElementContext(node, contextErrorMessage)) {
|
if (checkGrammarModuleElementContext(node, contextErrorMessage)) {
|
||||||
|
// If we hit a module declaration in an illegal context, just bail out to avoid cascading errors.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11235,6 +11236,7 @@ module ts {
|
||||||
|
|
||||||
function checkImportDeclaration(node: ImportDeclaration) {
|
function checkImportDeclaration(node: ImportDeclaration) {
|
||||||
if (checkGrammarModuleElementContext(node, Diagnostics.An_import_declaration_can_only_be_used_in_a_namespace_or_module)) {
|
if (checkGrammarModuleElementContext(node, Diagnostics.An_import_declaration_can_only_be_used_in_a_namespace_or_module)) {
|
||||||
|
// If we hit an import declaration in an illegal context, just bail out to avoid cascading errors.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & NodeFlags.Modifier)) {
|
if (!checkGrammarImportDeclarationNameInStrictMode(node) && !checkGrammarDecorators(node) && !checkGrammarModifiers(node) && (node.flags & NodeFlags.Modifier)) {
|
||||||
|
@ -11260,6 +11262,7 @@ module ts {
|
||||||
|
|
||||||
function checkImportEqualsDeclaration(node: ImportEqualsDeclaration) {
|
function checkImportEqualsDeclaration(node: ImportEqualsDeclaration) {
|
||||||
if (checkGrammarModuleElementContext(node, Diagnostics.An_import_declaration_can_only_be_used_in_a_namespace_or_module)) {
|
if (checkGrammarModuleElementContext(node, Diagnostics.An_import_declaration_can_only_be_used_in_a_namespace_or_module)) {
|
||||||
|
// If we hit an import declaration in an illegal context, just bail out to avoid cascading errors.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11295,6 +11298,7 @@ module ts {
|
||||||
|
|
||||||
function checkExportDeclaration(node: ExportDeclaration) {
|
function checkExportDeclaration(node: ExportDeclaration) {
|
||||||
if (checkGrammarModuleElementContext(node, Diagnostics.An_export_declaration_can_only_be_used_in_a_module)) {
|
if (checkGrammarModuleElementContext(node, Diagnostics.An_export_declaration_can_only_be_used_in_a_module)) {
|
||||||
|
// If we hit an export in an illegal context, just bail out to avoid cascading errors.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11338,6 +11342,7 @@ module ts {
|
||||||
|
|
||||||
function checkExportAssignment(node: ExportAssignment) {
|
function checkExportAssignment(node: ExportAssignment) {
|
||||||
if (checkGrammarModuleElementContext(node, Diagnostics.An_export_assignment_can_only_be_used_in_a_module)) {
|
if (checkGrammarModuleElementContext(node, Diagnostics.An_export_assignment_can_only_be_used_in_a_module)) {
|
||||||
|
// If we hit an export assignment in an illegal context, just bail out to avoid cascading errors.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1770,25 +1770,25 @@ module ts {
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseRightSideOfDot(allowIdentifierNames: boolean): Identifier {
|
function parseRightSideOfDot(allowIdentifierNames: boolean): Identifier {
|
||||||
// Technically a keyword is valid here as all keywords are identifier names.
|
// Technically a keyword is valid here as all identifiers and keywords are identifier names.
|
||||||
// However, often we'll encounter this in error situations when the keyword
|
// However, often we'll encounter this in error situations when the identifier or keyword
|
||||||
// is actually starting another valid construct.
|
// is actually starting another valid construct.
|
||||||
//
|
//
|
||||||
// So, we check for the following specific case:
|
// So, we check for the following specific case:
|
||||||
//
|
//
|
||||||
// name.
|
// name.
|
||||||
// keyword identifierNameOrKeyword
|
// identifierOrKeyword identifierNameOrKeyword
|
||||||
//
|
//
|
||||||
// Note: the newlines are important here. For example, if that above code
|
// Note: the newlines are important here. For example, if that above code
|
||||||
// were rewritten into:
|
// were rewritten into:
|
||||||
//
|
//
|
||||||
// name.keyword
|
// name.identifierOrKeyword
|
||||||
// identifierNameOrKeyword
|
// identifierNameOrKeyword
|
||||||
//
|
//
|
||||||
// Then we would consider it valid. That's because ASI would take effect and
|
// Then we would consider it valid. That's because ASI would take effect and
|
||||||
// the code would be implicitly: "name.keyword; identifierNameOrKeyword".
|
// the code would be implicitly: "name.identifierOrKeyword; identifierNameOrKeyword".
|
||||||
// In the first case though, ASI will not take effect because there is not a
|
// In the first case though, ASI will not take effect because there is not a
|
||||||
// line terminator after the keyword.
|
// line terminator after the identifier or keyword.
|
||||||
if (scanner.hasPrecedingLineBreak() && isIdentifierOrKeyword()) {
|
if (scanner.hasPrecedingLineBreak() && isIdentifierOrKeyword()) {
|
||||||
let matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine);
|
let matchesPattern = lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue