In addition to `interpolate`, this also removes the following
transitive dependencies:
- `haskell-src-exts`
- `haskell-src-meta`
- `safe`
- `th-expand-syns`
- `th-lift`
- `th-lift-instances`
- `th-orphans`
- `th-reify-many`
Since `neat-interpolation`'s `text` quasiquoter trims more whitespace
than `interpolate`'s `i`, the expected output of some tests for
`unsafeGetAttrPos` had to be updated.
This also improves the test failure output of the `constantEqual`
helper.
Fixes#634.
The `MonadException` class was removed in favor of `MonadCatch`, so we
can remove its instances, enabling us to remove the library dependency
on haskeline.
To simplify dependency resolution with GHC < 8.10, this also disables
the executable in that configuration.
The `Refl` constructor had previously been re-exported from
`Data.GADT.Compare`.
This also replaces the dependency on `dependent-sum` with `some`,
where the `Data.GADT.Compare` module is now defined.
Tested by building locally with GHC 8.4.4, 8.6.5 and 8.8.3 in `cabal`.
Fixes#585.
The search path of Nix contains by default the "nix" prefix that points
to $datadir/nix/corepkgs, where $datadir defaults to $prefix/lib at
installation time, but can be overriden by NIX_DATA_DIR.
We implemented it using `Paths.hnix.getDataDir` and `NIX_DATA_DIR` to
follow Nix behaviour as closely as possible.
A small discrepancy is that we do the lookup on each invocation, where
Nix caches the searchPath at context creation.
Fix an issue where compound attributes would discard previous bindings
in a let statement.
`let a=1; b.b=2; c=3; in a` would fail, where
`let a=1; b.b=2; c=3; in c` would work as expected.
Note that this is an enforced public API change.
I went with changing the `MonadFile` typeclass rather than threading
through a `MonadFail` at every use-site, but that would be possible as
well if it makes more semantic sense - however, since `MonadFile`
already seems to require an IO-ish implementation, adding that
superclass doesn't seem like an imposition.
The only actual breaking change affecting `hnix` is `these` splitting
into three packages and renaming some things. Otherwise, as the
package should work fine with either the newer or older versions, I
have left the previous bounds in place and added the new ones
disjunctively.
This will help somewhat with #494.
Heterogeneous: consisting of dissimilar elements.
Heterogenous:
1. not originating within the body;
(ex: "You are NOT of the body!" by Dr. Leonard "Bones" McCoy)
2. of foreign origin;
3. heterogeneous.