-
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
Internal compiler error: Verification failed: Struct access must be to a pointer value, not a { string<10> } #4438
Comments
Smaller repro: script;
struct S {
data: u64
}
impl S {
fn update(mut self, data: u64) {
self.data = data
}
}
fn main() {
let mut s = S { data: 0 };
s.update(10);
} @mohammadfawaz Should we disallow the usage |
@tritao does the problem also affect |
So, the following fails: script;
struct S {
data: u64
}
impl S {
fn update(self, mut data: u64) {
data = 20
}
}
fn main() {
let s = S { data: 0 };
s.update(10);
} With current master (after IR refactor):
Before IR refactor:
So this doesn't look like a regression. If I try to do the same with a regular function, instead of a method:
So we maybe just need to apply the ref/mut parameter checking we do for impl functions too? |
Ah excellent. Yeah we just have to disallow mut without ref for method parameters everywhere |
…4442) Closes #4438. ## 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.
The following code produces an ICE when
ref
is removed from theimpl
method.Note that there was a
fuel-toolchain.toml
file at the time of writing this issue and all it contained is[toolchain] channel = "beta-3"
The text was updated successfully, but these errors were encountered: