... | @@ -7,6 +7,21 @@ This guide summarises the changes you may need to make to your code to migrate f |
... | @@ -7,6 +7,21 @@ This guide summarises the changes you may need to make to your code to migrate f |
|
|
|
|
|
## Compiler changes
|
|
## Compiler changes
|
|
|
|
|
|
|
|
### `StarIsType`
|
|
|
|
|
|
|
|
|
|
|
|
As part of the [ this GHC proposal](https://github.com/ghc-proposals/ghc-proposals/blob/05721788de9ab6538def68c3c2c9dec50c9f24a8/proposals/0020-no-type-in-type.rst), a new `StarIsType` extension was introduced, which instructs GHC to treat `*` as a synonym for `Type` (from `Data.Kind`) instead of a binary type operator. To provide a migration path for code that uses `*` as a type operator, the `TypeOperators` extension implies `NoStarIsType` in GHC 8.6.
|
|
|
|
|
|
|
|
|
|
|
|
As a result, any code that simultaneously enables `TypeOperators` and uses `*` as a `Type` synonym will not compile in 8.6. There are two ways to adapt to this change:
|
|
|
|
|
|
|
|
1. Replace uses of `*` with `Type`. (This is backwards compatible back to GHC 8.0, when `Type` was introduced.)
|
|
|
|
1. Add the following CPP to the top of the module, after enabling `TypeOperators`:
|
|
|
|
|
|
|
|
```
|
|
|
|
#if __GLASGOW_HASKELL__ >=805{-# LANGUAGE StarIsType #-}#endif
|
|
|
|
```
|
|
|
|
|
|
### Constructor-less GADTs now require `GADTSyntax`
|
|
### Constructor-less GADTs now require `GADTSyntax`
|
|
|
|
|
|
|
|
|
... | | ... | |