-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
Fixes Self
not found in match statement.
#4459
Conversation
`Self` was not working when qualifying an enum variant in a match statement. The solution was to add the implementing type declaration as an impl_trait namespace symbol. Closes #4263.
I might be wrong but I'm thinking maybe reusing the |
It looks like we are trying to resolve the enum scrutinee from its call path during its sway/sway-core/src/semantic_analysis/ast_node/expression/match_expression/typed/typed_scrutinee.rs Lines 272 to 278 in 30f869a
The error |
## Description Fixes #4877 ## Tasks - [x] Make a simple example with a trait and an impl for it compile - [x] Fix typechecking for empty enums - [x] Fix typechecking for trait impl methods - [x] Fix typechecking for impl self blocks - [x] Fix the case of non-implemented supertraits - [x] Fix typechecking of generic traits - [x] Fix typechecking of generic impl self blocks - [x] Resolve ambiguity between term/path-level `Self` and the type-level `Self` type parameter (related PR #4459): - [x] enums - [x] structs (deferred as issue #5164) - [x] Fix `Self` for type constraints - [x] Fix looping during insertion of trait constraints for generic tuples (inserted `occurs_check` to prevent unification of a generic `A` with a tuple `(A, A)`; - [x] Fix exponential growth of the traits map (around 30 tests out of more than 680 are failing now); related PR: #5004 - [x] Fix `Self` type for blanket implementations - [x] Fix `Self` for associated consts - [x] Fix name resolution issues for some tests with traits (like `should_pass/language/eq_intrinsic`); blocking issues: - #5018 - #5036 - [x] Fix `should_fail/generic_traits` test - [x] Fix `should_pass/language/where_clause_impls` test - [x] Fix `should_pass/language/name_resolution_inside_intrinsics` test - [x] Remove some commented out code in `impl_trait.rs` - [x] Comment new code - [x] **Disable** `should_pass/language/associated_type_container` test - [x] **Disable** `should_pass/language/associated_type_method` test - [x] **Disable** `should_pass/language/associated_type_and_associated_const` test - [x] **Disable** `should_pass/language/associated_type_iterator` test ## 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. --------- Co-authored-by: Joshua Batty <joshpbatty@gmail.com> Co-authored-by: IGI-111 <igi-111@protonmail.com>
Description
Self
was not working when qualifying an enum variant in a match statement.The solution was to add the implementing type declaration as an impl_trait namespace symbol named "Self".
Closes #4263.
Checklist
Breaking*
orNew Feature
labels where relevant.