From 439d68efb74bd8f1c2215301d214d9459acdfa63 Mon Sep 17 00:00:00 2001 From: Brandon Chinn <brandonchinn178@gmail.com> Date: Thu, 13 Jul 2023 22:20:33 -0700 Subject: [PATCH] Fix fourmolu (#9095) * Fix PROCS for Darwin * Add fixity information * Fix file exclusions * Fix formatting * Fix CI linting * Simplify 'make style' without 'find' * Add in backwards-compatible fourmolu 0.13 config --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/workflows/format.yml | 7 +- Cabal-syntax/src/Distribution/Fields/Lexer.hs | 1 + .../Distribution/SPDX/LicenseExceptionId.hs | 1 + .../src/Distribution/SPDX/LicenseId.hs | 1 + .../InstalledPackageInfo/FieldGrammar.hs | 4 +- .../src/Distribution/Simple/Build/Macros/Z.hs | 1 + .../Simple/Build/PathsModule/Z.hs | 1 + Makefile | 23 +- cabal-dev-scripts/src/GenCabalMacros.hs | 3 +- cabal-dev-scripts/src/GenPathsModule.hs | 3 +- .../Distribution/Client/CmdHaddockProject.hs | 376 +++++++++--------- .../Distribution/Client/FetchUtils.hs | 2 +- .../UnitTests/Distribution/Client/Get.hs | 2 +- fourmolu.yaml | 15 +- templates/SPDX.LicenseExceptionId.template.hs | 1 + templates/SPDX.LicenseId.template.hs | 1 + 16 files changed, 229 insertions(+), 213 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 0308e4a595..7e75af1af6 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -15,9 +15,4 @@ jobs: pattern: | Cabal/**/*.hs Cabal-syntax/**/*.hs - Cabal-install/**/*.hs - !Cabal-syntax/src/Distribution/Fields/Lexer.hs - !Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs - !Cabal-syntax/src/Distribution/SPDX/LicenseId.hs - !Cabal/src/Distribution/Simple/Build/Macros/Z.hs - !Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs + cabal-install/**/*.hs diff --git a/Cabal-syntax/src/Distribution/Fields/Lexer.hs b/Cabal-syntax/src/Distribution/Fields/Lexer.hs index 2372fde378..a24606f64f 100644 --- a/Cabal-syntax/src/Distribution/Fields/Lexer.hs +++ b/Cabal-syntax/src/Distribution/Fields/Lexer.hs @@ -1,3 +1,4 @@ +{- FOURMOLU_DISABLE -} {-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-} {-# LANGUAGE CPP #-} {-# LANGUAGE MagicHash #-} diff --git a/Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs b/Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs index b25a9e6934..59077b29a3 100644 --- a/Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs +++ b/Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs @@ -1,4 +1,5 @@ -- This file is generated. See Makefile's spdx rule +{- FOURMOLU_DISABLE -} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.SPDX.LicenseExceptionId ( diff --git a/Cabal-syntax/src/Distribution/SPDX/LicenseId.hs b/Cabal-syntax/src/Distribution/SPDX/LicenseId.hs index 6d5361ba36..22ea912f3e 100644 --- a/Cabal-syntax/src/Distribution/SPDX/LicenseId.hs +++ b/Cabal-syntax/src/Distribution/SPDX/LicenseId.hs @@ -1,4 +1,5 @@ -- This file is generated. See Makefile's spdx rule +{- FOURMOLU_DISABLE -} {-# LANGUAGE DeriveDataTypeable #-} module Distribution.SPDX.LicenseId ( LicenseId (..), diff --git a/Cabal-syntax/src/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs b/Cabal-syntax/src/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs index d754663554..7578907b59 100644 --- a/Cabal-syntax/src/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs +++ b/Cabal-syntax/src/Distribution/Types/InstalledPackageInfo/FieldGrammar.hs @@ -79,8 +79,8 @@ ipiFieldGrammar = mkInstalledPackageInfo -- Deprecated fields <$> monoidalFieldAla "hugs-options" (alaList' FSep Token) unitedList - --- https://github.com/haskell/cabal/commit/40f3601e17024f07e0da8e64d3dd390177ce908b - ^^^ deprecatedSince CabalSpecV1_22 "hugs isn't supported anymore" + --- https://github.com/haskell/cabal/commit/40f3601e17024f07e0da8e64d3dd390177ce908b + ^^^ deprecatedSince CabalSpecV1_22 "hugs isn't supported anymore" -- Very basic fields: name, version, package-name, lib-name and visibility <@> blurFieldGrammar basic basicFieldGrammar -- Basic fields diff --git a/Cabal/src/Distribution/Simple/Build/Macros/Z.hs b/Cabal/src/Distribution/Simple/Build/Macros/Z.hs index 4c14843e04..77e0ca4a94 100644 --- a/Cabal/src/Distribution/Simple/Build/Macros/Z.hs +++ b/Cabal/src/Distribution/Simple/Build/Macros/Z.hs @@ -1,3 +1,4 @@ +{- FOURMOLU_DISABLE -} {-# LANGUAGE DeriveGeneric #-} module Distribution.Simple.Build.Macros.Z (render, Z(..), ZPackage (..), ZTool (..)) where import Distribution.ZinzaPrelude diff --git a/Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs b/Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs index 9100dc629e..25c924720e 100644 --- a/Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs +++ b/Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs @@ -1,3 +1,4 @@ +{- FOURMOLU_DISABLE -} {-# LANGUAGE DeriveGeneric #-} module Distribution.Simple.Build.PathsModule.Z (render, Z(..)) where import Distribution.ZinzaPrelude diff --git a/Makefile b/Makefile index 306faea8f8..8f35c847af 100644 --- a/Makefile +++ b/Makefile @@ -19,21 +19,10 @@ init: ## Set up git hooks and ignored revisions ## TODO style: ## Run the code styler - @find Cabal Cabal-syntax cabal-install -name '*.hs' \ - ! -path Cabal-syntax/src/Distribution/Fields/Lexer.hs \ - ! -path Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs \ - ! -path Cabal-syntax/src/Distribution/SPDX/LicenseId.hs \ - ! -path Cabal/src/Distribution/Simple/Build/Macros/Z.hs \ - ! -path Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs \ - | xargs -P $(PROCS) -I {} fourmolu -q -i {} + @fourmolu -q -i Cabal Cabal-syntax cabal-install style-modified: ## Run the code styler on modified files @git ls-files --modified Cabal Cabal-syntax cabal-install \ - -X Cabal-syntax/src/Distribution/Fields/Lexer.hs \ - -X Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs \ - -X Cabal-syntax/src/Distribution/SPDX/LicenseId.hs \ - -X Cabal/src/Distribution/Simple/Build/Macros/Z.hs \ - -X Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs \ | grep '.hs$$' | xargs -P $(PROCS) -I {} fourmolu -q -i {} # source generation: Lexer @@ -44,7 +33,9 @@ lexer : $(LEXER_HS) $(LEXER_HS) : templates/Lexer.x alex --latin1 --ghc -o $@ $^ - cat -s $@ > Lexer.tmp + @rm -f Lexer.tmp + echo '{- FOURMOLU_DISABLE -}' >> Lexer.tmp + cat -s $@ >> Lexer.tmp mv Lexer.tmp $@ # source generation: SPDX @@ -250,8 +241,8 @@ doc/requirements.txt: .python-sphinx-virtualenv . .python-sphinx-virtualenv/bin/activate \ && make -C doc build-and-check-requirements -ifeq ($(UNAME), Darwin) - PROCS := $(shell sysctl -n hw.logicalcpu) +ifeq ($(shell uname), Darwin) +PROCS := $(shell sysctl -n hw.logicalcpu) else - PROCS := $(shell nproc) +PROCS := $(shell nproc) endif diff --git a/cabal-dev-scripts/src/GenCabalMacros.hs b/cabal-dev-scripts/src/GenCabalMacros.hs index 3dd3be142b..7ca0317fbe 100644 --- a/cabal-dev-scripts/src/GenCabalMacros.hs +++ b/cabal-dev-scripts/src/GenCabalMacros.hs @@ -77,7 +77,8 @@ config :: ModuleConfig Z config = ModuleConfig { mcRender = "render" , mcHeader = - [ "{-# LANGUAGE DeriveGeneric #-}" + [ "{- FOURMOLU_DISABLE -}" + , "{-# LANGUAGE DeriveGeneric #-}" , "module Distribution.Simple.Build.Macros.Z (render, Z(..), ZPackage (..), ZTool (..)) where" , "import Distribution.ZinzaPrelude" , decls diff --git a/cabal-dev-scripts/src/GenPathsModule.hs b/cabal-dev-scripts/src/GenPathsModule.hs index dfe582067f..46ef779e2a 100644 --- a/cabal-dev-scripts/src/GenPathsModule.hs +++ b/cabal-dev-scripts/src/GenPathsModule.hs @@ -71,7 +71,8 @@ config :: ModuleConfig Z config = ModuleConfig { mcRender = "render" , mcHeader = - [ "{-# LANGUAGE DeriveGeneric #-}" + [ "{- FOURMOLU_DISABLE -}" + , "{-# LANGUAGE DeriveGeneric #-}" , "module Distribution.Simple.Build.PathsModule.Z (render, Z(..)) where" , "import Distribution.ZinzaPrelude" , decls diff --git a/cabal-install/src/Distribution/Client/CmdHaddockProject.hs b/cabal-install/src/Distribution/Client/CmdHaddockProject.hs index e402a8db87..d63e890a3e 100644 --- a/cabal-install/src/Distribution/Client/CmdHaddockProject.hs +++ b/cabal-install/src/Distribution/Client/CmdHaddockProject.hs @@ -161,208 +161,216 @@ haddockProjectAction flags _extraArgs globalFlags = do -- we need. -- - withContextAndSelectors RejectNoTargets Nothing - (commandDefaultFlags CmdBuild.buildCommand) - ["all"] globalFlags HaddockCommand - $ \targetCtx ctx targetSelectors -> do - baseCtx <- case targetCtx of - ProjectContext -> return ctx - GlobalContext -> return ctx - ScriptContext path exemeta -> updateContextAndWriteProjectFile ctx path exemeta - let distLayout = distDirLayout baseCtx - cabalLayout = cabalDirLayout baseCtx - buildCtx <- - runProjectPreBuildPhase verbosity baseCtx $ \elaboratedPlan -> do - -- Interpret the targets on the command line as build targets - -- (as opposed to say repl or haddock targets). - targets <- - either reportTargetProblems return $ - resolveTargets - selectPackageTargets - selectComponentTargetBasic - elaboratedPlan - Nothing - targetSelectors - - let elaboratedPlan' = - pruneInstallPlanToTargets - TargetActionBuild - targets + withContextAndSelectors + RejectNoTargets + Nothing + (commandDefaultFlags CmdBuild.buildCommand) + ["all"] + globalFlags + HaddockCommand + $ \targetCtx ctx targetSelectors -> do + baseCtx <- case targetCtx of + ProjectContext -> return ctx + GlobalContext -> return ctx + ScriptContext path exemeta -> updateContextAndWriteProjectFile ctx path exemeta + let distLayout = distDirLayout baseCtx + cabalLayout = cabalDirLayout baseCtx + buildCtx <- + runProjectPreBuildPhase verbosity baseCtx $ \elaboratedPlan -> do + -- Interpret the targets on the command line as build targets + -- (as opposed to say repl or haddock targets). + targets <- + either reportTargetProblems return $ + resolveTargets + selectPackageTargets + selectComponentTargetBasic elaboratedPlan - return (elaboratedPlan', targets) + Nothing + targetSelectors - printPlan verbosity baseCtx buildCtx + let elaboratedPlan' = + pruneInstallPlanToTargets + TargetActionBuild + targets + elaboratedPlan + return (elaboratedPlan', targets) - let elaboratedPlan :: ElaboratedInstallPlan - elaboratedPlan = elaboratedPlanOriginal buildCtx + printPlan verbosity baseCtx buildCtx - sharedConfig :: ElaboratedSharedConfig - sharedConfig = elaboratedShared buildCtx + let elaboratedPlan :: ElaboratedInstallPlan + elaboratedPlan = elaboratedPlanOriginal buildCtx - pkgs :: [Either InstalledPackageInfo ElaboratedConfiguredPackage] - pkgs = matchingPackages elaboratedPlan + sharedConfig :: ElaboratedSharedConfig + sharedConfig = elaboratedShared buildCtx - progs <- - reconfigurePrograms - verbosity - (haddockProjectProgramPaths flags) - (haddockProjectProgramArgs flags) - -- we need to insert 'haddockProgram' before we reconfigure it, - -- otherwise 'set - . addKnownProgram haddockProgram - . pkgConfigCompilerProgs - $ sharedConfig - let sharedConfig' = sharedConfig{pkgConfigCompilerProgs = progs} + pkgs :: [Either InstalledPackageInfo ElaboratedConfiguredPackage] + pkgs = matchingPackages elaboratedPlan - _ <- - requireProgramVersion - verbosity - haddockProgram - (orLaterVersion (mkVersion [2, 26, 1])) - progs + progs <- + reconfigurePrograms + verbosity + (haddockProjectProgramPaths flags) + (haddockProjectProgramArgs flags) + -- we need to insert 'haddockProgram' before we reconfigure it, + -- otherwise 'set + . addKnownProgram haddockProgram + . pkgConfigCompilerProgs + $ sharedConfig + let sharedConfig' = sharedConfig{pkgConfigCompilerProgs = progs} - -- - -- Build project; we need to build dependencies. - -- Issue #8958. - -- - - when localStyle $ - CmdBuild.buildAction - (commandDefaultFlags CmdBuild.buildCommand) - ["all"] - globalFlags + _ <- + requireProgramVersion + verbosity + haddockProgram + (orLaterVersion (mkVersion [2, 26, 1])) + progs - -- - -- Build haddocks of each components - -- + -- + -- Build project; we need to build dependencies. + -- Issue #8958. + -- - CmdHaddock.haddockAction - nixFlags - ["all"] - globalFlags + when localStyle $ + CmdBuild.buildAction + (commandDefaultFlags CmdBuild.buildCommand) + ["all"] + globalFlags - -- - -- Copy haddocks to the destination folder - -- + -- + -- Build haddocks of each components + -- - packageInfos <- fmap (nub . concat) $ for pkgs $ \pkg -> - case pkg of - Left _ - | not localStyle -> - return [] - Left package -> do - -- TODO: this might not work for public packages with sublibraries. - -- Issue #9026. - let packageName = unPackageName (pkgName $ sourcePackageId package) - destDir = outputDir </> packageName - fmap catMaybes $ for (haddockInterfaces package) $ \interfacePath -> do - let docDir = takeDirectory interfacePath - a <- doesFileExist interfacePath - case a of - True -> - copyDirectoryRecursive verbosity docDir destDir - >> return - ( Just - ( packageName - , interfacePath - , Hidden - ) - ) - False -> return Nothing - Right package -> - case elabLocalToProject package of - True -> do - let distDirParams = elabDistDirParams sharedConfig' package - unitId = unUnitId (elabUnitId package) - buildDir = distBuildDirectory distLayout distDirParams - packageName = unPackageName (pkgName $ elabPkgSourceId package) - let docDir = - buildDir - </> "doc" - </> "html" - </> packageName - destDir = outputDir </> unitId - interfacePath = - destDir - </> packageName - <.> "haddock" - a <- doesDirectoryExist docDir - case a of - True -> - copyDirectoryRecursive verbosity docDir destDir - >> return - [ - ( unitId - , interfacePath - , Visible - ) - ] - False -> do - warn verbosity - ("haddocks of " - ++ show unitId - ++ " not found in the store") - return [] - False - | not localStyle -> - return [] - False -> do - let packageName = unPackageName (pkgName $ elabPkgSourceId package) - unitId = unUnitId (elabUnitId package) - packageDir = - storePackageDirectory - (cabalStoreDirLayout cabalLayout) - (compilerId (pkgConfigCompiler sharedConfig')) - (elabUnitId package) - docDir = packageDir </> "share" </> "doc" </> "html" - destDir = outputDir </> packageName - interfacePath = - destDir - </> packageName - <.> "haddock" - a <- doesDirectoryExist docDir + CmdHaddock.haddockAction + nixFlags + ["all"] + globalFlags + + -- + -- Copy haddocks to the destination folder + -- + + packageInfos <- fmap (nub . concat) $ for pkgs $ \pkg -> + case pkg of + Left _ + | not localStyle -> + return [] + Left package -> do + -- TODO: this might not work for public packages with sublibraries. + -- Issue #9026. + let packageName = unPackageName (pkgName $ sourcePackageId package) + destDir = outputDir </> packageName + fmap catMaybes $ for (haddockInterfaces package) $ \interfacePath -> do + let docDir = takeDirectory interfacePath + a <- doesFileExist interfacePath case a of True -> copyDirectoryRecursive verbosity docDir destDir - -- non local packages will be hidden in haddock's - -- generated contents page >> return - [ - ( unitId - , interfacePath - , Hidden - ) - ] - False -> do - warn verbosity - ("haddocks of " - ++ show unitId - ++ " not found in the store") - return [] + ( Just + ( packageName + , interfacePath + , Hidden + ) + ) + False -> return Nothing + Right package -> + case elabLocalToProject package of + True -> do + let distDirParams = elabDistDirParams sharedConfig' package + unitId = unUnitId (elabUnitId package) + buildDir = distBuildDirectory distLayout distDirParams + packageName = unPackageName (pkgName $ elabPkgSourceId package) + let docDir = + buildDir + </> "doc" + </> "html" + </> packageName + destDir = outputDir </> unitId + interfacePath = + destDir + </> packageName + <.> "haddock" + a <- doesDirectoryExist docDir + case a of + True -> + copyDirectoryRecursive verbosity docDir destDir + >> return + [ + ( unitId + , interfacePath + , Visible + ) + ] + False -> do + warn + verbosity + ( "haddocks of " + ++ show unitId + ++ " not found in the store" + ) + return [] + False + | not localStyle -> + return [] + False -> do + let packageName = unPackageName (pkgName $ elabPkgSourceId package) + unitId = unUnitId (elabUnitId package) + packageDir = + storePackageDirectory + (cabalStoreDirLayout cabalLayout) + (compilerId (pkgConfigCompiler sharedConfig')) + (elabUnitId package) + docDir = packageDir </> "share" </> "doc" </> "html" + destDir = outputDir </> packageName + interfacePath = + destDir + </> packageName + <.> "haddock" + a <- doesDirectoryExist docDir + case a of + True -> + copyDirectoryRecursive verbosity docDir destDir + -- non local packages will be hidden in haddock's + -- generated contents page + >> return + [ + ( unitId + , interfacePath + , Hidden + ) + ] + False -> do + warn + verbosity + ( "haddocks of " + ++ show unitId + ++ " not found in the store" + ) + return [] - -- - -- generate index, content, etc. - -- + -- + -- generate index, content, etc. + -- - let flags' = - flags - { haddockProjectDir = Flag outputDir - , haddockProjectInterfaces = - Flag - [ ( interfacePath - , Just name - , Just name - , visibility - ) - | (name, interfacePath, visibility) <- packageInfos - ] - } - createHaddockIndex - verbosity - (pkgConfigCompilerProgs sharedConfig') - (pkgConfigCompiler sharedConfig') - (pkgConfigPlatform sharedConfig') - flags' + let flags' = + flags + { haddockProjectDir = Flag outputDir + , haddockProjectInterfaces = + Flag + [ ( interfacePath + , Just name + , Just name + , visibility + ) + | (name, interfacePath, visibility) <- packageInfos + ] + } + createHaddockIndex + verbosity + (pkgConfigCompilerProgs sharedConfig') + (pkgConfigCompiler sharedConfig') + (pkgConfigPlatform sharedConfig') + flags' where verbosity = fromFlagOrDefault normal (haddockProjectVerbosity flags) diff --git a/cabal-install/tests/UnitTests/Distribution/Client/FetchUtils.hs b/cabal-install/tests/UnitTests/Distribution/Client/FetchUtils.hs index 76bd1d94d5..4131f01a70 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/FetchUtils.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/FetchUtils.hs @@ -16,12 +16,12 @@ import Distribution.Client.Types.Repo (Repo (..), emptyRemoteRepo) import Distribution.Client.Types.RepoName (RepoName (..)) import Distribution.Types.PackageId (PackageIdentifier (..)) import Distribution.Types.PackageName (mkPackageName) +import Distribution.Utils.TempTestDir (withTestDir) import qualified Distribution.Verbosity as Verbosity import Distribution.Version (mkVersion) import Network.URI (URI, uriPath) import Test.Tasty import Test.Tasty.HUnit -import Distribution.Utils.TempTestDir (withTestDir) tests :: [TestTree] tests = diff --git a/cabal-install/tests/UnitTests/Distribution/Client/Get.hs b/cabal-install/tests/UnitTests/Distribution/Client/Get.hs index 88b794d7c4..fadca21d0c 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/Get.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/Get.hs @@ -20,10 +20,10 @@ import System.Exit import System.FilePath import System.IO.Error +import Distribution.Utils.TempTestDir (withTestDir) import Test.Tasty import Test.Tasty.HUnit import UnitTests.Options (RunNetworkTests (..)) -import Distribution.Utils.TempTestDir (withTestDir) tests :: [TestTree] tests = diff --git a/fourmolu.yaml b/fourmolu.yaml index 6ba33930bd..acd4a16632 100644 --- a/fourmolu.yaml +++ b/fourmolu.yaml @@ -7,8 +7,21 @@ respectful: true # don't be too opinionated about newlines etc. haddock-style: single-line # '--' vs. '{-' haddock-style-module: single-line newlines-between-decls: 1 # number of newlines between top-level declarations -fixities: [] function-arrows: leading single-constraint-parens: never in-style: right-align let-style: auto + +fixities: + # Distribution.Compat.Parsing + - infixr 0 <?> + # Distribution.FieldGrammar + - infixl 5 ^^^ + # Distribution.Types.InstalledPackageInfo.FieldGrammar + - infixl 4 <@> + +reexports: + - module Distribution.Client.Compat.Prelude exports Distribution.Compat.Prelude.Internal + - module Distribution.Compat.Prelude.Internal exports Distribution.Compat.Prelude + - module Distribution.Compat.Prelude exports Prelude + - module Distribution.Compat.Prelude exports Control.Applicative diff --git a/templates/SPDX.LicenseExceptionId.template.hs b/templates/SPDX.LicenseExceptionId.template.hs index d18641c376..5881bec600 100644 --- a/templates/SPDX.LicenseExceptionId.template.hs +++ b/templates/SPDX.LicenseExceptionId.template.hs @@ -1,3 +1,4 @@ +{- FOURMOLU_DISABLE -} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.SPDX.LicenseExceptionId ( diff --git a/templates/SPDX.LicenseId.template.hs b/templates/SPDX.LicenseId.template.hs index 9aa5d2c173..648625271f 100644 --- a/templates/SPDX.LicenseId.template.hs +++ b/templates/SPDX.LicenseId.template.hs @@ -1,3 +1,4 @@ +{- FOURMOLU_DISABLE -} {-# LANGUAGE DeriveDataTypeable #-} module Distribution.SPDX.LicenseId ( LicenseId (..), -- GitLab