haskell-tools-demo 1.0.0.4 → 1.0.1.1
raw patch · 5 files changed
+29/−52 lines, 5 filesdep ~aesondep ~http-typesPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: aeson, http-types
API changes (from Hackage documentation)
Files
- haskell-tools-demo.cabal +4/−4
- src/Language/Haskell/Tools/ASTDebug.hs +19/−31
- src/Language/Haskell/Tools/ASTDebug/Instances.hs +2/−6
- src/Language/Haskell/Tools/Demo.hs +2/−10
- test/Main.hs +2/−1
haskell-tools-demo.cabal view
@@ -1,5 +1,5 @@ name: haskell-tools-demo -version: 1.0.0.4 +version: 1.0.1.1 synopsis: A web-based demo for Haskell-tools Refactor. description: Allows websocket clients to connect and performs refactorings on demand. The clients maintain a continous connection with the server, sending changes in the source files. When a refactor request is received, it performs the changes and sends the modified source files to the client. homepage: https://github.com/haskell-tools/haskell-tools @@ -21,9 +21,9 @@ , transformers >= 0.5 && < 0.6 , directory >= 1.2 && < 1.4 , containers >= 0.5 && < 0.6 - , aeson >= 1.0 && < 1.3 + , aeson >= 1.0 && < 1.4 , bytestring >= 0.10 && < 0.11 - , http-types >= 0.9 && < 0.12 + , http-types >= 0.9 && < 0.13 , warp >= 3.2 && < 3.3 , wai >= 3.2 && < 3.3 , websockets >= 0.12 && < 0.13 @@ -61,6 +61,6 @@ , bytestring >= 0.10 && < 0.11 , network >= 2.6 && < 2.7 , websockets >= 0.12 && < 0.13 - , aeson >= 1.0 && < 1.3 + , aeson >= 1.0 && < 1.4 , haskell-tools-demo default-language: Haskell2010
src/Language/Haskell/Tools/ASTDebug.hs view
@@ -1,18 +1,5 @@-{-# LANGUAGE TypeOperators - , DefaultSignatures - , StandaloneDeriving - , FlexibleContexts - , FlexibleInstances - , MultiParamTypeClasses - , TypeFamilies - , TemplateHaskell - , OverloadedStrings - , ConstraintKinds - , LambdaCase - , ViewPatterns - , ScopedTypeVariables - , UndecidableInstances - #-} +{-# LANGUAGE TypeOperators, DefaultSignatures, StandaloneDeriving, FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, TypeFamilies, TemplateHaskell, OverloadedStrings, ConstraintKinds, LambdaCase, ViewPatterns, ScopedTypeVariables, UndecidableInstances #-} + -- | A module for displaying the AST in a tree view. module Language.Haskell.Tools.ASTDebug where @@ -43,7 +30,7 @@ , _nodeValue :: String } -deriving instance Domain dom => Show (DebugNode dom) +-- deriving instance Domain dom => Show (DebugNode dom) data TreeDebugNode dom = TreeDebugNode { _nodeName :: String @@ -51,36 +38,33 @@ , _children :: [DebugNode dom] } -deriving instance Domain dom => Show (TreeDebugNode dom) +-- deriving instance Domain dom => Show (TreeDebugNode dom) data SemanticInfoType dom = DefaultInfoType { semaInfoTypeRng :: SrcSpan } - | NameInfoType { semaInfoTypeName :: SemanticInfo' dom SameInfoNameCls + | NameInfoType { semaInfoTypeName :: SemanticInfo' dom SemaInfoNameCls , semaInfoTypeRng :: SrcSpan } - | ExprInfoType { semaInfoTypeExpr :: SemanticInfo' dom SameInfoExprCls + | ExprInfoType { semaInfoTypeExpr :: SemanticInfo' dom SemaInfoExprCls , semaInfoTypeRng :: SrcSpan } - | ImportInfoType { semaInfoTypeImport :: SemanticInfo' dom SameInfoImportCls + | ImportInfoType { semaInfoTypeImport :: SemanticInfo' dom SemaInfoImportCls , semaInfoTypeRng :: SrcSpan } - | ModuleInfoType { semaInfoTypeModule :: SemanticInfo' dom SameInfoModuleCls + | ModuleInfoType { semaInfoTypeModule :: SemanticInfo' dom SemaInfoModuleCls , semaInfoTypeRng :: SrcSpan } - | ImplicitFieldInfoType { semaInfoTypeImplicitFld :: SemanticInfo' dom SameInfoWildcardCls + | ImplicitFieldInfoType { semaInfoTypeImplicitFld :: SemanticInfo' dom SemaInfoWildcardCls , semaInfoTypeRng :: SrcSpan } - -deriving instance Domain dom => Show (SemanticInfoType dom) - makeReferences ''DebugNode makeReferences ''TreeDebugNode -type AssocSema dom = ( AssocData (SemanticInfo' dom SameInfoModuleCls), AssocData (SemanticInfo' dom SameInfoImportCls) - , AssocData (SemanticInfo' dom SameInfoNameCls), AssocData (SemanticInfo' dom SameInfoExprCls) - , AssocData (SemanticInfo' dom SameInfoWildcardCls) ) +type AssocSema dom = ( AssocData (SemanticInfo' dom SemaInfoModuleCls), AssocData (SemanticInfo' dom SemaInfoImportCls) + , AssocData (SemanticInfo' dom SemaInfoNameCls), AssocData (SemanticInfo' dom SemaInfoExprCls) + , AssocData (SemanticInfo' dom SemaInfoWildcardCls) ) astDebug :: (ASTDebug e dom st, AssocSema dom) => e dom st -> String astDebug ast = toList (astDebugToJson (astDebug' ast)) @@ -171,13 +155,17 @@ ] inspectScope :: InspectableName n => [[(n, Maybe [UsageSpec], Maybe n)]] -> String -inspectScope = concat . intersperse " | " . map (concat . intersperse ", " . map inspect) +inspectScope = concat . intersperse " | " . map (concat . intersperse ", " . map showUsage) class Outputable n => InspectableName n where inspect :: n -> String -instance InspectableName n => InspectableName (n, Maybe [UsageSpec], Maybe n) where - inspect (n,usage,parent) = inspect n ++ showSDocUnsafe (ppr usage) ++ maybe "" (\p -> "( in " ++ showSDocUnsafe (ppr p) ++ ")") parent +showUsage :: InspectableName n => (n, Maybe [UsageSpec], Maybe n) -> String +showUsage (n,usage,parent) = inspect n ++ show usage ++ maybe "" (\p -> "( in " ++ showSDocUnsafe (ppr p) ++ ")") parent + +instance Show UsageSpec where + show (UsageSpec q useQ asQ) + = (if q then "qualified " else "") ++ "as " ++ (if useQ == asQ || q then asQ else asQ ++ " or " ++ useQ) instance InspectableName GHC.Name where inspect name = showSDocUnsafe (ppr name) ++ "[" ++ show (getUnique name) ++ "]"
src/Language/Haskell/Tools/ASTDebug/Instances.hs view
@@ -1,9 +1,5 @@-{-# LANGUAGE FlexibleContexts - , FlexibleInstances - , MultiParamTypeClasses - , UndecidableInstances - , TypeFamilies - #-} +{-# LANGUAGE FlexibleContexts, FlexibleInstances, GADTs, MultiParamTypeClasses, UndecidableInstances #-} + module Language.Haskell.Tools.ASTDebug.Instances where import Language.Haskell.Tools.ASTDebug
src/Language/Haskell/Tools/Demo.hs view
@@ -1,13 +1,6 @@-{-# LANGUAGE OverloadedStrings - , DeriveGeneric - , TypeApplications - , ScopedTypeVariables - , LambdaCase - , TemplateHaskell - , PatternGuards - , FlexibleContexts - #-} +{-# LANGUAGE OverloadedStrings, DeriveGeneric, TypeApplications, ScopedTypeVariables, LambdaCase, TemplateHaskell, PatternGuards, FlexibleContexts #-} + module Language.Haskell.Tools.Demo where import Control.Concurrent.MVar @@ -45,7 +38,6 @@ import Control.Reference -import Language.Haskell.Tools.AST import Language.Haskell.Tools.ASTDebug import Language.Haskell.Tools.ASTDebug.Instances () import Language.Haskell.Tools.PrettyPrint
test/Main.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE StandaloneDeriving #-}+ module Main where import Control.Concurrent (killThread, forkIO)