packages feed

ghcide-2.6.0.0: ghcide.cabal

cabal-version:      3.0
build-type:         Simple
category:           Development
name:               ghcide
version:            2.6.0.0
license:            Apache-2.0
license-file:       LICENSE
author:             Digital Asset and Ghcide contributors
maintainer:         Ghcide contributors
copyright:          Digital Asset and Ghcide contributors 2018-2020
synopsis:           The core of an IDE
description:        A library for building Haskell IDE's on top of the GHC API.
homepage:
  https://github.com/haskell/haskell-language-server/tree/master/ghcide#readme

bug-reports:        https://github.com/haskell/haskell-language-server/issues
tested-with:        GHC ==9.0.2 || ==9.2.5
extra-source-files:
  CHANGELOG.md
  README.md
  test/data/**/*.cabal
  test/data/**/*.hs
  test/data/**/*.hs-boot
  test/data/**/*.project
  test/data/**/*.yaml

source-repository head
  type:     git
  location: https://github.com/haskell/haskell-language-server.git

flag ekg
  description:
    Enable EKG monitoring of the build graph and other metrics on port 8999

  default:     False
  manual:      True

flag pedantic
  description: Enable -Werror
  default:     False
  manual:      True

library
  default-language:   Haskell2010
  build-depends:
    , aeson
    , array
    , async
    , base                         >=4        && <5
    , base16-bytestring            >=0.1.1    && <1.1
    , binary
    , bytestring
    , case-insensitive
    , co-log-core
    , containers
    , cryptohash-sha1              >=0.11.100 && <0.12
    , data-default
    , deepseq
    , dependent-map
    , dependent-sum
    , Diff                         ^>=0.4.0
    , directory
    , dlist
    , enummapset
    , exceptions
    , extra                        >=1.7.14
    , filepath
    , fingertree
    , focus                        >=1.0.3.2
    , ghc                          >=9.0
    , ghc-boot
    , ghc-boot-th
    , ghc-check                    >=0.5.0.8
    , ghc-paths
    , ghc-trace-events
    , Glob
    , haddock-library              >=1.8      && <1.12
    , hashable
    , hie-bios                     ==0.13.1
    , hie-compat                   ^>=0.3.0.0
    , hiedb                        ^>= 0.5.0.1
    , hls-graph                    == 2.6.0.0
    , hls-plugin-api               == 2.6.0.0
    , implicit-hie                 >= 0.1.4.0 && < 0.1.5
    , lens
    , list-t
    , lsp                          ^>=2.3.0.0
    , lsp-types                    ^>=2.1.0.0
    , mtl
    , opentelemetry                >=0.6.1
    , optparse-applicative
    , parallel
    , prettyprinter                >=1.7
    , prettyprinter-ansi-terminal
    , random
    , regex-tdfa                   >=1.3.1.0
    , row-types
    , safe-exceptions
    , sorted-list
    , sqlite-simple
    , stm
    , stm-containers
    , syb
    , text
    , text-rope
    , time
    , transformers
    , unliftio                     >=0.2.6
    , unliftio-core
    , unordered-containers         >=0.2.10.0
    , vector

  if os(windows)
    build-depends: Win32

  else
    build-depends: unix

  default-extensions:
    BangPatterns
    DataKinds
    DeriveFoldable
    DeriveFunctor
    DeriveGeneric
    DeriveTraversable
    FlexibleContexts
    GeneralizedNewtypeDeriving
    KindSignatures
    LambdaCase
    NamedFieldPuns
    OverloadedStrings
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    TupleSections
    TypeApplications
    TypeOperators
    ViewPatterns

  hs-source-dirs:     src session-loader
  exposed-modules:
    Control.Concurrent.Strict
    Development.IDE
    Development.IDE.Core.Actions
    Development.IDE.Core.Compile
    Development.IDE.Core.Debouncer
    Development.IDE.Core.FileStore
    Development.IDE.Core.FileUtils
    Development.IDE.Core.IdeConfiguration
    Development.IDE.Core.OfInterest
    Development.IDE.Core.PluginUtils
    Development.IDE.Core.PositionMapping
    Development.IDE.Core.Preprocessor
    Development.IDE.Core.ProgressReporting
    Development.IDE.Core.Rules
    Development.IDE.Core.RuleTypes
    Development.IDE.Core.Service
    Development.IDE.Core.Shake
    Development.IDE.Core.Tracing
    Development.IDE.Core.UseStale
    Development.IDE.GHC.Compat
    Development.IDE.GHC.Compat.Core
    Development.IDE.GHC.Compat.CmdLine
    Development.IDE.GHC.Compat.Env
    Development.IDE.GHC.Compat.Iface
    Development.IDE.GHC.Compat.Logger
    Development.IDE.GHC.Compat.Outputable
    Development.IDE.GHC.Compat.Parser
    Development.IDE.GHC.Compat.Plugins
    Development.IDE.GHC.Compat.Units
    Development.IDE.GHC.Compat.Util
    Development.IDE.GHC.CoreFile
    Development.IDE.GHC.Error
    Development.IDE.GHC.Orphans
    Development.IDE.GHC.Util
    Development.IDE.Import.DependencyInformation
    Development.IDE.Import.FindImports
    Development.IDE.LSP.HoverDefinition
    Development.IDE.LSP.LanguageServer
    Development.IDE.LSP.Notifications
    Development.IDE.LSP.Outline
    Development.IDE.LSP.Server
    Development.IDE.Main
    Development.IDE.Main.HeapStats
    Development.IDE.Monitoring.EKG
    Development.IDE.Monitoring.OpenTelemetry
    Development.IDE.Plugin
    Development.IDE.Plugin.Completions
    Development.IDE.Plugin.Completions.Types
    Development.IDE.Plugin.HLS
    Development.IDE.Plugin.HLS.GhcIde
    Development.IDE.Plugin.Test
    Development.IDE.Plugin.TypeLenses
    Development.IDE.Session
    Development.IDE.Session.Diagnostics
    Development.IDE.Session.Implicit
    Development.IDE.Spans.AtPoint
    Development.IDE.Spans.Common
    Development.IDE.Spans.Documentation
    Development.IDE.Spans.LocalBindings
    Development.IDE.Spans.Pragmas
    Development.IDE.Types.Diagnostics
    Development.IDE.Types.Exports
    Development.IDE.Types.HscEnvEq
    Development.IDE.Types.KnownTargets
    Development.IDE.Types.Location
    Development.IDE.Types.Monitoring
    Development.IDE.Types.Options
    Development.IDE.Types.Shake
    Generics.SYB.GHC
    Text.Fuzzy.Parallel

  other-modules:
    Development.IDE.Core.FileExists
    Development.IDE.GHC.CPP
    Development.IDE.GHC.Warnings
    Development.IDE.Plugin.Completions.Logic
    Development.IDE.Session.VersionCheck
    Development.IDE.Types.Action

  ghc-options:
    -Wall -Wincomplete-uni-patterns -Wno-unticked-promoted-constructors
    -Wunused-packages -fno-ignore-asserts

  if flag(pedantic)
    -- We eventually want to build with Werror fully, but we haven't
    -- finished purging the warnings, so some are set to not be errors
    -- for now
    ghc-options:
      -Werror -Wwarn=unused-packages -Wwarn=unrecognised-pragmas
      -Wwarn=dodgy-imports -Wwarn=missing-signatures
      -Wwarn=duplicate-exports -Wwarn=dodgy-exports
      -Wwarn=incomplete-patterns -Wwarn=overlapping-patterns
      -Wwarn=incomplete-record-updates

  -- ambiguous-fields is only understood by GHC >= 9.2, so we only disable it
  -- then. The above comment goes for here too -- this should be understood to
  -- be temporary until we can remove these warnings.
  if (impl(ghc >=9.2) && flag(pedantic))
    ghc-options: -Wwarn=ambiguous-fields

  if flag(ekg)
    build-depends:
      , ekg-core
      , ekg-wai

    cpp-options:   -DMONITORING_EKG

