Commit 0997786
Convert a hash variant on the way out through a declared return type
A method's C return type comes from its --rbs signature; the expression it
answers is typed from observed dataflow. The hash variants are separate C
structs, so where ivar writes widen one past what the signature declares,
the return handed back an sp_PolyPolyHash * through an sp_StrPolyHash *
signature and the build stopped.
Nothing in such a program is wrong. The signature is a true description of
what the method answers, the widening is spinel's own, and there is no way
to write the RBS that avoids it short of dropping the declaration.
The assignment side has made this conversion since #4089, through the boxed
form the converting entries take. The return side is the same crossing and
gets the same conversion.
Fixes #4095
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 6f9853f commit 0997786
5 files changed
Lines changed: 75 additions & 0 deletions
File tree
- src
- test/rbs-seed
- sig
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
593 | 593 | | |
594 | 594 | | |
595 | 595 | | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
596 | 602 | | |
597 | 603 | | |
598 | 604 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4856 | 4856 | | |
4857 | 4857 | | |
4858 | 4858 | | |
| 4859 | + | |
| 4860 | + | |
| 4861 | + | |
| 4862 | + | |
| 4863 | + | |
| 4864 | + | |
| 4865 | + | |
| 4866 | + | |
| 4867 | + | |
| 4868 | + | |
| 4869 | + | |
| 4870 | + | |
| 4871 | + | |
| 4872 | + | |
| 4873 | + | |
| 4874 | + | |
| 4875 | + | |
4859 | 4876 | | |
4860 | 4877 | | |
4861 | 4878 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
0 commit comments