You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add support for setting emit flags and synthetic comments - #64500
- Null and unknown emitNodes entries are rejected as client errors
instead of panicking.
- EmitFlags exposes None and the composed flags, and None resets a node.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A multiline comment can contain a line terminator even when both newline flags are false. A leading comment with text a\nb on the operand of return 1 bypasses this check and emits return /*a\nb*/ 1;. Automatic semicolon insertion makes that return undefined; the corresponding throw is invalid syntax. Include line terminators in comment.Text when deciding whether parentheses are needed.
Honor HasLeadingNewLine for trailing comments
tsc/internal/printer/printer.go:5519
The newly exposed hasLeadingNewLine option is ignored for trailing comments. For example, addSyntheticTrailingComment(node, MultiLineCommentTrivia, " note ", false, true) still places the comment on the node's line. Honor comment.HasLeadingNewLine before writing the trailing comment, as the leading-comment emitter already does.
Heads-up from #65058 (JSDoc node emission in the printer), which also added synthetic-comment transport for printNode before I saw this PR. Having compared the two, I think this one should be the design that lands, and I plan to drop the overlapping part from #65058 once it merges.
Overlap: both send synthetic leading/trailing comments through the encoder and printNode, keyed by node index, and apply them to an EmitContext in session.go.
It adds hasLeadingNewLine on comments and keeps a single-line comment from commenting out the following code.
It removes the currentSourceFile != nil gating in the printer generally (including the parenthesization checks) rather than through an opt-in option like ours (EmitSyntheticCommentsWithoutSourceFile).
It validates out-of-range emit-node indices.
What ours has that may be worth checking here: a JSDoc-shaped test (a /** ... */ multi-line comment with hasTrailingNewLine printed before a statement, then reparsed), plus trailing // comments after a statement with no source file. I can contribute those as tests here if useful.
Pointers: #65058 adds emitJSDocNode, which fixes #65057 (printing JSDoc nodes panicked), so the two are complementary rather than competing. No action needed from the author; this is only so maintainers know the two PRs touch the same code in encoder.ts, proto.go, session.go and decoder.go.
This branch has not been deployed
No deployments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #64429