Check with weeder that the whole library is tested Stacked on #76. Adds a `weeder-check` with `includeTests = true`, so the test suites count as users: the libraries have no roots of their own, which makes the check assert that the whole library is reached by a test rather than merely that nothing is unused. `Autodocodec.Usage` is rooted, declarations and instances both -- it is a corpus of example types for readers and for the tests rather than code that has to be used. It reported 89 weeds. The rest of the commits are what it took to get to zero, and two of them are bug fixes it led to: * `optionalFieldOrNullWithOmittedDefault` and its three siblings documented that they omit the key when the value is the default, but answered the underlying codec with `Nothing` for exactly that case -- and that codec omits the key when what it is given equals its own default, `Just defaultValue`. So the one value that should have been omitted was the one that got written, as null. Nothing in the repository used these combinators, which is why no test said so. * `unsafeUnboundedNaturalCodec` threw an arithmetic underflow on a negative number: `floatingOrInteger` reaches its result type through `fromInteger`, which throws for `Natural`. A pure exception out of a parser, on input a parser exists to reject. Also: the unused `Result` newtype is removed, and `ExactParseErrorMessage` is now exported (`ExactParseError` already exposed a field of that type, so a parse error could only be pretty-printed, never inspected). `nix flake check` passes, with 1671 tests. ### Worth a look during review `Result` was reachable through `Autodocodec`, which re-exports `module Autodocodec.Codec` wholesale, so removing it is technically breaking. Its own comment says it was never meant to be public. No version was bumped, so nothing releases until you decide.
Total
2m48s
Created Started Finished
| Time to Start | Worker time | Duration | Time to finish | Idle | |
|---|---|---|---|---|---|
| Config | 35s | 0s | 0s | 36s | 35s |
| Eval | 1m39s | 1m44s | 1m44s | 3m23s | 1m03s |
| Build | - | - | - | - | - |
| Suite | 35s | 1m45s | 2m48s | 3m23s | 1m38s |