New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Last argument expansion works for arrow functions that return JSX #211
Merged
+91
−2
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains 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
57 changes: 57 additions & 0 deletions
57
tests/last_argument_expansion/__snapshots__/jsfmt.spec.js.snap
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
exports[`test jsx.js 1`] = ` | ||
"const els = items.map(item => ( | ||
<div className=\"whatever\"> | ||
<span>{children}</span> | ||
</div> | ||
)); | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
const els = items.map(item => ( | ||
<div className=\"whatever\"> | ||
<span>{children}</span> | ||
</div> | ||
)); | ||
" | ||
`; | ||
|
||
exports[`test object.js 1`] = ` | ||
"const formatData = pipe( | ||
zip, | ||
map(([ ref, data ]) => ({ | ||
nodeId: ref.nodeId.toString(), | ||
...attributeFromDataValue(ref.attributeId, data) | ||
})), | ||
groupBy(prop(\'nodeId\')), | ||
map(mergeAll), | ||
values | ||
); | ||
|
||
export const setProp = y => ({ | ||
...y, | ||
a: \'very, very, very long very, very long text\' | ||
}); | ||
|
||
export const log = y => { | ||
console.log(\'very, very, very long very, very long text\') | ||
}; | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
const formatData = pipe( | ||
zip, | ||
map(([ ref, data ]) => ({ | ||
nodeId: ref.nodeId.toString(), | ||
...attributeFromDataValue(ref.attributeId, data) | ||
})), | ||
groupBy(prop(\"nodeId\")), | ||
map(mergeAll), | ||
values | ||
); | ||
|
||
export const setProp = y => ({ | ||
...y, | ||
a: \"very, very, very long very, very long text\" | ||
}); | ||
|
||
export const log = y => { | ||
console.log(\"very, very, very long very, very long text\"); | ||
}; | ||
" | ||
`; |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
run_spec(__dirname); |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
const els = items.map(item => ( | ||
<div className="whatever"> | ||
<span>{children}</span> | ||
</div> | ||
)); |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
const formatData = pipe( | ||
zip, | ||
map(([ ref, data ]) => ({ | ||
nodeId: ref.nodeId.toString(), | ||
...attributeFromDataValue(ref.attributeId, data) | ||
})), | ||
groupBy(prop('nodeId')), | ||
map(mergeAll), | ||
values | ||
); | ||
|
||
export const setProp = y => ({ | ||
...y, | ||
a: 'very, very, very long very, very long text' | ||
}); | ||
|
||
export const log = y => { | ||
console.log('very, very, very long very, very long text') | ||
}; |
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason why we have to enumerate all the types of body we want to support? Could I just get rid of the check on body.type?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I worked through this on my livestream, and had the exact same question! I removed the
body.type
check and saw why from the tests. I can't remember exactly why, but try it out.I think the part of the reason is #61 actually. We allowed block-less arrow functions to break on the content, so if you have
x => this.foo().bar()
, it could actually break right after the arrow. That would look weird though, or even totally broken if there is more complex content, if we allow this last arg grouping behavior. So we only break blocks.However, turns out of course there are other things we want to allow to break: objects, arrays, etc. But not everything. Feel free to think about this and let me know if there's a better solution! I'm fine if there's a different way that works for everything.