From 714ea8e524ff1129d94679df78f7790534222980 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Mon, 2 May 2022 11:18:00 -0700 Subject: [PATCH] Keep Disallowing return in ambient locations --- src/compiler/checker.ts | 2 +- tests/baselines/reference/ambientWithStatements.errors.txt | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 07faeb90663..0be4b468746 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -38913,7 +38913,7 @@ namespace ts { } if (!container) { - if (!!getSourceFileOfNode(node).externalModuleIndicator) { + if (!!getSourceFileOfNode(node).externalModuleIndicator || node.flags & NodeFlags.Ambient) { grammarErrorOnFirstToken(node, Diagnostics.A_return_statement_can_only_be_used_within_a_function_body); } return; diff --git a/tests/baselines/reference/ambientWithStatements.errors.txt b/tests/baselines/reference/ambientWithStatements.errors.txt index e6d3bce40d4..c7cb28a0f46 100644 --- a/tests/baselines/reference/ambientWithStatements.errors.txt +++ b/tests/baselines/reference/ambientWithStatements.errors.txt @@ -1,9 +1,10 @@ tests/cases/compiler/ambientWithStatements.ts(2,5): error TS1036: Statements are not allowed in ambient contexts. tests/cases/compiler/ambientWithStatements.ts(3,5): error TS1104: A 'continue' statement can only be used within an enclosing iteration statement. +tests/cases/compiler/ambientWithStatements.ts(11,5): error TS1108: A 'return' statement can only be used within a function body. tests/cases/compiler/ambientWithStatements.ts(25,5): error TS2410: The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'. -==== tests/cases/compiler/ambientWithStatements.ts (3 errors) ==== +==== tests/cases/compiler/ambientWithStatements.ts (4 errors) ==== declare module M { break; ~~~~~ @@ -19,6 +20,8 @@ tests/cases/compiler/ambientWithStatements.ts(25,5): error TS2410: The 'with' st 1; L: var y; return; + ~~~~~~ +!!! error TS1108: A 'return' statement can only be used within a function body. switch (x) { case 1: break;