diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index a0e992098f7..caa62b7ae9e 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -3916,14 +3916,14 @@ module ts { } function parseSourceElement() { - return parseSourceElementOrModuleElement(ModifierContext.SourceElements); + return parseSourceElementOrModuleElement(ModifierContext.SourceElements, /*allowLetAndConstDeclarations*/ false); } function parseModuleElement() { - return parseSourceElementOrModuleElement(ModifierContext.ModuleElements); + return parseSourceElementOrModuleElement(ModifierContext.ModuleElements, /*allowLetAndConstDeclarations*/ true); } - function parseSourceElementOrModuleElement(modifierContext: ModifierContext): Statement { + function parseSourceElementOrModuleElement(modifierContext: ModifierContext, allowLetAndConstDeclarations: boolean): Statement { if (isDeclaration()) { return parseDeclaration(modifierContext); } @@ -3931,7 +3931,7 @@ module ts { var statementStart = scanner.getTokenPos(); var statementFirstTokenLength = scanner.getTextPos() - statementStart; var errorCountBeforeStatement = file.syntacticErrors.length; - var statement = parseStatement(/*allowLetAndConstDeclarations*/ false); + var statement = parseStatement(allowLetAndConstDeclarations); if (inAmbientContext && file.syntacticErrors.length === errorCountBeforeStatement) { grammarErrorAtPos(statementStart, statementFirstTokenLength, Diagnostics.Statements_are_not_allowed_in_ambient_contexts); diff --git a/tests/baselines/reference/letDeclarations-scopes.errors.txt b/tests/baselines/reference/letDeclarations-scopes.errors.txt index df54e0fc3c4..5c89ea98049 100644 --- a/tests/baselines/reference/letDeclarations-scopes.errors.txt +++ b/tests/baselines/reference/letDeclarations-scopes.errors.txt @@ -105,12 +105,12 @@ tests/cases/compiler/letDeclarations-scopes.ts(28,7): error TS2410: All symbols var F2 = () => { let l = 0; - n = l; + n = l; }; var F3 = function () { let l = 0; - n = l; + n = l; }; // modules @@ -120,8 +120,10 @@ tests/cases/compiler/letDeclarations-scopes.ts(28,7): error TS2410: All symbols { let l = false; - var b2: boolean = l; + var b2: boolean = l; } + + lable: let l2 = 0; } // methods @@ -152,10 +154,10 @@ tests/cases/compiler/letDeclarations-scopes.ts(28,7): error TS2410: All symbols var o = { f() { let l = 0; - n = l; + n = l; }, - f2: () => { + f2: () => { let l = 0; - n = l; + n = l; } } \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-scopes.js b/tests/baselines/reference/letDeclarations-scopes.js index 59d42368b6c..fb16a03f569 100644 --- a/tests/baselines/reference/letDeclarations-scopes.js +++ b/tests/baselines/reference/letDeclarations-scopes.js @@ -100,12 +100,12 @@ function F() { var F2 = () => { let l = 0; -n = l; + n = l; }; var F3 = function () { let l = 0; -n = l; + n = l; }; // modules @@ -115,8 +115,10 @@ module m { { let l = false; - var b2: boolean = l; + var b2: boolean = l; } + + lable: let l2 = 0; } // methods @@ -147,11 +149,11 @@ class C { var o = { f() { let l = 0; -n = l; + n = l; }, -f2: () => { + f2: () => { let l = 0; - n = l; + n = l; } } @@ -251,6 +253,7 @@ var m; let l = false; var b2 = l; } + lable: let l2 = 0; })(m || (m = {})); // methods var C = (function () { diff --git a/tests/cases/compiler/letDeclarations-scopes.ts b/tests/cases/compiler/letDeclarations-scopes.ts index 0393f0f295b..93f4ce5b4ed 100644 --- a/tests/cases/compiler/letDeclarations-scopes.ts +++ b/tests/cases/compiler/letDeclarations-scopes.ts @@ -100,12 +100,12 @@ function F() { var F2 = () => { let l = 0; -n = l; + n = l; }; var F3 = function () { let l = 0; -n = l; + n = l; }; // modules @@ -115,8 +115,10 @@ module m { { let l = false; - var b2: boolean = l; + var b2: boolean = l; } + + lable: let l2 = 0; } // methods @@ -147,10 +149,10 @@ class C { var o = { f() { let l = 0; -n = l; + n = l; }, -f2: () => { + f2: () => { let l = 0; - n = l; + n = l; } } \ No newline at end of file