diff options
author | Gergő Érdi <gergo@erdi.hu> | 2022-11-21 02:49:17 +0000 |
---|---|---|
committer | Gergő Érdi <gergo@erdi.hu> | 2023-02-27 13:34:22 +0000 |
commit | b56025f448646de40446a133f140f62c8a49cabf (patch) | |
tree | c88c02b87b312119d2ecfa751a95e30dfecdfc4a /docs | |
parent | 7825fef9f2096d7769baf433c6858d132af60a3a (diff) | |
download | haskell-b56025f448646de40446a133f140f62c8a49cabf.tar.gz |
Don't specialise incoherent instance applications
Using incoherent instances, there can be situations where two
occurrences of the same overloaded function at the same type use two
different instances (see #22448). For incoherently resolved instances,
we must mark them with `nospec` to avoid the specialiser rewriting one
to the other. This marking is done during the desugaring of the
`WpEvApp` wrapper.
Fixes #22448
Metric Increase:
T15304
Diffstat (limited to 'docs')
-rw-r--r-- | docs/users_guide/9.8.1-notes.rst | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/docs/users_guide/9.8.1-notes.rst b/docs/users_guide/9.8.1-notes.rst index ad6f6f3709..a4230ffcca 100644 --- a/docs/users_guide/9.8.1-notes.rst +++ b/docs/users_guide/9.8.1-notes.rst @@ -27,6 +27,12 @@ Compiler This is convenient for TH code generation, as you can now uniformly use record wildcards regardless of number of fields. +- Incoherent instance applications are no longer specialised. The previous implementation of + specialisation resulted in nondeterministic instance resolution in certain cases, breaking + the specification described in the documentation of the `INCOHERENT` pragma. See GHC ticket + #22448 for further details. + + GHCi ~~~~ |