108 lines
3.9 KiB
Haskell
108 lines
3.9 KiB
Haskell
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
|
|
-- Copyright : Isaac Jones 2003-2004
|
|
-- Copyright : (c) The University of Glasgow 2004
|
|
-- Copyright : Duncan Coutts 2008
|
|
{- All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are
|
|
met:
|
|
|
|
* Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above
|
|
copyright notice, this list of conditions and the following
|
|
disclaimer in the documentation and/or other materials provided
|
|
with the distribution.
|
|
|
|
* Neither the name of Isaac Jones nor the names of other
|
|
contributors may be used to endorse or promote products derived
|
|
from this software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -}
|
|
|
|
-- | ComponentLocalBuildInfo for Cabal >= 1.22
|
|
module Language.Haskell.GhcMod.CabalConfig.Cabal22 (
|
|
ComponentLocalBuildInfo
|
|
, PackageIdentifier(..)
|
|
, PackageName(..)
|
|
, componentPackageDeps
|
|
, componentLibraries
|
|
) where
|
|
|
|
import Distribution.Package (InstalledPackageId)
|
|
import Data.Version (Version)
|
|
import Data.Map (Map)
|
|
|
|
data LibraryName = LibraryName String
|
|
deriving (Read, Show)
|
|
|
|
newtype PackageName = PackageName { unPackageName :: String }
|
|
deriving (Read, Show, Ord, Eq)
|
|
|
|
data PackageIdentifier
|
|
= PackageIdentifier {
|
|
pkgName :: PackageName,
|
|
pkgVersion :: Version
|
|
}
|
|
deriving (Read, Show)
|
|
|
|
type PackageId = PackageIdentifier
|
|
|
|
newtype ModuleName = ModuleName [String]
|
|
deriving (Read, Show)
|
|
|
|
data ModuleRenaming = ModuleRenaming Bool [(ModuleName, ModuleName)]
|
|
deriving (Read, Show)
|
|
|
|
data OriginalModule
|
|
= OriginalModule {
|
|
originalPackageId :: InstalledPackageId,
|
|
originalModuleName :: ModuleName
|
|
}
|
|
deriving (Read, Show)
|
|
|
|
data ExposedModule
|
|
= ExposedModule {
|
|
exposedName :: ModuleName,
|
|
exposedReexport :: Maybe OriginalModule,
|
|
exposedSignature :: Maybe OriginalModule -- This field is unused for now.
|
|
}
|
|
deriving (Read, Show)
|
|
|
|
data ComponentLocalBuildInfo
|
|
= LibComponentLocalBuildInfo {
|
|
-- | Resolved internal and external package dependencies for this component.
|
|
-- The 'BuildInfo' specifies a set of build dependencies that must be
|
|
-- satisfied in terms of version ranges. This field fixes those dependencies
|
|
-- to the specific versions available on this machine for this compiler.
|
|
componentPackageDeps :: [(InstalledPackageId, PackageId)],
|
|
componentExposedModules :: [ExposedModule],
|
|
componentPackageRenaming :: Map PackageName ModuleRenaming,
|
|
componentLibraries :: [LibraryName]
|
|
}
|
|
| ExeComponentLocalBuildInfo {
|
|
componentPackageDeps :: [(InstalledPackageId, PackageId)],
|
|
componentPackageRenaming :: Map PackageName ModuleRenaming
|
|
}
|
|
| TestComponentLocalBuildInfo {
|
|
componentPackageDeps :: [(InstalledPackageId, PackageId)],
|
|
componentPackageRenaming :: Map PackageName ModuleRenaming
|
|
}
|
|
| BenchComponentLocalBuildInfo {
|
|
componentPackageDeps :: [(InstalledPackageId, PackageId)],
|
|
componentPackageRenaming :: Map PackageName ModuleRenaming
|
|
}
|
|
deriving (Read, Show)
|