summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGergő Érdi <gergo@erdi.hu>2022-11-21 02:49:17 +0000
committerGergő Érdi <gergo@erdi.hu>2023-02-27 13:34:22 +0000
commitb56025f448646de40446a133f140f62c8a49cabf (patch)
treec88c02b87b312119d2ecfa751a95e30dfecdfc4a /docs
parent7825fef9f2096d7769baf433c6858d132af60a3a (diff)
downloadhaskell-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.rst6
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
~~~~