From 58da6fbd7206406fdfdb25d99dab8a729fb13c4a Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 14 Jun 2016 15:21:46 -0700 Subject: [PATCH] Prevent renaming `this` parameters --- src/services/services.ts | 2 +- tests/cases/fourslash/noRenameOfThisParameter.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/noRenameOfThisParameter.ts diff --git a/src/services/services.ts b/src/services/services.ts index 8bf6a572ec754..f20bb69661d49 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -7999,7 +7999,7 @@ namespace ts { // Can only rename an identifier. if (node) { - if (node.kind === SyntaxKind.Identifier || + if ((node.kind === SyntaxKind.Identifier && (node as Identifier).originalKeywordKind !== SyntaxKind.ThisKeyword) || node.kind === SyntaxKind.StringLiteral || isLiteralNameOfPropertyDeclarationOrIndexAccess(node)) { const symbol = typeChecker.getSymbolAtLocation(node); diff --git a/tests/cases/fourslash/noRenameOfThisParameter.ts b/tests/cases/fourslash/noRenameOfThisParameter.ts new file mode 100644 index 0000000000000..7d0ad0a694cd8 --- /dev/null +++ b/tests/cases/fourslash/noRenameOfThisParameter.ts @@ -0,0 +1,6 @@ +/// +////function f(this/**/: string, x: number) { +//// return this.length + x; +////} +goTo.marker(); +verify.renameInfoFailed();