From 31787399112ac4f6ad30895b460a1e53276e2061 Mon Sep 17 00:00:00 2001 From: Tom Hunger Date: Mon, 19 Dec 2016 11:23:30 +0000 Subject: Add `family` as a keyword to support Haskell's type families. See #820. --- pygments/lexers/haskell.py | 2 +- tests/examplefiles/example.hs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pygments/lexers/haskell.py b/pygments/lexers/haskell.py index ffc3a3a2..819c0ef9 100644 --- a/pygments/lexers/haskell.py +++ b/pygments/lexers/haskell.py @@ -39,7 +39,7 @@ class HaskellLexer(RegexLexer): flags = re.MULTILINE | re.UNICODE reserved = ('case', 'class', 'data', 'default', 'deriving', 'do', 'else', - 'if', 'in', 'infix[lr]?', 'instance', + 'family', 'if', 'in', 'infix[lr]?', 'instance', 'let', 'newtype', 'of', 'then', 'type', 'where', '_') ascii = ('NUL', 'SOH', '[SE]TX', 'EOT', 'ENQ', 'ACK', 'BEL', 'BS', 'HT', 'LF', 'VT', 'FF', 'CR', 'S[OI]', 'DLE', diff --git a/tests/examplefiles/example.hs b/tests/examplefiles/example.hs index f5e2b555..3a0c3032 100644 --- a/tests/examplefiles/example.hs +++ b/tests/examplefiles/example.hs @@ -29,3 +29,8 @@ data ĈrazyThings = -- some char literals: charl = ['"', 'a', '\ESC', '\'', ' '] + +-- closed type families +type family Fam (a :: Type) = r :: Type where + Fam Int = True + Fam a = False -- cgit v1.2.1 From 4cba1dc69e9fb3be36936ad70082ee831c362eb6 Mon Sep 17 00:00:00 2001 From: Tom Hunger Date: Mon, 19 Dec 2016 11:34:08 +0000 Subject: Support GHC DataKinds extension. Closes #820. --- pygments/lexers/haskell.py | 3 +++ tests/examplefiles/example.hs | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/pygments/lexers/haskell.py b/pygments/lexers/haskell.py index 819c0ef9..b85a8d58 100644 --- a/pygments/lexers/haskell.py +++ b/pygments/lexers/haskell.py @@ -63,6 +63,9 @@ class HaskellLexer(RegexLexer): (r'^[_' + uni.Ll + r'][\w\']*', Name.Function), (r"'?[_" + uni.Ll + r"][\w']*", Name), (r"('')?[" + uni.Lu + r"][\w\']*", Keyword.Type), + (r"(')[" + uni.Lu + r"][\w\']*", Keyword.Type), + (r"(')\[[^\]]*\]", Keyword.Type), # tuples and lists get special treatment in GHC + (r"(')\([^\)]*\)", Keyword.Type), # .. # Operators (r'\\(?![:!#$%&*+.\\/<=>?@^|~-]+)', Name.Function), # lambda operator (r'(<-|::|->|=>|=)(?![:!#$%&*+.\\/<=>?@^|~-]+)', Operator.Word), # specials diff --git a/tests/examplefiles/example.hs b/tests/examplefiles/example.hs index 3a0c3032..764cab77 100644 --- a/tests/examplefiles/example.hs +++ b/tests/examplefiles/example.hs @@ -34,3 +34,8 @@ charl = ['"', 'a', '\ESC', '\'', ' '] type family Fam (a :: Type) = r :: Type where Fam Int = True Fam a = False + +-- type literals +type IntChar = '[Int, Char] +type Falsy = 'False +type Falsy = '(10, 20, 30) -- cgit v1.2.1