diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-07-23 17:19:50 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-07-23 17:47:18 -0700 |
| commit | a7f3c2eab427397846f619dba7abb72378ac2ce9 (patch) | |
| tree | 8398c95f4ce6c45ac738c31c4ec2044df49c2103 /lib/std/Build/Step | |
| parent | 7dcbabef512403382f4647e2c7cc0c900ecae913 (diff) | |
| download | zig-a7f3c2eab427397846f619dba7abb72378ac2ce9.tar.gz zig-a7f3c2eab427397846f619dba7abb72378ac2ce9.zip | |
InternPool: fix coerced func hash/eql same as uncoerced
Since the same Key.Func data structure is used for coerced function
bodies as well as uncoerced function bodies, there is danger of them
being hashed and equality-checked as the same. When that happens, the
type of a function body value might be wrong, causing lots of problems.
In this instance, it causes an assertion failure.
This commit fixes it by introducing an `uncoerced_ty` field which
is different than `ty` in the case of `func_coerced` and is used to
differentiate when doing hashing and equality checking.
I have a new behavior test to cover this bug, but it revealed *another*
bug at the same time, so I will fix it in the next commit and and add
the new test therein.
Diffstat (limited to 'lib/std/Build/Step')
0 files changed, 0 insertions, 0 deletions
