diff options
author | sheaf <sam.derbyshire@gmail.com> | 2022-01-24 16:15:39 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-01-26 12:03:01 -0500 |
commit | b55d7db321d78e11b45b5260f1aa46c046d1c05d (patch) | |
tree | c822fe564b844287580396cf8ebf47391f2669a6 /libraries | |
parent | 6e94ba54c55f947e9ba034d3b387ae94e240f253 (diff) | |
download | haskell-b55d7db321d78e11b45b5260f1aa46c046d1c05d.tar.gz |
Ensure that order of instances doesn't matter
The insert_overlapping used in lookupInstEnv used to return different
results depending on the order in which instances were processed.
The problem was that we could end up discarding an overlapping instance
in favour of a more specific non-overlapping instance. This is a
problem because, even though we won't choose the less-specific instance
for matching, it is still useful for pruning away other instances,
because it has the overlapping flag set while the new instance doesn't.
In insert_overlapping, we now keep a list of "guard" instances, which
are instances which are less-specific that one that matches (and hence
which we will discard in the end), but want to keep around solely for
the purpose of eliminating other instances.
Fixes #20946
Diffstat (limited to 'libraries')
0 files changed, 0 insertions, 0 deletions