fix(js_formatter): Only parenthesize default-export function cast expressions #1023
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.
Summary
Fixes #914. This is the last case of that issue (the middle one).
Default-exported cast expressions for functions require parentheses to disambiguate between a cast expression for the function and a default function declaration export. As an example:
In this case parentheses force the statement to be interpreted as a default export of a cast, rather than a declaration:
But (seemingly) all other kinds of default export expressions are able to be written without parentheses, as Prettier prints them out that way. So this PR implements a new check for when the parent of the cast is an
export default
and only adds parentheses for function expressions then, omitting them in every other case.All other types of parent expressions are unaffected.
Test Plan
Added some
needs_parentheses
tests inas_expressions.rs
to ensure these cases are hit correctly.