summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Feuer <david.feuer@gmail.com>2018-10-04 13:52:23 -0400
committerBen Gamari <ben@smart-cactus.org>2018-10-04 22:27:54 -0400
commit228725747c3e493c36d6b6ad1034ca56581cb758 (patch)
treee22ffb0f30a5955b4cf483c653ddaf5d1f8691b4
parente5013a567b230018b5d39b562ce21faf54740d04 (diff)
downloadhaskell-228725747c3e493c36d6b6ad1034ca56581cb758.tar.gz
Stable name type role
Make the `StableName#` parameter phantom: There is actually never any reason to care about the type of the underlying object of a `StableName#`. The underlying object type shouldn't really even *be* a parameter. But at least we can mark it as phantom. Reviewers: hvr, bgamari, erikd, simonmar Reviewed By: simonmar Subscribers: ekmett, rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5117
-rw-r--r--compiler/prelude/TysPrim.hs2
-rw-r--r--docs/users_guide/8.8.1-notes.rst8
-rw-r--r--libraries/base/changelog.md4
3 files changed, 13 insertions, 1 deletions
diff --git a/compiler/prelude/TysPrim.hs b/compiler/prelude/TysPrim.hs
index c5af4a5121..4a69df8e3e 100644
--- a/compiler/prelude/TysPrim.hs
+++ b/compiler/prelude/TysPrim.hs
@@ -943,7 +943,7 @@ mkStablePtrPrimTy ty = TyConApp stablePtrPrimTyCon [ty]
-}
stableNamePrimTyCon :: TyCon
-stableNamePrimTyCon = pcPrimTyCon stableNamePrimTyConName [Representational] UnliftedRep
+stableNamePrimTyCon = pcPrimTyCon stableNamePrimTyConName [Phantom] UnliftedRep
mkStableNamePrimTy :: Type -> Type
mkStableNamePrimTy ty = TyConApp stableNamePrimTyCon [ty]
diff --git a/docs/users_guide/8.8.1-notes.rst b/docs/users_guide/8.8.1-notes.rst
index 6bdde400bb..a27aee721e 100644
--- a/docs/users_guide/8.8.1-notes.rst
+++ b/docs/users_guide/8.8.1-notes.rst
@@ -104,6 +104,10 @@ Template Haskell
eventlog events similar to ``traceBinaryEvent#`` but allows the user to pass
the event payload as a binary blob instead of a ``String``.
+- The ``StableName#`` type parameter now has a phantom role instead of
+ a representational one. There is really no reason to care about the
+ type of the underlying object.
+
``ghc`` library
~~~~~~~~~~~~~~~
@@ -114,6 +118,10 @@ Template Haskell
- Support the characters from recent versions of Unicode (up to v. 12) in literals
(see :ghc-ticket:`5518`).
+- The ``StableName`` type parameter now has a phantom role instead of
+ a representational one. There is really no reason to care about the
+ type of the underlying object.
+
Build system
~~~~~~~~~~~~
diff --git a/libraries/base/changelog.md b/libraries/base/changelog.md
index 8964edd7ff..3709a0a1a2 100644
--- a/libraries/base/changelog.md
+++ b/libraries/base/changelog.md
@@ -6,6 +6,10 @@
* Support the characters from recent versions of Unicode (up to v. 12) in
literals (#5518).
+ * The `StableName` type parameter now has a phantom role instead of
+ a representational one. There is really no reason to care about the
+ type of the underlying object.
+
## 4.12.0.0 *TBA*
* Bundled with GHC *TBA*