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

Exhaustive match completion for tuples of enums #400

Open
spamegg1 opened this issue Sep 20, 2024 · 2 comments
Open

Exhaustive match completion for tuples of enums #400

spamegg1 opened this issue Sep 20, 2024 · 2 comments

Comments

@spamegg1
Copy link

Is your feature request related to a problem? Please describe.

When I use tuples of enums, the exhaustive completion that is offered looks like case Tuple2(_1, _2) => .

Describe the solution you'd like

It would be nice if Metals can offer the "Cartesian product" of all the possible pairs. For example

enum Rotate:
  case L, R
enum Dir:
  case N, S, E, W

def spam(r: Rotate, d: Dir) = (r, d) match
  case (Rotate.L, Dir.N) => 
  // Metals completes all 8 possibilities in "match (exhaustive)"

Describe alternatives you've considered

n/a

Additional context

n/a

Search terms

enum match exhaustive completion

@spamegg1
Copy link
Author

spamegg1 commented Oct 8, 2024

Just came to my mind... would it be possible to complete them with ??? on all the right sides (so it still compiles)? Just a little comfort / luxury thing.

@tgodzik
Copy link
Contributor

tgodzik commented Oct 8, 2024

It would be possible, we could even use the snippet syntax to be able to go over each ($1 $2 etc. will allow user to use tab to move to next), though not sure about the case where someone might want an empty case 🤔

It's worth experimenting, what will be most user friendly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants