Microsoft/TypeScript

getLeadingCommentRanges misses comment in call expression

Open

#54.906 aperta il 7 lug 2023

Vedi su GitHub
 (0 commenti) (3 reazioni) (0 assegnatari)TypeScript (6726 fork)batch import
Domain: ParserHelp WantedPossible Improvement

Metriche repository

Star
 (48.455 star)
Metriche merge PR
 (Merge medio 6g 17h) (9 PR mergiate in 30 g)

Descrizione

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 } ]

Guida contributor