packages feed

ghcide-2.0.0.0: ghcide.cabal

cabal-version:      3.0
build-type:         Simple
category:           Development
name:               ghcide
version:            2.0.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 == 8.10.7 || == 9.0.2 || == 9.2.5
extra-source-files: README.md CHANGELOG.md
                    test/data/**/*.project
                    test/data/**/*.cabal
                    test/data/**/*.yaml
                    test/data/**/*.hs
                    test/data/**/*.hs-boot

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

flag ghc-patched-unboxed-bytecode
    description: The GHC version we link against supports unboxed sums and tuples in bytecode
    default:     False
    manual:      True

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

library
    default-language:   Haskell2010
    build-depends:
        aeson,
        aeson-pretty,
        array,
        async,
        base == 4.*,
        binary,
        bytestring,
        case-insensitive,
        co-log-core,
        containers,
        data-default,
        deepseq,
        directory,
        dependent-map,
        dependent-sum,
        dlist,
        exceptions,
        extra >= 1.7.4,
        enummapset,
        filepath,
        fingertree,
        focus,
        ghc-trace-events,
        Glob,
        haddock-library >= 1.8 && < 1.12,
        hashable,
        hie-compat ^>= 0.3.0.0,
        hls-plugin-api == 2.0.0.0,
        lens,
        list-t,
        hiedb == 0.4.3.*,
        lsp-types ^>= 1.6.0.0,
        lsp ^>= 1.6.0.0 ,
        mtl,
        optparse-applicative,
        parallel,
        prettyprinter-ansi-terminal,
        prettyprinter >= 1.7,
        random,
        regex-tdfa >= 1.3.1.0,
        text-rope,
        safe-exceptions,
        hls-graph == 2.0.0.0,
        sorted-list,
        sqlite-simple,
        stm,
        stm-containers,
        syb,
        text,
        time,
        transformers,
        unordered-containers >= 0.2.10.0,
        vector,
        Diff ^>=0.4.0,
        vector,
        opentelemetry >=0.6.1,
        unliftio >= 0.2.6,
        unliftio-core,
        ghc-boot-th,
        ghc-boot,
        ghc >= 8.10,
        ghc-check >=0.5.0.8,
        ghc-paths,
        cryptohash-sha1 >=0.11.100 && <0.12,
        hie-bios == 0.12.0,
        -- implicit-hie 0.1.3.0 introduced an unexpected behavioral change.
        -- https://github.com/Avi-D-coder/implicit-hie/issues/50
        -- to make sure ghcide behaves in a desirable way, we put implicit-hie
        -- fake dependency here.
        implicit-hie < 0.1.3,
        implicit-hie-cradle ^>= 0.3.0.5 || ^>= 0.5,
        base16-bytestring >=0.1.1 && <1.1
    if os(windows)
      build-depends:
        Win32
    else
      build-depends:
        unix

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

    hs-source-dirs:
        src
        session-loader
    exposed-modules:
        Control.Concurrent.Strict
        Generics.SYB.GHC
        Development.IDE
        Development.IDE.Main
        Development.IDE.Core.Actions
        Development.IDE.Main.HeapStats
        Development.IDE.Core.Debouncer
        Development.IDE.Core.FileStore
        Development.IDE.Core.FileUtils
        Development.IDE.Core.IdeConfiguration
        Development.IDE.Core.OfInterest
        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.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.Core.Compile
        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.Monitoring.EKG
        Development.IDE.LSP.HoverDefinition
        Development.IDE.LSP.LanguageServer
        Development.IDE.LSP.Notifications
        Development.IDE.LSP.Outline
        Development.IDE.LSP.Server
        Development.IDE.Session
        Development.IDE.Spans.Common
        Development.IDE.Spans.Documentation
        Development.IDE.Spans.AtPoint
        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.Logger
        Development.IDE.Types.Monitoring
        Development.IDE.Monitoring.OpenTelemetry
        Development.IDE.Types.Options
        Development.IDE.Types.Shake
        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
        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
                -Wno-name-shadowing
                -Wincomplete-uni-patterns
                -Wno-unticked-promoted-constructors
                -fno-ignore-asserts

    if flag(ghc-patched-unboxed-bytecode)
      cpp-options: -DGHC_PATCHED_UNBOXED_BYTECODE

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

    if flag(ekg)
        build-depends:
            ekg-wai,
            ekg-core,
        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.*

    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
                -- allow user RTS overrides
                -rtsopts
                -- disable idle GC
                -- increase nursery size
                -- Enable collection of heap statistics
                "-with-rtsopts=-I0 -A128M -T"
    main-is: Main.hs
    build-depends:
        base == 4.*,
        data-default,
        extra,
        gitrev,
        lsp,
        lsp-types,
        hls-plugin-api,
        ghcide,
        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-wai,
            ekg-core,
        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,
        extra,
        filepath,
        fuzzy,
        --------------------------------------------------------------
        -- 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.
        ghc,
        --------------------------------------------------------------
        ghcide,
        lsp,
        lsp-types,
        hls-plugin-api,
        lens,
        list-t,
        lsp-test ^>= 0.14,
        monoid-subclasses,
        network-uri,
        QuickCheck,
        random,
        regex-tdfa ^>= 1.3.1,
        shake,
        sqlite-simple,
        stm,
        stm-containers,
        tasty,
        tasty-expected-failure,
        tasty-hunit >= 0.10,
        tasty-quickcheck,
        tasty-rerun,
        text,
        text-rope,
        unordered-containers,
    if impl(ghc < 9.2)
      build-depends:
          record-dot-preprocessor,
          record-hasfield
    if impl(ghc < 9.3)
       build-depends:  ghc-typelits-knownnat
    if impl(ghc >= 9)
        ghc-options: -Wunused-packages
    hs-source-dirs: test/cabal test/exe test/src
    ghc-options: -threaded -Wall -Wno-name-shadowing -O0 -Wno-unticked-promoted-constructors
    main-is: Main.hs
    other-modules:
        Development.IDE.Test.Runfiles
        FuzzySearch
        Progress
        HieDbRetry
        Development.IDE.Test
        Development.IDE.Test.Diagnostic
    default-extensions:
        BangPatterns
        DeriveFunctor
        DeriveGeneric
        FlexibleContexts
        GeneralizedNewtypeDeriving
        LambdaCase
        NamedFieldPuns
        OverloadedStrings
        RecordWildCards
        ScopedTypeVariables
        StandaloneDeriving
        TupleSections
        TypeApplications
        ViewPatterns