flag test-exe
  description: Build the ghcide-test-preprocessor executable
  default:     True

executable ghcide-test-preprocessor
  default-language: Haskell2010
  hs-source-dirs:   test/preprocessor
  ghc-options:      -Wall -Wno-name-shadowing
  main-is:          Main.hs
  build-depends:    base >=4 && <5

  if !flag(test-exe)
    buildable: False

flag executable
  description: Build the ghcide executable
  default:     True

executable ghcide
  default-language:   Haskell2010
  hs-source-dirs:     exe
  ghc-options:
    -threaded -Wall -Wincomplete-uni-patterns -Wno-name-shadowing
    -rtsopts "-with-rtsopts=-I0 -A128M -T"

  -- allow user RTS overrides
  -- disable idle GC
  -- increase nursery size
  -- Enable collection of heap statistics
  main-is:            Main.hs
  build-depends:
    , base                  >=4 && <5
    , data-default
    , extra
    , ghcide
    , gitrev
    , hls-plugin-api
    , lsp
    , lsp-types
    , optparse-applicative

  other-modules:
    Arguments
    Paths_ghcide

  autogen-modules:    Paths_ghcide
  default-extensions:
    BangPatterns
    DeriveFunctor
    DeriveGeneric
    FlexibleContexts
    GeneralizedNewtypeDeriving
    LambdaCase
    NamedFieldPuns
    OverloadedStrings
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    TupleSections
    TypeApplications
    ViewPatterns

  if !flag(executable)
    buildable: False

  if flag(ekg)
    build-depends:
      , ekg-core
      , ekg-wai

    cpp-options:   -DMONITORING_EKG

  if impl(ghc >=9)
    ghc-options: -Wunused-packages

