microsoft / TypeScript

TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
https://www.typescriptlang.org
Apache License 2.0
98.27k stars 12.21k forks source link

Trivia ownership documentation seems to be incorrect #58332

Open T3sT3ro opened 2 weeks ago

T3sT3ro commented 2 weeks ago

Acknowledgement

Comment

Referencing the #1678 issue and the ast-trivia: trivia ownership in the typescript-book, there seems to be an error in explanation:

in the issue @mhegazy mentions:

one thing that is different from the Roslyn notion of trivia, is we do not have trailing trivia. all triva in TypeScript is leading. so for instance [...]

in the same issue and in the wiki book however the following info is given:

In General:

  • A token owns any trivia after it on the same line upto the next token.
  • Any comment after that line is associated with the following token.

So from the first cite I understand as if token owns any trivia before it up to the previous token ([trivia of A][token A]... that's why end-of-file token is always present) which seems to be the correct explanation, while the second cite describes that a token owns the trivia after it up to next token in the same line, which would mean that A has trailing trivia, thus not true in TS — albeit true for Roslyn.

[token A][trivia owned by A]<nl>
[trivia owned by B]
[token B]

Unless there is some misconception of what "owned" trivia means, but imo the second cite is incorrect.