mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-02 03:26:52 -04:00
343 lines
9.5 KiB
Haskell
343 lines
9.5 KiB
Haskell
{-# LANGUAGE QuasiQuotes #-}
|
|
-- ^ @keyword.directive
|
|
|
|
{-| Main module -}
|
|
-- ^ @comment.documentation
|
|
module Main
|
|
-- ^ @keyword.import
|
|
-- ^ @module
|
|
( main
|
|
-- ^ @variable
|
|
) where
|
|
-- ^ @keyword
|
|
|
|
import Prelude hiding (show)
|
|
-- ^ @keyword.import
|
|
-- ^ @module
|
|
-- ^ @keyword
|
|
-- ^ @variable
|
|
import Data.Map (fromList)
|
|
-- ^ @module
|
|
import qualified Data.Map as Map
|
|
-- ^ @module
|
|
-- ^ @module
|
|
import qualified Chronos
|
|
-- ^ @module
|
|
import qualified Chronos as C
|
|
-- ^ @module
|
|
-- ^ @module
|
|
import FooMod (BarTy (barField))
|
|
-- ^ @variable.member
|
|
|
|
x = mempty { field = 5 }
|
|
-- ^ @variable.member
|
|
|
|
data ADT
|
|
-- ^ @keyword
|
|
= A Int
|
|
-- ^ @constructor
|
|
-- ^ @type
|
|
| B
|
|
-- ^ @constructor
|
|
deriving (Eq, Show)
|
|
-- ^ @keyword
|
|
-- ^ @type
|
|
-- ^ @type
|
|
mkA x = A x
|
|
-- ^ @variable
|
|
mkAQualified x = SomeModule.A x
|
|
-- ^ @variable
|
|
|
|
class Ord a => PartialOrd a
|
|
-- ^ @type
|
|
-- ^ @variable
|
|
-- ^ @type
|
|
-- ^ @variable
|
|
|
|
instance Ord ADT where
|
|
-- ^ @type
|
|
-- ^ @type
|
|
|
|
newtype Rec
|
|
-- ^ @keyword
|
|
-- ^ @type
|
|
= Rec
|
|
-- ^ @constructor
|
|
{ field :: Double
|
|
-- ^ @punctuation.bracket
|
|
-- ^ @variable.member
|
|
-- ^ @type
|
|
}
|
|
-- ^ @punctuation.bracket
|
|
deriving Eq
|
|
-- ^ @type
|
|
recordWildCard Rec { field } = field
|
|
-- ^ @variable.member
|
|
recordDotSyntax rec = rec.field
|
|
-- ^ @variable.member
|
|
|
|
|
|
main :: IO ()
|
|
-- ^ @function
|
|
-- ^ @operator
|
|
-- ^ @type
|
|
-- ^ @type
|
|
main = undefined
|
|
-- ^ @function
|
|
-- ^ @keyword.exception
|
|
|
|
someFunc0 :: Int -> Int
|
|
-- ^ @operator
|
|
someFunc0 x = someFunc1 x
|
|
-- ^ @variable.parameter
|
|
-- ^ @function.call
|
|
where
|
|
-- ^ @keyword
|
|
someFunc1 _ = 5
|
|
-- ^ @function
|
|
-- ^ @number
|
|
scopedTypeParam (x :: Int) = someFunc x
|
|
-- ^ @variable.parameter
|
|
-- ^ @type
|
|
scopedTypeParam (Just x :: Int) = someFunc x
|
|
-- ^ @constructor
|
|
-- ^ @variable.parameter
|
|
-- ^ @type
|
|
scopedTypeParam (f :: Int -> Int) = someFunc x
|
|
-- ^ @function
|
|
|
|
someInfix :: Integral a => a -> Double
|
|
-- ^ @type
|
|
-- ^ @variable
|
|
-- ^ @operator
|
|
-- ^ @variable
|
|
-- ^ @type
|
|
someInfix x = fromIntegral x `myAdd` floatVal
|
|
-- ^ @function.call
|
|
-- ^ @variable
|
|
-- ^ @operator
|
|
-- ^ @variable
|
|
where
|
|
myAdd :: Num a => a -> a
|
|
-- ^ @function
|
|
myAdd x y = x + y
|
|
-- ^ @variable
|
|
-- ^ @variable
|
|
floatVal :: Double
|
|
-- ^ @variable
|
|
floatVal = 5.5
|
|
-- ^ @variable
|
|
-- ^ @number.float
|
|
intVal :: Int
|
|
-- ^ @variable
|
|
intVal = getInt 5
|
|
-- ^ @variable
|
|
boolVal :: Bool
|
|
-- ^ @variable
|
|
boolVal = bool False True $ 1 + 2 == 3
|
|
-- ^ @variable
|
|
refVal = boolVal
|
|
-- ^ @variable
|
|
namespacedRecord = NS.Rec { field = bar }
|
|
-- ^ @variable
|
|
record = Rec { field = bar }
|
|
-- ^ @variable
|
|
constructorRef = A
|
|
-- ^ @function
|
|
isInt :: Either Double Int -> Bool
|
|
-- ^ @function
|
|
isInt eith@Left{} = False
|
|
-- ^ @variable.parameter
|
|
isInt eith@(Left x) = False
|
|
-- ^ @function
|
|
-- ^ @variable.parameter
|
|
isInt (Left x) = False
|
|
-- ^ @variable.parameter
|
|
isInt (Right _) = True
|
|
-- ^ @function
|
|
|
|
someIOaction :: IO ()
|
|
-- ^ @function
|
|
anotherIOaction :: IO ()
|
|
anotherIOaction = do
|
|
-- ^ @function
|
|
-- ^ @keyword
|
|
foo <- SomeModule.someFun <$> getArgs
|
|
-- ^ @variable
|
|
-- ^ @module
|
|
-- ^ @function.call
|
|
-- ^ @operator
|
|
_ <- someFunc0 =<< someIOAction
|
|
-- ^ @function.call
|
|
let bar = SomeModule.doSomething $ "a" "b"
|
|
-- ^ @variable
|
|
-- ^ @module
|
|
-- ^ @function.call
|
|
-- ^ @operator
|
|
func x y = x + y - 7
|
|
-- ^ @function
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable
|
|
-- ^ @variable
|
|
gunc x y = func x $ y + 7
|
|
-- ^ @variable
|
|
-- ^ @variable
|
|
valueFromList = HashSet.fromList []
|
|
-- ^ @variable
|
|
when foo $ putStrLn $ T.showt =<< bar
|
|
-- ^ @function.call
|
|
-- ^ @variable
|
|
-- ^ @function.call
|
|
-- ^ @function.call
|
|
|
|
pure $ func 1 2
|
|
-- ^ @function.call
|
|
-- ^ @function.call
|
|
|
|
intVal :: Int
|
|
intVal = 5
|
|
-- ^ @variable
|
|
|
|
intFun :: Int -> Int
|
|
intFun = 5
|
|
-- ^ @function
|
|
|
|
undefinedFun :: Int -> Int
|
|
undefinedFun = undefined
|
|
-- ^ @function
|
|
|
|
mbInt :: Maybe Int
|
|
-- ^ @variable
|
|
mbInt = Just 5
|
|
-- ^ @variable
|
|
|
|
tupleVal :: (a, b)
|
|
-- ^@variable
|
|
tupleVal = (1, "x")
|
|
-- ^@variable
|
|
|
|
listVal :: [a]
|
|
-- ^@variable
|
|
listVal = [1, 2]
|
|
-- ^@variable
|
|
-- ^@variable
|
|
condVal = if otherwise
|
|
-- ^@variable
|
|
then False
|
|
else True
|
|
|
|
getLambda x = \y -> x `SomeModule.someInfix` y
|
|
-- ^ @variable.parameter
|
|
-- ^ @module
|
|
-- ^ @operator
|
|
lambdaTyped = \(y :: Int) -> x
|
|
-- ^ @variable.parameter
|
|
lambdaPattern = \(Just x) -> x
|
|
-- ^ @variable.parameter
|
|
lambdaPatternTyped = \(Just x :: Int) -> x
|
|
-- ^ @variable.parameter
|
|
|
|
isVowel = (`elem` "AEIOU")
|
|
-- ^ @operator
|
|
isVowelQualified = (`SomeModule.elem` "AEIOU")
|
|
-- ^ @module
|
|
-- ^ @operator
|
|
|
|
hasVowels = ("AEIOU" `elem`)
|
|
-- ^ @operator
|
|
hasVowelsQualified = ("AEIOU" `SomeModule.elem`)
|
|
-- ^ @module
|
|
-- ^ @operator
|
|
|
|
quasiQuotedString = [qq|Some string|]
|
|
-- ^ @variable
|
|
-- ^ @function.call
|
|
-- ^ @string
|
|
quasiQuotedString2 = [SomeModule.qq|Some string|]
|
|
-- ^ @module
|
|
-- ^ @function.call
|
|
|
|
composition f g = f . g
|
|
-- ^ @function
|
|
-- ^ @function
|
|
qualifiedComposition = SomeModule.f . SomeModule.g
|
|
-- ^ @function
|
|
-- ^ @function
|
|
takeMVarOrThrow = evaluate <=< takeMVar
|
|
-- ^ @function
|
|
-- ^ @function
|
|
modifyMVarOrThrow v f = modifyMVar v $ f >=> evaluate
|
|
-- ^ @variable
|
|
-- ^ @function
|
|
-- ^ @function
|
|
assertNonEmpty xs = xs `shouldSatisfy` not . null
|
|
-- ^ @variable
|
|
-- ^ @function
|
|
-- ^ @function
|
|
appliedComposition f g var = (f . g) var
|
|
-- ^ @function.call
|
|
-- ^ @function.call
|
|
appliedComposition f g var = (NS.f . NS.g) var
|
|
-- ^ @function.call
|
|
-- ^ @function.call
|
|
param1 |*| param2 = Qu $ param1 * param2
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
(param1 :: Int) |*| (param2 :: Int) = Qu $ param1 * param2
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
(Qu a) |/| (SomeModule.Qu b) = a / b
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
(Qu a :: Int) |/| (SomeModule.Qu b :: Int) = a / b
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
(Qu a, b, c :: Int) |/| x = undefined
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
[Qu a, b, c :: Int] >< x = undefined
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
listParam [a, b :: Int, Just c] = undefined
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
tupleParam (a :: Int, b, Just c) = undefined
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
listLambda = \[a, a :: Int, Just c] -> undefined
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
tupleLambda = \(a, b :: Int, Just c) -> undefined
|
|
-- ^ @variable.parameter
|
|
-- ^ @variable.parameter
|
|
nestedDestructure (Left (Just a)) = undefined
|
|
-- ^ @variable.parameter
|
|
typeApplication x y = someFun @ty x y
|
|
-- ^ @variable
|
|
-- ^ @variable
|
|
encrypt key pass = encrypt (defaultOAEPParams SHA1) key pass
|
|
-- ^ @variable
|
|
-- ^ @variable
|
|
recordUpdate x y rec = someFun rec {field = 5} (x, x) y
|
|
-- ^ @variable
|
|
-- ^ @variable
|
|
viewPattern (func -> var) = 5
|
|
-- ^ @function.call
|
|
-- ^ @variable.parameter
|
|
g (func :: a -> b) x = func y
|
|
-- ^ @variable.parameter
|
|
-- ^ @function
|
|
lambdaAlias :: LambdaAlias
|
|
lambdaAlias _ _ _ = undefined
|
|
-- ^ @function
|
|
spec :: Spec
|
|
spec = describe "test ns" $ it "test case" pending
|
|
-- ^ @variable
|
|
|
|
composed = f . g
|
|
-- ^ @function
|