diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 61cf701eb95..1f50ace2cf1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -17706,9 +17706,11 @@ namespace ts { } function checkGrammarModuleElementContext(node: Statement, errorMessage: DiagnosticMessage): boolean { - if (node.parent.kind !== SyntaxKind.SourceFile && node.parent.kind !== SyntaxKind.ModuleBlock && node.parent.kind !== SyntaxKind.ModuleDeclaration) { - return grammarErrorOnFirstToken(node, errorMessage); + const isInAppropriateContext = node.parent.kind === SyntaxKind.SourceFile || node.parent.kind === SyntaxKind.ModuleBlock || node.parent.kind === SyntaxKind.ModuleDeclaration; + if (!isInAppropriateContext) { + grammarErrorOnFirstToken(node, errorMessage); } + return !isInAppropriateContext; } function checkExportSpecifier(node: ExportSpecifier) { @@ -17749,7 +17751,7 @@ namespace ts { checkExpressionCached(node.expression); } - checkExternalModuleExports(container); + checkExternalModuleExports(container); if (node.isExportEquals && !isInAmbientContext(node)) { if (modulekind === ModuleKind.ES6) { diff --git a/tests/baselines/reference/exportInFunction.errors.txt b/tests/baselines/reference/exportInFunction.errors.txt new file mode 100644 index 00000000000..cfd005952f9 --- /dev/null +++ b/tests/baselines/reference/exportInFunction.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/exportInFunction.ts(3,1): error TS1005: '}' expected. + + +==== tests/cases/compiler/exportInFunction.ts (1 errors) ==== + function f() { + export = 0; + + +!!! error TS1005: '}' expected. \ No newline at end of file diff --git a/tests/baselines/reference/exportInFunction.js b/tests/baselines/reference/exportInFunction.js new file mode 100644 index 00000000000..9e1db163d81 --- /dev/null +++ b/tests/baselines/reference/exportInFunction.js @@ -0,0 +1,9 @@ +//// [exportInFunction.ts] +function f() { + export = 0; + + +//// [exportInFunction.js] +function f() { + export = 0; +} diff --git a/tests/cases/compiler/exportInFunction.ts b/tests/cases/compiler/exportInFunction.ts new file mode 100644 index 00000000000..9bb0c5dcd0f --- /dev/null +++ b/tests/cases/compiler/exportInFunction.ts @@ -0,0 +1,2 @@ +function f() { + export = 0;