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

Handle Bool with exhaustive match #4572

Open
SeanTAllen opened this issue Dec 17, 2024 · 1 comment
Open

Handle Bool with exhaustive match #4572

SeanTAllen opened this issue Dec 17, 2024 · 1 comment
Labels
good first issue Good for newcomers help wanted Extra attention is needed

Comments

@SeanTAllen
Copy link
Member

Currently, the following code isn't seen as an exhaustive match:

actor Main
	new create(env: Env) =>
	  env.out.print("Hello World")

	fun box fourty_two(err: Bool = false): USize ? =>
		match err
	  | true =>
	    return 50
	  | false =>
	    return 42
	  end

This is surprising to folks and we believe that exhaustiveness checking should be enhanced to handle this for booleans.

@ponylang-main ponylang-main added the discuss during sync Should be discussed during an upcoming sync label Dec 17, 2024
@SeanTAllen SeanTAllen added help wanted Extra attention is needed enhancement good first issue Good for newcomers and removed discuss during sync Should be discussed during an upcoming sync labels Dec 17, 2024
@SeanTAllen
Copy link
Member Author

This bit in match.c would need to change for this to work.

    // Only cases that match on type alone can count toward exhaustive match,
    // because matches on structural equality can't be statically evaluated.
    // So, for the purposes of exhaustive match, we ignore those cases.
    if(!case_expr_matches_type_alone(opt, case_expr))
      continue;

in the case of a boolean, we can do the match.

@ponylang-main ponylang-main added the discuss during sync Should be discussed during an upcoming sync label Jan 20, 2025
@SeanTAllen SeanTAllen removed discuss during sync Should be discussed during an upcoming sync enhancement labels Jan 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants