-
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 issue of missing type annotations on explicit returns. #5575
Conversation
cfe8503
to
9df4fef
Compare
Explicit returns did not have any type annotation causing the method disambiguation to fail. The solution was to add a new field to the `TypeCheckContext` called `function_type_annotation`. This field is initialized only in the type_check of function declarations. The field is used to set the type_annotation one while doing the type check of explicit return expressions. With this change `TypeCheckUnification` was also simplified as the unification is now done with `function_type_annotation`. The result was a few functions that are no longer required to be removed. Closes #5518
Really great, this cleans up a lot of code. I think we need a new test for the case reported in #5518 though, right? |
You are right, I forgot to add it to git. Pushed the test just now. |
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.
Around 200 lines of code removed, around 20 lines of code added. I approve of this. :-)
(I also actually reviewed the code, and it looks good)
test/src/e2e_vm_tests/test_programs/should_fail/return_in_strange_positions/test.toml
Show resolved
Hide resolved
## Description Explicit returns did not have any type annotation causing the method disambiguation to fail. The solution was to add a new field to the `TypeCheckContext` called `function_type_annotation`. This field is initialized only in the type_check of function declarations. The field is used to set the type_annotation one while doing the type check of explicit return expressions. With this change `TypeCheckUnification` was also simplified as the unification is now done with `function_type_annotation`. The result was a few functions that are no longer required to be removed. Closes #5518 ## Checklist - [x] I have linked to any relevant issues. - [x] I have commented my code, particularly in hard-to-understand areas. - [ ] 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: João Matos <[email protected]>
Description
Explicit returns did not have any type annotation causing the method disambiguation to fail.
The solution was to add a new field to the
TypeCheckContext
calledfunction_type_annotation
. This field is initialized only in the type_check of function declarations. The field is used to set the type_annotation one while doing the type check of explicit return expressions.With this change
TypeCheckUnification
was also simplified as the unification is now done withfunction_type_annotation
. The result was a few functions that are no longer required to be removed.Closes #5518
Checklist
Breaking*
orNew Feature
labels where relevant.