From 632ad0b0de3c79c689a39b05e2a2e956593b0fcc Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Tue, 2 May 2023 14:19:03 -0700 Subject: [PATCH] JS declaration emit uses `this` for method returns (#54062) --- src/compiler/checker.ts | 2 +- tests/baselines/reference/jsFileMethodOverloads2.js | 2 +- tests/baselines/reference/thisPropertyAssignmentInherited.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 404bfdb4a6b..1d35f627acd 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -9123,7 +9123,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { context.enclosingDeclaration = originalDecl || oldEnclosing; const localParams = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); const typeParamDecls = map(localParams, p => typeParameterToDeclaration(p, context)); - const classType = getDeclaredTypeOfClassOrInterface(symbol); + const classType = getTypeWithThisArgument(getDeclaredTypeOfClassOrInterface(symbol)) as InterfaceType; const baseTypes = getBaseTypes(classType); const originalImplements = originalDecl && getEffectiveImplementsTypeNodes(originalDecl); const implementsExpressions = originalImplements && sanitizeJSDocImplements(originalImplements) diff --git a/tests/baselines/reference/jsFileMethodOverloads2.js b/tests/baselines/reference/jsFileMethodOverloads2.js index f1d960b2d0d..e978ddd8ad0 100644 --- a/tests/baselines/reference/jsFileMethodOverloads2.js +++ b/tests/baselines/reference/jsFileMethodOverloads2.js @@ -102,5 +102,5 @@ declare class Example { getTypeName(this: Example): 'number'; getTypeName(this: Example): 'string'; transform(fn: (y: T) => U): U; - transform(): T; + transform(): T; } diff --git a/tests/baselines/reference/thisPropertyAssignmentInherited.js b/tests/baselines/reference/thisPropertyAssignmentInherited.js index 01cd7fc8b67..f59fa8dca64 100644 --- a/tests/baselines/reference/thisPropertyAssignmentInherited.js +++ b/tests/baselines/reference/thisPropertyAssignmentInherited.js @@ -28,7 +28,7 @@ export class Element { * @returns {String} */ get textContent(): string; - cloneNode(): Element; + cloneNode(): this; } export class HTMLElement extends Element { }