[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/haskell-tng-mode cf22f3a 138/385: simplify indentation tes
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/haskell-tng-mode cf22f3a 138/385: simplify indentation testing |
Date: |
Tue, 5 Oct 2021 23:59:17 -0400 (EDT) |
branch: elpa/haskell-tng-mode
commit cf22f3a5522653c5a3a1af23885d456138308bf6
Author: Tseen She <ts33n.sh3@gmail.com>
Commit: Tseen She <ts33n.sh3@gmail.com>
simplify indentation testing
---
haskell-tng-smie.el | 19 ++-
test/haskell-tng-indent-test.el | 9 +-
test/haskell-tng-lexer-test.el | 2 +
test/src/indentation.hs | 3 -
test/src/indentation.hs.insert.indent | 10 +-
test/src/indentation.hs.layout | 3 -
test/src/indentation.hs.lexer | 46 ++++++
test/src/indentation.hs.reindent | 12 +-
test/src/indentation.hs.sexps | 3 -
test/src/layout.hs.insert.indent | 38 -----
test/src/layout.hs.reindent | 38 -----
test/src/medley.hs.insert.indent | 292 ----------------------------------
test/src/medley.hs.reindent | 292 ----------------------------------
13 files changed, 71 insertions(+), 696 deletions(-)
diff --git a/haskell-tng-smie.el b/haskell-tng-smie.el
index 95d965d..9fac90d 100644
--- a/haskell-tng-smie.el
+++ b/haskell-tng-smie.el
@@ -57,6 +57,7 @@
;; commas only allowed in brackets
(list
("(" list ")")
+ ("{" list "}")
("[" list "]") ;; includes DataKinds
(list "," list))
@@ -71,6 +72,7 @@
("module" blk "where" blk)
(blk "where" blk)
("let" blk "in")
+ ("let" blk)
("do" blk)
("case" id "of" blk))
(blk
@@ -122,8 +124,9 @@ information, to aid in the creation of new rules."
(defun haskell-tng-smie:rules (method arg)
;; see docs for `smie-rules-function'
(when haskell-tng-smie:debug
- (with-current-buffer haskell-tng-smie:debug
- (insert (format "RULES: %S %S\n" method arg))))
+ (let ((sym (symbol-at-point)))
+ (with-current-buffer haskell-tng-smie:debug
+ (insert (format "RULES: %S %S %S\n" method arg sym)))))
;; FIXME core indentation rules
(pcase method
@@ -131,15 +134,21 @@ information, to aid in the creation of new rules."
(:elem
(pcase arg
((or 'empty-line-token 'args) 0)
+ ('basic 0)
))
+ ;; It looks like all patterns of the form
+ ;;
+ ;; {TOKEN TOKEN HEAD ; A ; B ; ...}
+ ;;
+ ;; are showing up as `:list-intro "HEAD"` in positions A and B.
(:list-intro
;; TODO could consult a local table that is populated by an external tool
;; containing the parameter requirements for function calls to let us know
;; if it's a single statement or many.
(pcase arg
- ;; FIXME this should return bool
- ((or "CONID" "VARID" "}" "<-" "=") 0)
+ ;; TODO this is a hack to workaround broken list detection
+ ((or "CONID" "VARID" "}" "<-" "=") t)
))
(:after
@@ -226,8 +235,6 @@ current line."
relevant))
(defun haskell-tng-smie:setup ()
- (setq-local smie-indent-basic 2)
-
(add-hook
'after-change-functions
#'haskell-tng-layout:cache-invalidation
diff --git a/test/haskell-tng-indent-test.el b/test/haskell-tng-indent-test.el
index a66fda2..07c3128 100644
--- a/test/haskell-tng-indent-test.el
+++ b/test/haskell-tng-indent-test.el
@@ -28,15 +28,15 @@
(ert-deftest haskell-tng-newline-indent-file-tests ()
(should (have-expected-newline-indent-insert (testdata
"src/indentation.hs")))
- (should (have-expected-newline-indent-insert (testdata "src/layout.hs")))
- (should (have-expected-newline-indent-insert (testdata "src/medley.hs")))
+ ;; (should (have-expected-newline-indent-insert (testdata "src/layout.hs")))
+ ;; (should (have-expected-newline-indent-insert (testdata "src/medley.hs")))
)
(ert-deftest haskell-tng-reindent-file-tests ()
(should (have-expected-reindent-insert (testdata "src/indentation.hs")))
- (should (have-expected-reindent-insert (testdata "src/layout.hs")))
- (should (have-expected-reindent-insert (testdata "src/medley.hs")))
+ ;; (should (have-expected-reindent-insert (testdata "src/layout.hs")))
+ ;; (should (have-expected-reindent-insert (testdata "src/medley.hs")))
)
(defun current-line-string ()
@@ -45,6 +45,7 @@
(- (line-beginning-position 2) 1)))
(defun haskell-tng-indent-test:indent-insert (return-mode)
+ ;; FIXME the slow append test
(let (indents)
(while (not (eobp))
;; the command loop is necessary for this/last-command
diff --git a/test/haskell-tng-lexer-test.el b/test/haskell-tng-lexer-test.el
index c3080a1..5fc7c0e 100644
--- a/test/haskell-tng-lexer-test.el
+++ b/test/haskell-tng-lexer-test.el
@@ -13,9 +13,11 @@
(ert-deftest haskell-tng-lexer-file-tests ()
(should (have-expected-forward-lex (testdata "src/layout.hs")))
+ (should (have-expected-forward-lex (testdata "src/indentation.hs")))
(should (have-expected-forward-lex (testdata "src/medley.hs")))
(should (have-expected-backward-lex (testdata "src/layout.hs")))
+ (should (have-expected-backward-lex (testdata "src/indentation.hs")))
(should (have-expected-backward-lex (testdata "src/medley.hs")))
)
diff --git a/test/src/indentation.hs b/test/src/indentation.hs
index 94a8cd2..8c98baa 100644
--- a/test/src/indentation.hs
+++ b/test/src/indentation.hs
@@ -20,9 +20,6 @@ basic_do = do
gaz = blah -- TODO same level as baz
haz = -- TODO same level as gaz
blah
- let -- manual correction
- waz =
- blah blah
pure faz -- manual correction
nested_do =
diff --git a/test/src/indentation.hs.insert.indent
b/test/src/indentation.hs.insert.indent
index e9943df..6766ce4 100644
--- a/test/src/indentation.hs.insert.indent
+++ b/test/src/indentation.hs.insert.indent
@@ -42,16 +42,10 @@ basic_do = do
2 3 1 v4 5
blah
2 1 3 v4 5
- let -- manual correction
-2 1 v 3 45 6
- waz =
-2 3 1 v 45 6
- blah blah
-2 1 3 v 45 6
pure faz -- manual correction
-1 v 2 3 45 6
+1 v 2 34 5
-1 v 2 3 45 6
+1 v 2 34 5
nested_do =
1 v 2
do foo <- blah
diff --git a/test/src/indentation.hs.layout b/test/src/indentation.hs.layout
index 7ae9fdc..8ae3b00 100644
--- a/test/src/indentation.hs.layout
+++ b/test/src/indentation.hs.layout
@@ -20,9 +20,6 @@ module Indentation where
;gaz = blah -- TODO same level as baz
;haz = -- TODO same level as gaz
blah
- };let -- manual correction
- {waz =
- blah blah
};pure faz -- manual correction
};nested_do =
diff --git a/test/src/indentation.hs.lexer b/test/src/indentation.hs.lexer
new file mode 100644
index 0000000..510db03
--- /dev/null
+++ b/test/src/indentation.hs.lexer
@@ -0,0 +1,46 @@
+
+
+
+module CONID where
+
+{ import CONID
+; import CONID VARID « VARID ,
+VARID
+»
+
+; VARID = do
+{ VARID <- VARID VARID VARID
+; VARID <- VARID VARID
+VARID
+VARID
+; VARID
+; VARID VARID
+; let { VARID = VARID VARID
+VARID
+; VARID = VARID
+; VARID =
+VARID
+} ; VARID VARID
+
+} ; VARID =
+do { VARID <- VARID
+; do { VARID <- VARID
+; VARID
+
+} } ; VARID VARID VARID = VARID VARID VARID
+where
+{ VARID = VARID VARID
+; VARID = VARID VARID
+where
+{ VARID VARID = VARID
+; VARID = VARID
+
+
+
+
+
+
+
+
+
+} } }
diff --git a/test/src/indentation.hs.reindent b/test/src/indentation.hs.reindent
index 954d243..ee5284f 100644
--- a/test/src/indentation.hs.reindent
+++ b/test/src/indentation.hs.reindent
@@ -42,17 +42,11 @@ v 3 1 24 5
haz = -- TODO same level as gaz
3 2 1 v4 5
blah
-3 v 2 4 15 6
- let -- manual correction
-3 1 v 2 45 6
- waz =
-3 2 1 v 45 6
- blah blah
-2 v 3 1 45 6
+2 v 3 14 5
pure faz -- manual correction
-1 v 2 3 45 6
+1 v 2 34 5
-v 2 314 56 7
+v 2 13 45 6
nested_do =
v 1
do foo <- blah
diff --git a/test/src/indentation.hs.sexps b/test/src/indentation.hs.sexps
index 832c262..8482b82 100644
--- a/test/src/indentation.hs.sexps
+++ b/test/src/indentation.hs.sexps
@@ -20,9 +20,6 @@
((gaz) = (blah)) -- TODO same level as baz
((haz) = -- TODO same level as gaz
(blah))
- )let -- manual correction
- ((waz) =
- (blah) (blah)
)(pure) (faz)) -- manual correction
)(nested_do) =
diff --git a/test/src/layout.hs.insert.indent b/test/src/layout.hs.insert.indent
deleted file mode 100644
index b037540..0000000
--- a/test/src/layout.hs.insert.indent
+++ /dev/null
@@ -1,38 +0,0 @@
--- Figure 2.1 from the Haskell2010 report
-v
-module AStack( Stack, push, pop, top, size ) where
-v
-data Stack a = Empty
-1 2 v
- | MkStack a (Stack a)
-1 v
-
-v 1
-push :: a -> Stack a -> Stack a
-v
-push x s = MkStack x s
-1 v
-
-v
-size :: Stack a -> Int
-v
-size s = length (stkToLst s) where
-1 v 2
- stkToLst Empty = []
-3 1 v 2
- stkToLst (MkStack x s) = x:xs where xs = stkToLst s
-3 2 1 v
-
-1 2 3 v
-pop :: Stack a -> (a, Stack a)
-v
-pop (MkStack x s)
-1 5 v 4 3 2
- = (x, case s of r -> i r where i x = x) -- (pop Empty) is an error
-5 4 v 3 2 1
-
-v 1 2 3 4
-top :: Stack a -> a
-v
-top (MkStack x s) = x -- (top Empty) is an error
-v
\ No newline at end of file
diff --git a/test/src/layout.hs.reindent b/test/src/layout.hs.reindent
deleted file mode 100644
index 9a6af85..0000000
--- a/test/src/layout.hs.reindent
+++ /dev/null
@@ -1,38 +0,0 @@
-v
--- Figure 2.1 from the Haskell2010 report
-v
-module AStack( Stack, push, pop, top, size ) where
-v 1
-data Stack a = Empty
-1 v
- | MkStack a (Stack a)
-v 1
-
-v 1
-push :: a -> Stack a -> Stack a
-v
-push x s = MkStack x s
-v
-
-v
-size :: Stack a -> Int
-v 1
-size s = length (stkToLst s) where
-1 v 2
- stkToLst Empty = []
-v 1
- stkToLst (MkStack x s) = x:xs where xs = stkToLst s
-3 2 1 v
-
-v 1 2
-pop :: Stack a -> (a, Stack a)
-v 4 3 2 1
-pop (MkStack x s)
-v
- = (x, case s of r -> i r where i x = x) -- (pop Empty) is an error
-v 4 3 2 1
-
-v 1 2 3 4
-top :: Stack a -> a
-v
-top (MkStack x s) = x -- (top Empty) is an error
\ No newline at end of file
diff --git a/test/src/medley.hs.insert.indent b/test/src/medley.hs.insert.indent
deleted file mode 100644
index d494c3c..0000000
--- a/test/src/medley.hs.insert.indent
+++ /dev/null
@@ -1,292 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-v
-{-# LANGUAGE ScopedTypeVariables #-}
-v
-
-v
--- | This file is a medley of various constructs and some corner cases
-v
-module Foo.Bar.Main
-1 2 v
- ( Wibble(..), Wobble(Wobb, (!!!)), Woo
-2 1 v
- -- * Operations
-2 1 v
- , getFooByBar, getWibbleByWobble
-2 1 v
- , module Bloo.Foo
-2 1 v
-) where
-v 1
-
-v 1
-import Control.Applicative (many, optional, pure, (<*>), (<|>))
-v
-import Data.Foldable (traverse_)
-v
-import Data.Functor ((<$>))
-v
-import Data.List (intercalate)
-v
-import Data.Monoid ((<>))
-v
-import qualified Options.Monad
-v
-import qualified Options.Applicative as Opts
-v
-import qualified Options.Divisible -- wibble (wobble)
-v 1
- as Div
-v 1
-import qualified ProfFile.App hiding (as, hiding, qualified)
-v
-import ProfFile.App (as, hiding, qualified)
-v
-import ProfFile.App hiding (as, hiding, qualified)
-v
-import qualified ProfFile.App (as, hiding, qualified)
-v
-import System.Exit (ExitCode (..), exitFailure, qualified,
-1 v
- Typey,
-1 v
- wibble,
-1 v
- Wibble)
-v 1
-import System.FilePath (replaceExtension, Foo(Bar, (:<)))
-v
-import System.IO (IOMode (..), hClose, hGetContents,
-1 v
- hPutStr, hPutStrLn, openFile, stderr,
-1 v
- stdout, MoarTypey)
-v 1
-import System.Process (CreateProcess (..), StdStream (..),
-1 v
- createProcess, proc, waitForProcess)
-2 v 1
-
-1 v 2
--- some chars that should be propertized
-v 1
-chars = ['c', '\n', '\'']
-1 v
-
-v
-strings = ["", "\"\"", "\n\\ ", "\\"]
-1 v
--- knownWrongEscape = "foo"\\"bar"
-1 v
-
-v
-multiline1 = "\
-v 1
- \ "
-v 1
-multiline2 = "\
-v 1
- \"
-2 1 v
-
-v 1
-difficult = foo' 'a' 2
-1 v
-
-v
-foo = "wobble (wibble)"
-1 v
-
-v
-class Get a s where
-1 v
- get :: Set s -> a
-2 1 v
-
-1 v
-instance {-# OVERLAPS #-} Get a (a ': s) where
-1 v
- get (Ext a _) = a
-2 1 v
-
-1 v
-instance {-# OVERLAPPABLE #-} Get a s => Get a (b ': s) where
-1 v
- get (Ext _ xs) = get xs
-2 1 v
-
-1 v
-data Options = Options
-1 2 v
- { optionsReportType :: ReportType
-2 1 v
- , optionsProfFile :: Maybe FilePath
-2 1 v
- , optionsOutputFile :: Maybe FilePath
-2 1 v
- , optionsFlamegraphFlags :: [String]
-2 1 v
- } deriving (Eq, Show)
-1 v
-
-v 1
-class (Eq a) => Ord a where
-1 v
- (<), (<=), (>=), (>) :: a -> a -> Bool
-2 1 v
- max @Foo, min :: a -> a -> a
-2 1 v
-
-1 v
-instance (Eq a) => Eq (Tree a) where
-1 v
- Leaf a == Leaf b = a == b
-2 1 v
- (Branch l1 r1) == (Branch l2 r2) = (l1==l2) && (r1==r2)
-2 1 v
- _ == _ = False
-2 1 v
-
-1 v
-data ReportType = Alloc -- ^ Report allocations, percent
-1 2 v
- | Entries -- ^ Report entries, number
-1 v
- | Time -- ^ Report time spent in closure, percent
-1 v
- | Ticks -- ^ Report ticks, number
-1 v
- | Bytes -- ^ Report bytes allocated, number
-1 v
- deriving (Eq, Show)
-1 v
-
-v 1
-type family G a where
-1 v
- G Int = Bool
-2 1 v
- G a = Char
-2 1 v
-
-1 v
-data Flobble = Flobble
-1 2 v
- deriving (Eq) via (NonNegative (Large Int))
-1 v
- deriving stock (Floo)
-1 v
- deriving anyclass (WibblyWoo, OtherlyWoo)
-1 v
-
-v 1
-newtype Flobby = Flobby
-1 v
-
-v
-foo ::
-v1
- Wibble -- wibble
-2v 1
- -> Wobble -- wobble
-23 1 v
- -> Wobble -- wobble
-23 1 v
- -> Wobble -- wobble
-23 1 v
- -> (wob :: Wobble)
-23 1 v
- -> (Wobble -- wobble
-23 1 v
- a b c)
-23 1 v
-
-v1 2
-(foo :: (Wibble Wobble)) foo
-12 3 v
-
-v1 2
-newtype TestApp
-v 1
- (logger :: TestLogger)
-1 v
- (scribe :: TestScribe)
-1 v
- config
-1 v
- a
-1 v
- = TestApp a
-2 1 v
-
-v 1
-optionsParser :: Opts.Parser Options
-v
-optionsParser = Options
-1 2 v
- <$> (Opts.flag' Alloc (Opts.long "alloc" <> Opts.help "wibble")
-3 1 2 v
- <|> Opts.flag' Entries (Opts.long "entry" <> Opts.help "wobble")
-2 3 1 v
- <|> Opts.flag' Bytes (Opts.long "bytes" <> Opts.help "i'm a fish"))
-3 2 v1
- <*> optional
-3 1 v42
- (Opts.strArgument
-3 4 51 2 v
- (Opts.metavar "MY-FILE" <>
-3 4 56 12 v
- Opts.help "meh"))
-2 3 4v 51
-
-1 2 v34 56
-type PhantomThing
-1 v
-
-v
-type SomeApi =
-1 v 2
- "thing" :> Capture "bar" Index :> QueryParam "wibble" Text
-2 v 1
- :> QueryParam "wobble" Natural
-1 2 v
- :> Header TracingHeader
TracingId
-1 2 v
- :> ThingHeader
-1 2 v
- :> Get '[JSON] (The ReadResult)
-2 1 3 v
- :<|> "thing" :> ReqBody '[JSON] Request
-2 v 3 1 4
- :> Header TracingHeader TracingId
-1 2 3 v 4
- :> SpecialHeader
-1 2 3 v 4
- :> Post '[JSON] (The Response)
-1 2 3 v 4
-
-v 1 2 3 4
-deriving instance FromJSONKey StateName
-v
-deriving anyclass instance FromJSON Base
-v
-deriving newtype instance FromJSON Treble
-v
-
-v
-foo = do
-1 v
- bar :: Wibble <- baz
-3 1 2 v
- where baz = _
-3 2 1 v
- -- checking that comments are ignored in layout
-2 1 3 v
- -- and that a starting syntax entry is ok
-3 1 2 v
- (+) = _
-2 3 1 v
-
-1 2 3 v
-test = 1 `shouldBe` 1
-v
\ No newline at end of file
diff --git a/test/src/medley.hs.reindent b/test/src/medley.hs.reindent
deleted file mode 100644
index ab74c25..0000000
--- a/test/src/medley.hs.reindent
+++ /dev/null
@@ -1,292 +0,0 @@
-v
-{-# LANGUAGE OverloadedStrings #-}
-v
-{-# LANGUAGE ScopedTypeVariables #-}
-v
-
-v
--- | This file is a medley of various constructs and some corner cases
-v 1
-module Foo.Bar.Main
-1 2 v
- ( Wibble(..), Wobble(Wobb, (!!!)), Woo
-2 1 v
- -- * Operations
-2 1 v
- , getFooByBar, getWibbleByWobble
-1 v
- , module Bloo.Foo
-1 v
-) where
-v 1
-
-v 1
-import Control.Applicative (many, optional, pure, (<*>), (<|>))
-v
-import Data.Foldable (traverse_)
-v
-import Data.Functor ((<$>))
-v
-import Data.List (intercalate)
-v
-import Data.Monoid ((<>))
-v
-import qualified Options.Monad
-v
-import qualified Options.Applicative as Opts
-v 1
-import qualified Options.Divisible -- wibble (wobble)
-v
- as Div
-v 1
-import qualified ProfFile.App hiding (as, hiding, qualified)
-v
-import ProfFile.App (as, hiding, qualified)
-v
-import ProfFile.App hiding (as, hiding, qualified)
-v
-import qualified ProfFile.App (as, hiding, qualified)
-v 1
-import System.Exit (ExitCode (..), exitFailure, qualified,
-1 v
- Typey,
-1 v
- wibble,
-1 v
- Wibble)
-v 1
-import System.FilePath (replaceExtension, Foo(Bar, (:<)))
-v 1
-import System.IO (IOMode (..), hClose, hGetContents,
-1 v
- hPutStr, hPutStrLn, openFile, stderr,
-1 v
- stdout, MoarTypey)
-v 1
-import System.Process (CreateProcess (..), StdStream (..),
-1 v
- createProcess, proc, waitForProcess)
-2 v 1
-
-v 1
--- some chars that should be propertized
-v 1
-chars = ['c', '\n', '\'']
-v
-
-v
-strings = ["", "\"\"", "\n\\ ", "\\"]
-v
--- knownWrongEscape = "foo"\\"bar"
-v
-
-v 1
-multiline1 = "\
-1 v 2
- \ "
-v 12
-multiline2 = "\
-1 v 2
- \"
-v 1
-
-v 1
-difficult = foo' 'a' 2
-v
-
-v
-foo = "wobble (wibble)"
-v
-
-v 1
-class Get a s where
-1 v
- get :: Set s -> a
-1 v
-
-v 1
-instance {-# OVERLAPS #-} Get a (a ': s) where
-1 v
- get (Ext a _) = a
-1 v
-
-v 1
-instance {-# OVERLAPPABLE #-} Get a s => Get a (b ': s) where
-1 v
- get (Ext _ xs) = get xs
-1 v
-
-v 1
-data Options = Options
-1 2 v
- { optionsReportType :: ReportType
-2 1 v
- , optionsProfFile :: Maybe FilePath
-1 v
- , optionsOutputFile :: Maybe FilePath
-1 v
- , optionsFlamegraphFlags :: [String]
-1 v
- } deriving (Eq, Show)
-v 1
-
-v 1
-class (Eq a) => Ord a where
-1 v
- (<), (<=), (>=), (>) :: a -> a -> Bool
-v 1
- max @Foo, min :: a -> a -> a
-1 v
-
-v 1
-instance (Eq a) => Eq (Tree a) where
-1 v
- Leaf a == Leaf b = a == b
-v 1
- (Branch l1 r1) == (Branch l2 r2) = (l1==l2) && (r1==r2)
-v 1
- _ == _ = False
-1 v
-
-v 2 1
-data ReportType = Alloc -- ^ Report allocations, percent
-1 2 v
- | Entries -- ^ Report entries, number
-1 v
- | Time -- ^ Report time spent in closure, percent
-1 v
- | Ticks -- ^ Report ticks, number
-1 v
- | Bytes -- ^ Report bytes allocated, number
-1 v
- deriving (Eq, Show)
-v 1
-
-v 1 2
-type family G a where
-1 v
- G Int = Bool
-v 1
- G a = Char
-1 v
-
-v 1
-data Flobble = Flobble
-1 2 v
- deriving (Eq) via (NonNegative (Large Int))
-1 v
- deriving stock (Floo)
-1 v
- deriving anyclass (WibblyWoo, OtherlyWoo)
-v 1
-
-v 1
-newtype Flobby = Flobby
-v
-
-v1
-foo ::
-v 1
- Wibble -- wibble
-v1 2
- -> Wobble -- wobble
-v2 1
- -> Wobble -- wobble
-v2 1
- -> Wobble -- wobble
-v2 1
- -> (wob :: Wobble)
-v2 1
- -> (Wobble -- wobble
-23 1 v
- a b c)
-v2 1
-
-v1 2
-(foo :: (Wibble Wobble)) foo
-v1 2
-
-v2 13
-newtype TestApp
-v 1
- (logger :: TestLogger)
-1 v
- (scribe :: TestScribe)
-1 v
- config
-1 v
- a
-v 1
- = TestApp a
-v 1
-
-v 1
-optionsParser :: Opts.Parser Options
-v 1
-optionsParser = Options
-1 2 v
- <$> (Opts.flag' Alloc (Opts.long "alloc" <> Opts.help "wibble")
-3 1 2 v
- <|> Opts.flag' Entries (Opts.long "entry" <> Opts.help "wobble")
-2 1 v
- <|> Opts.flag' Bytes (Opts.long "bytes" <> Opts.help "i'm a fish"))
-3 v 12
- <*> optional
-3 1 v4 2
- (Opts.strArgument
-3 4 51 2 v
- (Opts.metavar "MY-FILE" <>
-2 3 45 1 v
- Opts.help "meh"))
-2 3 v45 61
-
-v 1 23 45
-type PhantomThing
-v
-
-v 1
-type SomeApi =
-1 v 2
- "thing" :> Capture "bar" Index :> QueryParam "wibble" Text
-2 v 1
- :> QueryParam "wobble" Natural
-1 2 v
- :> Header TracingHeader
TracingId
-1 2 v
- :> ThingHeader
-2 1 3 v
- :> Get '[JSON] (The ReadResult)
-2 3 1 v
- :<|> "thing" :> ReqBody '[JSON] Request
-2 v 3 1 4
- :> Header TracingHeader TracingId
-1 2 3 v 4
- :> SpecialHeader
-1 2 3 v 4
- :> Post '[JSON] (The Response)
-v 2 3 1 4
-
-v 1 2 3 4
-deriving instance FromJSONKey StateName
-v
-deriving anyclass instance FromJSON Base
-v
-deriving newtype instance FromJSON Treble
-v
-
-v 1
-foo = do
-1 v 2
- bar :: Wibble <- baz
-v 1
- where baz = _
-2 1 v
- -- checking that comments are ignored in layout
-2 1 v
- -- and that a starting syntax entry is ok
-v 1 2
- (+) = _
-2 3 1 v
-
-v 1 2
-test = 1 `shouldBe` 1
\ No newline at end of file
- [nongnu] elpa/haskell-tng-mode e023657 107/385: SMIE wishlist, (continued)
- [nongnu] elpa/haskell-tng-mode e023657 107/385: SMIE wishlist, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 497214b 119/385: syntax tests and bugfixes, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode df5d2c5 122/385: better whitespace gap detection, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 3b7cd02 123/385: some todos, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode fc4d3e3 127/385: compilation mode supports multiline error spans, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 88bad65 128/385: visually distinguish compile errors and warnings, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 9dc0abc 129/385: alt indentation levels should be ordered, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 879fc34 130/385: thots, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 1009082 140/385: append indentation test, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 88b17d4 137/385: started indentation rules, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode cf22f3a 138/385: simplify indentation testing,
ELPA Syncer <=
- [nongnu] elpa/haskell-tng-mode a0f777e 166/385: Revert "duplicate ; tokens to be used as terminators", ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 2320b89 167/385: alternative to smie-rules-* in :elem and :list-intro, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 60d8c20 149/385: indent "case of", ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 7f9afd2 159/385: list indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6e70344 165/385: duplicate ; tokens to be used as terminators, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode ab5252b 169/385: rearrange alts, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode e1aba33 168/385: fix a layout bug in lists and records, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 2c6c772 150/385: better WLDO indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 3f54673 155/385: don't fontify toplevel, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 32175c0 158/385: thots, ELPA Syncer, 2021/10/06