Commit df73fe2
authored
fix: Complete call stacks with no_predicates (#5418)
# Description
## Problem\*
Consider the following code:
```rust
fn inner<N>(input: Field) {
assert_eq(input, 27);
}
#[no_predicates]
fn no_predicates(input: Field) {
inner(input)
}
fn outer_pass_through(input: Field) {
no_predicates(input)
}
fn main(input: Field) {
outer_pass_through(input)
}
```
This is the call stack with `#[no_predicates]`:
```
┌─ /mnt/user-data/alvaro/constructor/src/main.nr:23:5
│
23 │ assert_eq(input, 27);
│ --------------------
│
= Call stack:
1. /mnt/user-data/alvaro/constructor/src/main.nr:32:5
2. /mnt/user-data/alvaro/constructor/src/main.nr:28:5
3. /mnt/user-data/alvaro/constructor/src/main.nr:23:5
```
This is the call stack without `#[no_predicates]`:
```
error: Failed constraint
┌─ /mnt/user-data/alvaro/constructor/src/main.nr:23:5
│
23 │ assert_eq(input, 27);
│ --------------------
│
= Call stack:
1. /mnt/user-data/alvaro/constructor/src/main.nr:35:5
2. /mnt/user-data/alvaro/constructor/src/main.nr:31:5
3. /mnt/user-data/alvaro/constructor/src/main.nr:27:5
4. /mnt/user-data/alvaro/constructor/src/main.nr:23:5
```
Inlining with no predicates was eating up the `outer_pass_through` call.
## Summary\*
The inliner now doesn't assume that there is at most one location in the
source call stack.
## Additional Context
## Documentation\*
Check one:
- [x] No documentation needed.
- [ ] Documentation included in this PR.
- [ ] **[For Experimental Features]** Documentation to be submitted in a
separate PR.
# PR Checklist\*
- [x] I have tested the changes locally.
- [x] I have formatted the changes with [Prettier](https://prettier.io/)
and/or `cargo fmt` on default settings.1 parent bf3a75a commit df73fe2
1 file changed
+4
-10
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
517 | 517 | | |
518 | 518 | | |
519 | 519 | | |
520 | | - | |
521 | | - | |
522 | | - | |
523 | | - | |
524 | | - | |
525 | | - | |
526 | | - | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
527 | 523 | | |
528 | 524 | | |
529 | 525 | | |
530 | | - | |
531 | | - | |
532 | | - | |
| 526 | + | |
533 | 527 | | |
534 | 528 | | |
535 | 529 | | |
| |||
0 commit comments