diff --git a/Makefile b/Makefile index cd91ea89e2..034a2d33eb 100644 --- a/Makefile +++ b/Makefile @@ -81,7 +81,8 @@ profile: @stack build @cd ../application/purs-projects && \ (git diff --quiet && git diff --cached --quiet && git checkout 567cde598728d6a02fd22972c888e5194af383c4 || { echo "❌ dirty working directory on purs-projects, aborting checkout."; exit 1; }) && \ - spago install && \ + rm -rf .spago && \ + spago fetch && \ spago sources > .spago/sources.txt && \ rm -rf output diff --git a/profile-admin.txt b/profile-admin.txt index 6fb92689d8..e05582b977 100644 --- a/profile-admin.txt +++ b/profile-admin.txt @@ -1,27 +1,27 @@ 'purs' 'compile' '--source-globs-file' '.spago/sources.txt' +RTS '-N' '-A256m' '-n16m' '-sprofile.txt' - 764,715,301,176 bytes allocated in the heap - 71,684,539,216 bytes copied during GC - 5,771,888,480 bytes maximum residency (8 sample(s)) - 57,078,368 bytes maximum slop - 19290 MiB total memory in use (0 MB lost due to fragmentation) + 764,684,334,200 bytes allocated in the heap + 66,592,890,256 bytes copied during GC + 5,965,029,568 bytes maximum residency (7 sample(s)) + 55,635,776 bytes maximum slop + 19931 MiB total memory in use (0 MB lost due to fragmentation) Tot time (elapsed) Avg pause Max pause - Gen 0 347 colls, 347 par 109.302s 25.584s 0.0737s 0.8975s - Gen 1 8 colls, 7 par 33.883s 6.849s 0.8561s 2.4644s + Gen 0 344 colls, 344 par 109.657s 24.231s 0.0704s 0.9072s + Gen 1 7 colls, 6 par 27.205s 6.308s 0.9011s 2.6484s - Parallel GC work balance: 87.94% (serial 0%, perfect 100%) + Parallel GC work balance: 87.29% (serial 0%, perfect 100%) - TASKS: 63 (1 bound, 62 peak workers (62 total), using -N10) + TASKS: 61 (1 bound, 60 peak workers (60 total), using -N10) SPARKS: 7516 (7516 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled) - INIT time 0.003s ( 0.156s elapsed) - MUT time 340.588s ( 94.439s elapsed) - GC time 143.185s ( 32.433s elapsed) - EXIT time 0.108s ( 0.004s elapsed) - Total time 483.883s (127.032s elapsed) + INIT time 0.003s ( 0.153s elapsed) + MUT time 345.596s ( 91.867s elapsed) + GC time 136.862s ( 30.539s elapsed) + EXIT time 0.170s ( 0.001s elapsed) + Total time 482.631s (122.559s elapsed) - Alloc rate 2,245,281,654 bytes per MUT second + Alloc rate 2,212,653,609 bytes per MUT second - Productivity 70.4% of total user, 74.3% of total elapsed + Productivity 71.6% of total user, 75.0% of total elapsed diff --git a/profile.txt b/profile.txt index e6067bb51e..bb86538d5f 100644 --- a/profile.txt +++ b/profile.txt @@ -1,27 +1,27 @@ 'purs' 'compile' '--source-globs-file' '.spago/sources.txt' +RTS '-N' '-A256m' '-n16m' '-sprofile.txt' -1,514,670,705,400 bytes allocated in the heap - 100,283,741,944 bytes copied during GC - 3,311,678,824 bytes maximum residency (14 sample(s)) - 47,472,136 bytes maximum slop - 11326 MiB total memory in use (0 MB lost due to fragmentation) +1,514,656,409,184 bytes allocated in the heap + 98,339,524,248 bytes copied during GC + 3,076,113,760 bytes maximum residency (13 sample(s)) + 48,308,232 bytes maximum slop + 11349 MiB total memory in use (0 MB lost due to fragmentation) Tot time (elapsed) Avg pause Max pause - Gen 0 693 colls, 693 par 196.375s 42.165s 0.0608s 0.5568s - Gen 1 14 colls, 13 par 37.234s 5.165s 0.3689s 0.5430s + Gen 0 697 colls, 697 par 202.812s 43.916s 0.0630s 0.6948s + Gen 1 13 colls, 12 par 32.681s 4.654s 0.3580s 0.5375s - Parallel GC work balance: 84.01% (serial 0%, perfect 100%) + Parallel GC work balance: 83.67% (serial 0%, perfect 100%) - TASKS: 68 (1 bound, 67 peak workers (67 total), using -N10) + TASKS: 69 (1 bound, 66 peak workers (68 total), using -N10) SPARKS: 7516 (7516 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled) - INIT time 0.003s ( 0.191s elapsed) - MUT time 692.332s (136.117s elapsed) - GC time 233.609s ( 47.330s elapsed) - EXIT time 0.053s ( 0.009s elapsed) - Total time 925.997s (183.648s elapsed) + INIT time 0.003s ( 0.157s elapsed) + MUT time 702.424s (133.463s elapsed) + GC time 235.493s ( 48.571s elapsed) + EXIT time 0.067s ( 0.008s elapsed) + Total time 937.987s (182.199s elapsed) - Alloc rate 2,187,780,137 bytes per MUT second + Alloc rate 2,156,328,748 bytes per MUT second - Productivity 74.8% of total user, 74.1% of total elapsed + Productivity 74.9% of total user, 73.3% of total elapsed diff --git a/purescript.cabal b/purescript.cabal index a1bac408ff..02f64daa51 100644 --- a/purescript.cabal +++ b/purescript.cabal @@ -276,7 +276,6 @@ library Language.PureScript.CST.Positions Language.PureScript.CST.Print Language.PureScript.Ide.ToIde - Language.PureScript.Ide.ToI Language.PureScript.CST.Traversals Language.PureScript.CST.Traversals.Type Language.PureScript.CST.Types diff --git a/src/Data/InternedName.hs b/src/Data/InternedName.hs index 3a71d1f25a..21236e4c1a 100644 --- a/src/Data/InternedName.hs +++ b/src/Data/InternedName.hs @@ -30,4 +30,4 @@ instance Serialise InternedName where decode = fmap internName decode instance NFData InternedName where - rnf (InternedName name) = () + rnf (InternedName _) = () diff --git a/src/Language/PureScript/Ide.hs b/src/Language/PureScript/Ide.hs index ac372ce452..d278b8be59 100644 --- a/src/Language/PureScript/Ide.hs +++ b/src/Language/PureScript/Ide.hs @@ -20,7 +20,7 @@ module Language.PureScript.Ide import Protolude hiding (moduleName) -import qualified Language.PureScript.Ide.Imports as IDEImports +import Language.PureScript.Ide.Imports qualified as IDEImports import "monad-logger" Control.Monad.Logger (MonadLogger, logWarnN) import Data.Map qualified as Map import Data.Text qualified as T diff --git a/src/Language/PureScript/Ide/Rebuild.hs b/src/Language/PureScript/Ide/Rebuild.hs index 9b82cc87d1..4ad36942b7 100644 --- a/src/Language/PureScript/Ide/Rebuild.hs +++ b/src/Language/PureScript/Ide/Rebuild.hs @@ -38,9 +38,6 @@ import Unsafe.Coerce (unsafeCoerce) import Database.SQLite.Simple (Query(fromQuery), ToRow, SQLData (SQLText)) import Data.String (String) import Codec.Serialise (deserialise) -import Language.PureScript (ModuleName) -import Language.PureScript.Constants.Prim (primModules) -import Data.Foldable (concat) -- | Given a filepath performs the following steps: -- @@ -68,7 +65,7 @@ rebuildFile -> (ReaderT IdeEnvironment (LoggingT IO) () -> m ()) -- ^ A runner for the second build with open exports -> m Success -rebuildFile file actualFile codegenTargets runOpenBuild = do +rebuildFile file actualFile codegenTargets _ = do (fp, input) <- case List.stripPrefix "data:" file of Just source -> pure ("", Text.pack source) @@ -249,7 +246,7 @@ sortExterns' => FilePath -> P.Module -> m [P.ExternsFile] -sortExterns' outputDir m = do +sortExterns' _ m = do let P.Module _ _ _ declarations _ = m let moduleDependencies = declarations >>= \case P.ImportDeclaration _ importName _ _ -> [importName] diff --git a/src/Language/PureScript/Ide/State.hs b/src/Language/PureScript/Ide/State.hs index d8604e953e..73e94519c1 100644 --- a/src/Language/PureScript/Ide/State.hs +++ b/src/Language/PureScript/Ide/State.hs @@ -61,7 +61,6 @@ import Language.PureScript.Ide.Types import Language.PureScript.Ide.Util (discardAnn, opNameT, properNameT, runLogger) import System.Directory (getModificationTime) import Database.SQLite.Simple qualified as SQLite -import Debug.Trace qualified as Debug import Data.Text qualified as T -- | Resets all State inside psc-ide @@ -258,7 +257,7 @@ toIdeDeclarationAnn :: P.Module -> ExternsFile -> [IdeDeclarationAnn] toIdeDeclarationAnn m e = results where asts = extractAstInformation m - (moduleDeclarations, reexportRefs) = convertExterns e + (moduleDeclarations, _) = convertExterns e results = moduleDeclarations & resolveDataConstructorsForModule diff --git a/src/Language/PureScript/Ide/ToI.hs b/src/Language/PureScript/Ide/ToI.hs deleted file mode 100644 index a4a52a5c33..0000000000 --- a/src/Language/PureScript/Ide/ToI.hs +++ /dev/null @@ -1,286 +0,0 @@ ------------------------------------------------------------------------------ --- --- Module : Language.PureScript.Ide.State --- Description : Functions to access psc-ide's state --- Copyright : Christoph Hegemann 2016 --- License : MIT (http://opensource.org/licenses/MIT) --- --- Maintainer : Christoph Hegemann --- Stability : experimental --- --- | --- Functions to access psc-ide's state ------------------------------------------------------------------------------ - -{-# LANGUAGE TypeApplications #-} - -module Language.PureScript.Ide.ToI where - -import Protolude hiding (moduleName, unzip) - -import Control.Concurrent.STM (TVar, modifyTVar, readTVar, readTVarIO, writeTVar) -import Control.Lens (Ixed(..), preview, view, (%~), (.~), (^.)) -import Data.IORef (readIORef, writeIORef) -import Data.Map.Lazy qualified as Map -import Data.Time.Clock (UTCTime) -import Data.Zip (unzip) -import Language.PureScript.Docs.Convert.Single (convertComments) -import Language.PureScript.Externs (ExternsDeclaration(..), ExternsFile(..)) -import Language.PureScript.Ide.Externs (convertExterns) -import Language.PureScript.Ide.SourceFile (extractAstInformation) -import Language.PureScript.Ide.Types -import Language.PureScript.Ide.Util (discardAnn, displayTimeSpec, logPerf, opNameT, properNameT, runLogger) -import System.Directory (getModificationTime) -import Database.SQLite.Simple qualified as SQLite -import Debug.Trace qualified as Debug -import Language.PureScript.AST.Declarations qualified as P -import Language.PureScript.AST.SourcePos qualified as P -import Language.PureScript.Names qualified as P -import Language.PureScript.Comments qualified as P -import Language.PureScript.Externs qualified as P -import Language.PureScript.Ide.Reexports (resolveReexports) - - --- toI :: P.Module -> ExternsFile -> [IdeDeclarationAnn] --- toI m e = do --- let externs = Map.singleton (P.getModuleName m) e --- let modules = Map.singleton (P.getModuleName m) (m, "adfasd") --- let asts = map (extractAstInformation . fst) modules --- let (moduleDeclarations, reexportRefs) = unzip (Map.map convertExterns externs) --- results = --- moduleDeclarations --- & map resolveDataConstructorsForModule --- & resolveLocations asts --- & resolveDocumentation (map fst modules) --- & resolveInstances externs --- & resolveOperators --- & resolveReexports reexportRefs --- fromMaybe [] $ Map.lookup (P.getModuleName m) (map reResolved results) --- --- toIdeDeclarationAnn :: P.Module -> ExternsFile -> [IdeDeclarationAnn] --- toIdeDeclarationAnn m e = results --- where --- asts = extractAstInformation m --- (moduleDeclarations, reexportRefs) = convertExterns e --- results = --- moduleDeclarations --- & resolveDataConstructorsForModule --- & resolveLocationsForModule asts --- & resolveDocumentationForModule m --- -- & resolveInstances externs --- -- & resolveOperators --- -- & resolveReexports reexportRefs --- --- resolveLocations --- :: ModuleMap (DefinitionSites P.SourceSpan, TypeAnnotations) --- -> ModuleMap [IdeDeclarationAnn] --- -> ModuleMap [IdeDeclarationAnn] --- resolveLocations asts = --- Map.mapWithKey (\mn decls -> --- maybe decls (flip resolveLocationsForModule decls) (Map.lookup mn asts)) --- --- resolveLocationsForModule --- :: (DefinitionSites P.SourceSpan, TypeAnnotations) --- -> [IdeDeclarationAnn] --- -> [IdeDeclarationAnn] --- resolveLocationsForModule (defs, types) = --- map convertDeclaration --- where --- convertDeclaration :: IdeDeclarationAnn -> IdeDeclarationAnn --- convertDeclaration (IdeDeclarationAnn ann d) = convertDeclaration' --- annotateFunction --- annotateValue --- annotateDataConstructor --- annotateType --- annotateType -- type classes live in the type namespace --- annotateModule --- d --- where --- annotateFunction x = IdeDeclarationAnn (ann { _annLocation = Map.lookup (IdeNamespaced IdeNSValue (P.runIdent x)) defs --- , _annTypeAnnotation = Map.lookup x types --- }) --- annotateValue x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSValue x) defs}) --- annotateDataConstructor x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSValue x) defs}) --- annotateType x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSType x) defs}) --- annotateModule x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSModule x) defs}) --- --- convertDeclaration' --- :: (P.Ident -> IdeDeclaration -> IdeDeclarationAnn) --- -> (Text -> IdeDeclaration -> IdeDeclarationAnn) --- -> (Text -> IdeDeclaration -> IdeDeclarationAnn) --- -> (Text -> IdeDeclaration -> IdeDeclarationAnn) --- -> (Text -> IdeDeclaration -> IdeDeclarationAnn) --- -> (Text -> IdeDeclaration -> IdeDeclarationAnn) --- -> IdeDeclaration --- -> IdeDeclarationAnn --- convertDeclaration' annotateFunction annotateValue annotateDataConstructor annotateType annotateClass annotateModule d = --- case d of --- IdeDeclValue v -> --- annotateFunction (v ^. ideValueIdent) d --- IdeDeclType t -> --- annotateType (t ^. ideTypeName . properNameT) d --- IdeDeclTypeSynonym s -> --- annotateType (s ^. ideSynonymName . properNameT) d --- IdeDeclDataConstructor dtor -> --- annotateDataConstructor (dtor ^. ideDtorName . properNameT) d --- IdeDeclTypeClass tc -> --- annotateClass (tc ^. ideTCName . properNameT) d --- IdeDeclValueOperator operator -> --- annotateValue (operator ^. ideValueOpName . opNameT) d --- IdeDeclTypeOperator operator -> --- annotateType (operator ^. ideTypeOpName . opNameT) d --- IdeDeclModule mn -> --- annotateModule (P.runModuleName mn) d --- --- resolveDocumentation --- :: ModuleMap P.Module --- -> ModuleMap [IdeDeclarationAnn] --- -> ModuleMap [IdeDeclarationAnn] --- resolveDocumentation modules = --- Map.mapWithKey (\mn decls -> --- maybe decls (flip resolveDocumentationForModule decls) (Map.lookup mn modules)) --- --- resolveDocumentationForModule --- :: P.Module --- -> [IdeDeclarationAnn] --- -> [IdeDeclarationAnn] --- resolveDocumentationForModule (P.Module _ moduleComments moduleName sdecls _) = --- map convertDecl --- where --- extractDeclComments :: P.Declaration -> [(P.Name, [P.Comment])] --- extractDeclComments = \case --- P.DataDeclaration (_, cs) _ ctorName _ ctors -> --- (P.TyName ctorName, cs) : map dtorComments ctors --- P.TypeClassDeclaration (_, cs) tyClassName _ _ _ members -> --- (P.TyClassName tyClassName, cs) : concatMap extractDeclComments members --- decl -> --- maybe [] (\name' -> [(name', snd (P.declSourceAnn decl))]) (name decl) --- --- comments :: Map P.Name [P.Comment] --- comments = Map.insert (P.ModName moduleName) moduleComments $ --- Map.fromListWith (flip (<>)) $ concatMap extractDeclComments sdecls --- --- dtorComments :: P.DataConstructorDeclaration -> (P.Name, [P.Comment]) --- dtorComments dcd = (P.DctorName (P.dataCtorName dcd), snd (P.dataCtorAnn dcd)) --- --- name :: P.Declaration -> Maybe P.Name --- name (P.TypeDeclaration d) = Just $ P.IdentName $ P.tydeclIdent d --- name decl = P.declName decl --- --- convertDecl :: IdeDeclarationAnn -> IdeDeclarationAnn --- convertDecl (IdeDeclarationAnn ann d) = --- convertDeclaration' --- (annotateValue . P.IdentName) --- (annotateValue . P.IdentName . P.Ident) --- (annotateValue . P.DctorName . P.ProperName) --- (annotateValue . P.TyName . P.ProperName) --- (annotateValue . P.TyClassName . P.ProperName) --- (annotateValue . P.ModName . P.moduleNameFromString) --- d --- where --- docs :: P.Name -> Text --- docs ident = fromMaybe "" $ convertComments =<< Map.lookup ident comments --- --- annotateValue ident = IdeDeclarationAnn (ann { _annDocumentation = Just $ docs ident }) --- --- resolveInstances --- :: ModuleMap P.ExternsFile --- -> ModuleMap [IdeDeclarationAnn] --- -> ModuleMap [IdeDeclarationAnn] --- resolveInstances externs declarations = --- Map.foldr (flip (foldr go)) declarations --- . Map.mapWithKey (\mn ef -> mapMaybe (extractInstances mn) (efDeclarations ef)) --- $ externs --- where --- extractInstances mn P.EDInstance{..} = --- case edInstanceClassName of --- P.Qualified (P.ByModuleName classModule) className -> --- Just (IdeInstance mn --- edInstanceName --- edInstanceTypes --- edInstanceConstraints, classModule, className) --- _ -> Nothing --- extractInstances _ _ = Nothing --- --- go --- :: (IdeInstance, P.ModuleName, P.ProperName 'P.ClassName) --- -> ModuleMap [IdeDeclarationAnn] --- -> ModuleMap [IdeDeclarationAnn] --- go (ideInstance, classModule, className) acc' = --- let --- matchTC = --- anyOf (idaDeclaration . _IdeDeclTypeClass . ideTCName) (== className) --- updateDeclaration = --- mapIf matchTC (idaDeclaration --- . _IdeDeclTypeClass --- . ideTCInstances --- %~ (ideInstance :)) --- in --- acc' & ix classModule %~ updateDeclaration --- --- resolveOperators --- :: ModuleMap [IdeDeclarationAnn] --- -> ModuleMap [IdeDeclarationAnn] --- resolveOperators modules = --- map (resolveOperatorsForModule modules) modules --- --- -- | Looks up the types and kinds for operators and assigns them to their --- -- declarations --- resolveOperatorsForModule --- :: ModuleMap [IdeDeclarationAnn] --- -> [IdeDeclarationAnn] --- -> [IdeDeclarationAnn] --- resolveOperatorsForModule modules = map (idaDeclaration %~ resolveOperator) --- where --- getDeclarations :: P.ModuleName -> [IdeDeclaration] --- getDeclarations moduleName = --- Map.lookup moduleName modules --- & foldMap (map discardAnn) --- --- resolveOperator (IdeDeclValueOperator op) --- | (P.Qualified (P.ByModuleName mn) (Left ident)) <- op ^. ideValueOpAlias = --- let t = getDeclarations mn --- & mapMaybe (preview _IdeDeclValue) --- & filter (anyOf ideValueIdent (== ident)) --- & map (view ideValueType) --- & listToMaybe --- in IdeDeclValueOperator (op & ideValueOpType .~ t) --- | (P.Qualified (P.ByModuleName mn) (Right dtor)) <- op ^. ideValueOpAlias = --- let t = getDeclarations mn --- & mapMaybe (preview _IdeDeclDataConstructor) --- & filter (anyOf ideDtorName (== dtor)) --- & map (view ideDtorType) --- & listToMaybe --- in IdeDeclValueOperator (op & ideValueOpType .~ t) --- resolveOperator (IdeDeclTypeOperator op) --- | P.Qualified (P.ByModuleName mn) properName <- op ^. ideTypeOpAlias = --- let k = getDeclarations mn --- & mapMaybe (preview _IdeDeclType) --- & filter (anyOf ideTypeName (== properName)) --- & map (view ideTypeKind) --- & listToMaybe --- in IdeDeclTypeOperator (op & ideTypeOpKind .~ k) --- resolveOperator x = x --- --- --- mapIf :: Functor f => (b -> Bool) -> (b -> b) -> f b -> f b --- mapIf p f = map (\x -> if p x then f x else x) --- --- resolveDataConstructorsForModule --- :: [IdeDeclarationAnn] --- -> [IdeDeclarationAnn] --- resolveDataConstructorsForModule decls = --- map (idaDeclaration %~ resolveDataConstructors) decls --- where --- resolveDataConstructors :: IdeDeclaration -> IdeDeclaration --- resolveDataConstructors decl = case decl of --- IdeDeclType ty -> --- IdeDeclType (ty & ideTypeDtors .~ fromMaybe [] (Map.lookup (ty ^. ideTypeName) dtors)) --- _ -> --- decl --- --- dtors = --- decls --- & mapMaybe (preview (idaDeclaration . _IdeDeclDataConstructor)) --- & foldr (\(IdeDataConstructor name typeName type') -> --- Map.insertWith (<>) typeName [(name, type')]) Map.empty diff --git a/src/Language/PureScript/Ide/ToIde.hs b/src/Language/PureScript/Ide/ToIde.hs index 2e9ff4f28a..f9e8aee945 100644 --- a/src/Language/PureScript/Ide/ToIde.hs +++ b/src/Language/PureScript/Ide/ToIde.hs @@ -2,34 +2,25 @@ module Language.PureScript.Ide.ToIde where import Protolude hiding (moduleName, unzip) -import Control.Concurrent.STM (TVar, modifyTVar, readTVar, readTVarIO, writeTVar) -import Control.Lens (Ixed(..), preview, view, (%~), (.~), (^.)) -import Data.IORef (readIORef, writeIORef) +import Control.Lens ((^.)) import Data.Map.Lazy qualified as Map -import Data.Time.Clock (UTCTime) -import Data.Zip (unzip) import Language.PureScript.Docs.Convert.Single (convertComments) -import Language.PureScript.Externs (ExternsDeclaration(..), ExternsFile(..)) +import Language.PureScript.Externs (ExternsFile(..)) import Language.PureScript.Ide.Externs (convertExterns) import Language.PureScript.Ide.SourceFile (extractAstInformation) import Language.PureScript.Ide.Types -import Language.PureScript.Ide.Util (discardAnn, displayTimeSpec, logPerf, opNameT, properNameT, runLogger) -import System.Directory (getModificationTime) -import Database.SQLite.Simple qualified as SQLite -import Debug.Trace qualified as Debug +import Language.PureScript.Ide.Util (opNameT, properNameT) import Language.PureScript.AST.Declarations (Module (..)) import Language.PureScript.AST.SourcePos qualified as P import Language.PureScript.Names qualified as P -import Data.Text (Text) import Language.PureScript.AST.Declarations qualified as P import Language.PureScript.Comments qualified as P -import Data.Maybe (Maybe) toIdeDeclarationAnn :: Module -> ExternsFile -> [IdeDeclarationAnn] toIdeDeclarationAnn m e = results where asts = extractAstInformation m - (moduleDeclarations, reexportRefs) = convertExterns e + (moduleDeclarations, _) = convertExterns e results = moduleDeclarations -- & resolveDataConstructorsForModule diff --git a/src/Language/PureScript/Make.hs b/src/Language/PureScript/Make.hs index 06868339bd..7850ae79ee 100644 --- a/src/Language/PureScript/Make.hs +++ b/src/Language/PureScript/Make.hs @@ -53,7 +53,6 @@ import Language.PureScript.Make.Monad as Monad import Language.PureScript.CoreFn qualified as CF import System.Directory (doesFileExist) import System.FilePath (replaceExtension) -import Debug.Trace qualified as Debug -- | Rebuild a single module. -- diff --git a/src/Language/PureScript/Make/IdeCache.hs b/src/Language/PureScript/Make/IdeCache.hs index 64a7e97463..ac9c4a8072 100644 --- a/src/Language/PureScript/Make/IdeCache.hs +++ b/src/Language/PureScript/Make/IdeCache.hs @@ -6,8 +6,6 @@ import Language.PureScript.Ide.ToIde (toIdeDeclarationAnn) import Database.SQLite.Simple (NamedParam(..)) import Database.SQLite.Simple qualified as SQLite import Codec.Serialise qualified as Serialise -import Control.Concurrent (threadDelay) -import Control.Exception (try) import System.FilePath ((), takeDirectory) import Language.PureScript.Names (runModuleName, ProperName (runProperName), runIdent, disqualify, Ident (..), OpName (OpName)) import Language.PureScript.Externs (ExternsFile(..), ExternsImport(..)) @@ -16,21 +14,13 @@ import Control.Monad.IO.Class (MonadIO (liftIO)) import System.Directory (createDirectoryIfMissing) import Language.PureScript.Externs qualified as P import Data.Text qualified as Text -import Data.Maybe (isNothing, fromMaybe) -import Language.PureScript.CST.Utils (ProperName(..)) import Language.PureScript.Docs.Types qualified as Docs -import Language.PureScript.Ide.Externs (convertExterns) import Language.PureScript.Ide.Util (identifierFromIdeDeclaration, discardAnn, namespaceForDeclaration) -import Data.Function ((&)) -import Data.Bifunctor (first) import Data.Text (Text) -import Language.PureScript.Ide.Types (Annotation(..), idaDeclaration, declarationType, IdeDeclarationAnn (_idaAnnotation), IdeNamespace (IdeNSValue, IdeNSType)) +import Language.PureScript.Ide.Types (Annotation(..), declarationType, IdeDeclarationAnn (_idaAnnotation), IdeNamespace (IdeNSValue, IdeNSType)) import Language.PureScript.Docs.Types (Declaration(declChildren)) -import Language.PureScript.Docs.Render (renderDeclaration) -import Language.PureScript.Docs.AsMarkdown (codeToString, declAsMarkdown, runDocs) +import Language.PureScript.Docs.AsMarkdown (declAsMarkdown, runDocs) import Codec.Serialise (serialise) -import Data.Aeson (encode) -import Debug.Trace qualified as Debug import Language.PureScript.AST.Declarations (Module, Expr (Var), getModuleDeclarations, DeclarationRef (..), ExportSource (..)) import Language.PureScript.Ide.Filter.Declaration (DeclarationType (..)) import Data.Aeson qualified as Aeson diff --git a/src/Language/PureScript/Make/Monad.hs b/src/Language/PureScript/Make/Monad.hs index 47209c2505..8c86144e9a 100644 --- a/src/Language/PureScript/Make/Monad.hs +++ b/src/Language/PureScript/Make/Monad.hs @@ -23,7 +23,7 @@ import Prelude import Codec.Serialise (Serialise) import Codec.Serialise qualified as Serialise -import Control.Exception (fromException, tryJust, Exception (displayException), try) +import Control.Exception (fromException, tryJust, Exception (displayException)) import Control.Monad (join, guard) import Control.Monad.Base (MonadBase(..)) import Control.Monad.Error.Class (MonadError(..)) @@ -39,7 +39,7 @@ import Data.Text (Text) import Data.Text qualified as Text import Data.Time.Clock (UTCTime) import Language.PureScript.Errors (ErrorMessage(..), MultipleErrors, SimpleErrorMessage(..), singleError) -import Language.PureScript.Externs (ExternsFile (efModuleName, efImports, efExports), externsIsCurrentVersion, ExternsImport (eiModule)) +import Language.PureScript.Externs (ExternsFile, externsIsCurrentVersion) import Language.PureScript.Make.Cache (ContentHash, hash) import Language.PureScript.Options (Options) import System.Directory (createDirectoryIfMissing, getModificationTime) @@ -47,11 +47,6 @@ import System.Directory qualified as Directory import System.FilePath (takeDirectory) import System.IO.Error (tryIOError, isDoesNotExistError) import System.IO.UTF8 (readUTF8FileT) -import System.FilePath.Posix (()) -import Language.PureScript.Names (runModuleName) -import Control.Concurrent (threadDelay) -import Data.Foldable (for_) -import Data.Aeson (ToJSON(toJSON)) -- | A monad for running make actions newtype Make a = Make diff --git a/stack.yaml b/stack.yaml index 66f79716a4..c0865a9910 100644 --- a/stack.yaml +++ b/stack.yaml @@ -6,7 +6,7 @@ packages: - '.' ghc-options: # Build with advanced optimizations enabled by default - "$locals": -O2 -fspecialize-aggressively -fexpose-all-unfoldings + "$locals": -O2 -Werror -fspecialize-aggressively -fexpose-all-unfoldings extra-deps: # As of 2021-11-08, the latest release of `language-javascript` is 0.7.1.0, # but it has a problem with parsing the `async` keyword. It doesn't allow