Haskell lexer incorrectly labels type operators as characters.

Issue #1473 new
Sandy Maguire
created an issue

The haskell lexer incorrect identifies the ' in a ': b as a character.

I've included a patch and testcase.

diff -r 7941677dc77d pygments/lexers/haskell.py
--- a/pygments/lexers/haskell.py        Mon Mar 13 19:16:03 2017 +0000
+++ b/pygments/lexers/haskell.py        Sat Sep 08 15:27:18 2018 -0400
@@ -66,6 +66,7 @@
             (r"(')[" + uni.Lu + r"][\w\']*", Keyword.Type),
             (r"(')\[[^\]]*\]", Keyword.Type),  # tuples and lists get special treatment in GHC
             (r"(')\([^)]*\)", Keyword.Type),  # ..
+            (r"(')[:!#$%&*+.\\/<=>?@^|~-]+", Keyword.Type),  # promoted type operators
             #  Operators
             (r'\\(?![:!#$%&*+.\\/<=>?@^|~-]+)', Name.Function),  # lambda operator
             (r'(<-|::|->|=>|=)(?![:!#$%&*+.\\/<=>?@^|~-]+)', Operator.Word),  # specials
diff -r 7941677dc77d tests/examplefiles/example.hs
--- a/tests/examplefiles/example.hs     Mon Mar 13 19:16:03 2017 +0000
+++ b/tests/examplefiles/example.hs     Sat Sep 08 15:27:18 2018 -0400
@@ -39,3 +39,7 @@
 type IntChar = '[Int, Char]
 type Falsy = 'False
 type Falsy = '(10, 20, 30)
+type EmptyList = '[]
+type TypeCons = 1 ': '[]
+type Times = 1 '* 2

Comments (0)

  1. Log in to comment