Setup Hooks: make Location a separate data type
commit6dd579fc99162d2ca3f861bd360ed102ad69b6ac
authorsheaf <sam.derbyshire@gmail.com>
Thu, 9 May 2024 08:59:49 +0000 (9 10:59 +0200)
committerMikolaj <281893+Mikolaj@users.noreply.github.com>
Sat, 18 May 2024 11:42:58 +0000 (18 11:42 +0000)
tree512d4bc36bc97b1ddab4e851e8e84ccba026ed3c
parentb7cc3264551e9b0b7c9073d701b0c9c4001eb8b9
Setup Hooks: make Location a separate data type

This commit makes Location a separate data type:

  data Location where
    Location
      :: SymbolicPath Pkg (Dir baseDir)
      -> RelativePath baseDir File
      -> Location

instead of being a type synonym for (FilePath, FilePath).

We noted during testing of the Hooks API that it was all too easy to
give an incorrect location for rule outputs, e.g. by omitting an
extension or using an absolute path.
This change allows us to improve the API documentation, as well as
clarifying the types to avoid any ambiguities about what kind of file
path is expected (FilePath vs SymbolicPath).
19 files changed:
Cabal-hooks/Cabal-hooks.cabal
Cabal-hooks/src/Distribution/Simple/SetupHooks.hs
Cabal/src/Distribution/Simple/SetupHooks/Errors.hs
Cabal/src/Distribution/Simple/SetupHooks/Internal.hs
Cabal/src/Distribution/Simple/SetupHooks/Rule.hs
cabal-testsuite/PackageTests/BuildToolPaths/pbts/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksC2HsRules/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksCyclicRules/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksCyclicRules/setup.out
cabal-testsuite/PackageTests/SetupHooks/SetupHooksDuplicateRuleId/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksDuplicateRuleId/setup.out
cabal-testsuite/PackageTests/SetupHooks/SetupHooksInvalidRuleOutputIndex/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksMissingRuleDep/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksMissingRuleDep/setup.out
cabal-testsuite/PackageTests/SetupHooks/SetupHooksMissingRuleRes/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksMissingRuleRes/setup.out
cabal-testsuite/PackageTests/SetupHooks/SetupHooksRuleOrdering/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksUnusedRules/SetupHooks.hs
cabal-testsuite/PackageTests/SetupHooks/SetupHooksUnusedRules/setup.out