Skip to content

fix(61867): fix find-all-refs for constructors involving string literals #61869

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

a-tarasyuk
Copy link
Contributor

Fixes #61867


Fix regression in fix-all-refs for constructors with string literals by moving the length check after node kind checks

@github-project-automation github-project-automation bot moved this to Not started in PR Backlog Jun 14, 2025
@typescript-bot typescript-bot added the For Uncommitted Bug PR for untriaged, rejected, closed or missing bug label Jun 14, 2025
isLiteralNameOfPropertyDeclarationOrIndexAccess(str) ||
isNameOfModuleDeclaration(node) ||
isExpressionOfExternalModuleImportEqualsDeclaration(node) ||
(isCallExpression(node.parent) && isBindableObjectDefinePropertyCall(node.parent) && node.parent.arguments[1] === node) ||
isImportOrExportSpecifier(node.parent)
);
) && str.text.length === searchSymbolName.length;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this might fix the issue at hand but this check could be seen as (minor) perf optimization - it should be cheaper to perform this length-based check first

the true issue here, I feel, is that something that claims to be a StringLiteral... doesn't behave like one. A StringLiteralLike must have .text - it's an invariant that is broken here.

I feel like this is closer to what the proper fix should look like: Andarist@38551b1

But I'd fully expect it to need some adjustments. What I don't feel confident enough:

  • should this be somehow also passed to object allocators?
  • maybe the text assignment should be handled by addSyntheticNodes as that's a function that deals with the scanner
  • and maybe then a custom/extra StringLiteralObject wouldn't be needed? One could cast and assign .text to the created TokenObject
  • obviously the proposed fix might require some extra other properties to be set - what about singleQuote? Is it safely omittable?
  • it feels like string literals wouldn't necessarily be the only token kinds that might be broken right now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
Status: Not started
Development

Successfully merging this pull request may close these issues.

TypeError: Cannot read properties of undefined (reading 'length')
3 participants