-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
use identifierToKeywordKind when available (TypeScript 5+) #156
base: master
Are you sure you want to change the base?
use identifierToKeywordKind when available (TypeScript 5+) #156
Conversation
Here's a work-around until it's fixed: Install patch-package, add diff --git a/node_modules/tsutils/util/usage.js b/node_modules/tsutils/util/usage.js
index fa24e64..9818b0a 100644
--- a/node_modules/tsutils/util/usage.js
+++ b/node_modules/tsutils/util/usage.js
@@ -25,7 +25,7 @@ function getUsageDomain(node) {
const parent = node.parent;
switch (parent.kind) {
case ts.SyntaxKind.TypeReference:
- return node.originalKeywordKind !== ts.SyntaxKind.ConstKeyword ? 2 /* Type */ : undefined;
+ return ts.identifierToKeywordKind(node) !== ts.SyntaxKind.ConstKeyword ? 2 /* Type */ : undefined;
case ts.SyntaxKind.ExpressionWithTypeArguments:
return parent.parent.token === ts.SyntaxKind.ImplementsKeyword ||
parent.parent.parent.kind === ts.SyntaxKind.InterfaceDeclaration
@@ -116,7 +116,7 @@ function getDeclarationDomain(node) {
case ts.SyntaxKind.ModuleDeclaration:
return 1 /* Namespace */;
case ts.SyntaxKind.Parameter:
- if (node.parent.parent.kind === ts.SyntaxKind.IndexSignature || node.originalKeywordKind === ts.SyntaxKind.ThisKeyword)
+ if (node.parent.parent.kind === ts.SyntaxKind.IndexSignature || ts.identifierToKeywordKind(node) === ts.SyntaxKind.ThisKeyword)
return;
// falls through
case ts.SyntaxKind.BindingElement:
@@ -525,7 +525,7 @@ class UsageWalker {
case ts.SyntaxKind.Parameter:
if (node.parent.kind !== ts.SyntaxKind.IndexSignature &&
(node.name.kind !== ts.SyntaxKind.Identifier ||
- node.name.originalKeywordKind !== ts.SyntaxKind.ThisKeyword))
+ ts.identifierToKeywordKind(node.name) !== ts.SyntaxKind.ThisKeyword))
this._handleBindingName(node.name, false, false);
break;
case ts.SyntaxKind.EnumMember:
diff --git a/node_modules/tsutils/util/util.js b/node_modules/tsutils/util/util.js
index 0109fea..81aa517 100644
--- a/node_modules/tsutils/util/util.js
+++ b/node_modules/tsutils/util/util.js
@@ -37,7 +37,7 @@ function isKeywordKind(kind) {
}
exports.isKeywordKind = isKeywordKind;
function isThisParameter(parameter) {
- return parameter.name.kind === ts.SyntaxKind.Identifier && parameter.name.originalKeywordKind === ts.SyntaxKind.ThisKeyword;
+ return parameter.name.kind === ts.SyntaxKind.Identifier && ts.identifierToKeywordKind(parameter.name) === ts.SyntaxKind.ThisKeyword;
}
exports.isThisParameter = isThisParameter;
function getModifier(node, kind) { |
Good work! @pmcelhaney For the hotfix I had to use "postinstall" instead of "post-install". Other than that: awesome! @ajafff Can this be merged? It's preventing many people to upgrade to TS 5.2. Thanks :-) |
ca2059c
to
1c27356
Compare
…eywordKind is deprecated
1c27356
to
8bd2b8b
Compare
this |
another solution would be that @pmcelhaney publish a fixed version on npm like "@pmcelhaney/tsutils" and then make a PR on the needed projects |
This project is dead and you are probably not affected. Short summary:
|
Thanks @tux21b for these details, so the issue some of us have here is linked to the fact that |
As of TypeScript 5.0,
node.originalKeywordKind
is deprecated.As of TypeScript 5.2, it has been removed.
This fix uses the suggested alternative,
idenifierToKeywordKind(node)
when available. So it should work with TypeScript 5 without sacrificing backwards compatibility.Fixes #155