test-suite ghcide-tests
  type:               exitcode-stdio-1.0
  default-language:   Haskell2010
  build-tool-depends:
    , ghcide:ghcide
    , ghcide:ghcide-test-preprocessor
    , implicit-hie:gen-hie

  build-depends:
    , aeson
    , async
    , base
    , containers
    , data-default
    , directory
    , enummapset
    , extra
    , filepath
    , fuzzy
    , ghc
    , ghcide
    , hls-plugin-api
    , lens
    , list-t
    , lsp
    , lsp-test                ^>=0.16.0.0
    , lsp-types
    , monoid-subclasses
    , mtl
    , network-uri
    , QuickCheck
    , random
    , regex-tdfa              ^>=1.3.1
    , row-types
    , shake
    , sqlite-simple
    , stm
    , stm-containers
    , tasty
    , tasty-expected-failure
    , tasty-hunit             >=0.10
    , tasty-quickcheck
    , tasty-rerun
    , text
    , text-rope
    , unordered-containers

  --------------------------------------------------------------
  -- The MIN_VERSION_ghc macro relies on MIN_VERSION pragmas
  -- which require depending on ghc. So the tests need to depend
  -- on ghc if they need to use MIN_VERSION_ghc. Maybe a
  -- better solution can be found, but this is a quick solution
  -- which works for now.
  --------------------------------------------------------------
  if impl(ghc <9.2)
    build-depends:
      , record-dot-preprocessor
      , record-hasfield

  if impl(ghc <9.3)
    build-depends: ghc-typelits-knownnat

  hs-source-dirs:     test/cabal test/exe test/src
  ghc-options:
    -threaded -Wall -Wno-name-shadowing -O0
    -Wno-unticked-promoted-constructors -Wunused-packages

  main-is:            Main.hs
  other-modules:
    AsyncTests
    BootTests
    ClientSettingsTests
    CodeLensTests
    CompletionTests
    CPPTests
    CradleTests
    DependentFileTest
    Development.IDE.Test
    Development.IDE.Test.Diagnostic
    Development.IDE.Test.Runfiles
    DiagnosticTests
    ExceptionTests
    FindDefinitionAndHoverTests
    FuzzySearch
    GarbageCollectionTests
    HaddockTests
    HieDbRetry
    HighlightTests
    IfaceTests
    InitializeResponseTests
    LogType
    NonLspCommandLine
    OpenCloseTest
    OutlineTests
    PluginParsedResultTests
    PluginSimpleTests
    PositionMappingTests
    PreprocessorTests
    Progress
    ReferenceTests
    RootUriTests
    SafeTests
    SymlinkTests
    TestUtils
    THTests
    UnitTests
    WatchedFileTests

  -- Tests that have been pulled out of the main file
  default-extensions:
    BangPatterns
    DeriveFunctor
    DeriveGeneric
    FlexibleContexts
    GeneralizedNewtypeDeriving
    LambdaCase
    NamedFieldPuns
    OverloadedStrings
    RecordWildCards
    ScopedTypeVariables
    StandaloneDeriving
    TupleSections
    TypeApplications
    ViewPatterns