Skip to content
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

Chained methods & fields that should be multiline need logic to handle vertical formatting #3474

Closed
eureka-cpu opened this issue Nov 30, 2022 · 6 comments · Fixed by #5207
Closed
Assignees
Labels
enhancement New feature or request forc formatter good first issue Good for newcomers
Milestone

Comments

@eureka-cpu
Copy link
Contributor

eureka-cpu commented Nov 30, 2022

fuelcoin.really_long_field.other_really_long_field.foo().bar().baz().quux();

should be:

fuelcoin
    .really_long_field
    .other_really_long_field
    .foo()
    .bar()
    .baz()
    .quux();

To elaborate further, this applies only to swayfmt. Logic needs to be added to handle the formatting of Sway code so that chained methods & fields that exceed a certain length (IIRC it's 60 but we are using the rustfmt standard which you can find here) are formatted as multiline chains.

rustfmt has a file dedicated to handling formatting of chains, here.

@eureka-cpu eureka-cpu changed the title chains (this includes field projection and method calls) e.g. Chained methods or fields need vertical formatting Nov 30, 2022
@eureka-cpu eureka-cpu added enhancement New feature or request good first issue Good for newcomers forc formatter labels Nov 30, 2022
@eureka-cpu eureka-cpu added this to the swayfmt milestone Nov 30, 2022
@AliJafriETH
Copy link
Contributor

AliJafriETH commented Dec 25, 2022

hey @eureka-cpu, is the issue still open, i'd like to try to solve this issue :))

@eureka-cpu
Copy link
Contributor Author

hey @eureka-cpu, is the issue still open, i'd like to try to solve this issue :))

Please, feel free!

@eureka-cpu
Copy link
Contributor Author

Take a look at how we handle import statements for some general direction

@AliJafriETH
Copy link
Contributor

Hey @eureka-cpu, sorry for such a late response but i'm not able to find the issue? Could you please help me out?

@eureka-cpu
Copy link
Contributor Author

eureka-cpu commented Jan 1, 2023

Hi @AliJafriETH, I would start by adding a few tests to swayfmt/src/formatter/mod.rs. Then check swayfmt/src/utils/language/expr/mod.rs, you should find everything you need there. Hopefully this clarifies where, but if you still need help feel free to reach out.

@AliJafriETH
Copy link
Contributor

Hey @eureka-cpu, thank you so much for the help, I'll update you with the progress :))

Thanks 💯

@eureka-cpu eureka-cpu changed the title Chained methods or fields need vertical formatting Chained methods & fields that should be multiline need logic to handle vertical formatting Jan 29, 2023
@eureka-cpu eureka-cpu removed their assignment Sep 19, 2023
@cr-fuel cr-fuel self-assigned this Sep 19, 2023
cr-fuel added a commit that referenced this issue Oct 28, 2023
Fixes #3474

## Description

Breaks long expressions (focusing into chained methods calls but will
cover all expressions) into multiple lines

## Checklist

- [x] I have linked to any relevant issues.
- [x] I have commented my code, particularly in hard-to-understand
areas.
- [x] I have updated the documentation where relevant (API docs, the
reference, and the Sway book).
- [x] I have added tests that prove my fix is effective or that my
feature works.
- [x] I have added (or requested a maintainer to add) the necessary
`Breaking*` or `New Feature` labels where relevant.
- [x] I have done my best to ensure that my PR adheres to [the Fuel Labs
Code Review
Standards](https://github.com/FuelLabs/rfcs/blob/master/text/code-standards/external-contributors.md).
- [x] I have requested a review from the relevant team or maintainers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request forc formatter good first issue Good for newcomers
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants