From dba57d4077ea98437da6de71fe55b8c55206694e Mon Sep 17 00:00:00 2001 From: Jan Kuehle Date: Wed, 10 Aug 2022 15:01:25 +0000 Subject: [PATCH] Fix deprecatedCompat create/updateConstructorDeclaration functions --- .../4.8/mergeDecoratorsAndModifiers.ts | 4 ++-- src/testRunner/unittests/factory.ts | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts b/src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts index 908cdf5c275a5..4d4ed4aa02676 100644 --- a/src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts +++ b/src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts @@ -535,7 +535,7 @@ namespace ts { (decorators === undefined || !some(decorators, isModifier)) && (modifiers === undefined || !some(modifiers, isParameter)) && (parameters === undefined || isArray(parameters)) && - (body === undefined || !isBlock(body)), + (body === undefined || isBlock(body)), }) .deprecate({ 1: DISALLOW_DECORATORS @@ -563,7 +563,7 @@ namespace ts { (decorators === undefined || !some(decorators, isModifier)) && (modifiers === undefined || !some(modifiers, isParameter)) && (parameters === undefined || isArray(parameters)) && - (body === undefined || !isBlock(body)), + (body === undefined || isBlock(body)), }) .deprecate({ 1: DISALLOW_DECORATORS diff --git a/src/testRunner/unittests/factory.ts b/src/testRunner/unittests/factory.ts index 9bf9feda8744d..0c594c511fd5d 100644 --- a/src/testRunner/unittests/factory.ts +++ b/src/testRunner/unittests/factory.ts @@ -81,5 +81,28 @@ namespace ts { checkRhs(SyntaxKind.QuestionQuestionEqualsToken, /*expectParens*/ false); }); }); + + describe("deprecatedCompat/mergeDecoratorsAndModifiers", () => { + it("supports deprecated createConstructorDeclaration/updateConstructorDeclaration functions", () => { + const body = factory.createBlock([]); + const ctor = factory.createConstructorDeclaration( + /*decorators*/ undefined, + /*modifiers*/ undefined, + /*parameters*/ [], + /*body*/ body, + ); + + const newBody = factory.createBlock([]); + const updatedCtor = factory.updateConstructorDeclaration( + ctor, + /*decorators*/ ctor.decorators, + /*modifiers*/ ctor.modifiers?.filter(isModifier), + /*parameters*/ ctor.parameters, + /*body*/ newBody, + ); + + assert.strictEqual(updatedCtor.body, newBody); + }); + }); }); }