getLeadingCommentRanges misses comment in call expression

未关闭
#54,906 0 条评论 3 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
typescript
领域
compilers

调研方向

在偏移量 12 处对 console.log(/* hello */ "world") 重现 ts.getLeadingCommentRanges 的问题,然后跟踪 getLeadingCommentRanges 使用的 iterateCommentRanges 路径。当调用为字符串字面量返回预期的注释范围,且不会使相关的前置或后置注释处理出现回归时,工作即完成。

由索引模型根据 Issue 内容生成。

描述

Domain: Parser Help Wanted Possible Improvement

Bug Report

getLeadingCommentRanges misses comments that are in front of arguments passed to a call expression.

Comments being missed is a known issue when comments are within a node between tokens not stored in the tree: https://github.com/Microsoft/TypeScript/wiki/FAQ#why-some-comments-are-not-preserved-in-emitted-javascript-even-when---removecomments-is-not-specified

However that is not the case here and in fact tsc will preserve that particular comment.

Note: here I refer to getLeadingCommentRanges but in reality the bug is present inside of iterateCommentRanges (what getLeadingCommentRanges uses under the hood)

🔎 Search Terms
  • leading, trailing comment undefined
  • getLeadingCommentRanges, getTrailingCommentRanges
  • Call expression, function call, method call
🕗 Version & Regression Information
  • This is the behavior in every version I tried (4.3.5 (the oldest version on ts-ast-viewer.com), 5.1.6, @next (5.2.0-dev.20230706))
⏯ Playground Link

https://ts-ast-viewer.com/#code/MYewdgziA2CmB00QHMAUB6AVAAgBa2iW03WwCIB3EAJ2gBMyBKIA

💻 Code
console.log(/* hello */ "world")

Calling getLeadingCommentRanges on the string literal returns undefined.

🙁 Actual behavior
ts.getLeadingCommentRanges('console.log(/* hello */ "world")', 12)

returns undefined

🙂 Expected behavior
ts.getLeadingCommentRanges('console.log(/* hello */ "world")', 12)

returns [ { kind: 3, start: 12, end: 23, hasTrailingNewLine: false } ]

主要语言
Go
星标
111k
派生
14.4k
平均合并
1 天 19 小时
30 天内合并 PR
117

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/TypeScript 的其他 Issue

查看 microsoft/TypeScript 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。