grammars/hint.message.haskell.json in github-linguist-7.11.1 vs grammars/hint.message.haskell.json in github-linguist-7.12.0

- old
+ new

@@ -1,1786 +2 @@ -{ - "scopeName": "hint.message.haskell", - "patterns": [ - { - "match": "^[^:]*:(.+)$", - "captures": { - "1": { - "patterns": [ - { - "include": "source.haskell" - } - ] - } - } - }, - { - "begin": "^[^:]*:$", - "end": "^(?=\\S)", - "patterns": [ - { - "include": "source.haskell" - } - ] - }, - { - "begin": "‘", - "end": "’", - "patterns": [ - { - "include": "source.haskell" - } - ] - } - ], - "repository": { - "arrow": { - "patterns": [ - { - "name": "keyword.other.arrow.haskell", - "match": "(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))" - } - ] - }, - "assignment_op": { - "patterns": [ - { - "match": "=", - "captures": { - "0": { - "name": "keyword.operator.assignment.haskell" - } - } - } - ] - }, - "attribute_name": { - "patterns": [ - { - "name": "entity.other.attribute-name.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - }, - "big_arrow": { - "patterns": [ - { - "name": "keyword.other.big-arrow.haskell", - "match": "(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))" - } - ] - }, - "block_comment": { - "patterns": [ - { - "name": "comment.block.haddock.haskell", - "begin": "\\{-\\s*[|^]", - "end": "-\\}", - "patterns": [ - { - "include": "#block_comment" - } - ], - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.haddock.haskell" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.definition.comment.haddock.haskell" - } - }, - "applyEndPatternLast": true - }, - { - "name": "comment.block.haskell", - "begin": "\\{-", - "end": "-\\}", - "patterns": [ - { - "include": "#block_comment" - } - ], - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.block.start.haskell" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.definition.comment.block.end.haskell" - } - }, - "applyEndPatternLast": true - } - ] - }, - "c_preprocessor": { - "patterns": [ - { - "name": "meta.preprocessor.c.haskell", - "begin": "^(?=#)", - "end": "(?\u003c!\\\\)(?=$)", - "patterns": [ - { - "name": "keyword.control.c.haskell", - "match": "^#\\S+" - } - ] - } - ] - }, - "characters": { - "patterns": [ - { - "name": "constant.character.escape.haskell", - "match": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])" - }, - { - "name": "constant.character.escape.octal.haskell", - "match": "(?:\\\\o[0-7]+)" - }, - { - "name": "constant.character.escape.hexadecimal.haskell", - "match": "(?:\\\\x[0-9A-Fa-f]+)" - }, - { - "name": "constant.character.escape.control.haskell", - "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])" - } - ] - }, - "class_decl": { - "patterns": [ - { - "name": "meta.declaration.class.haskell", - "begin": "^([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.class.haskell" - } - }, - "endCaptures": { - "1": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "comma": { - "patterns": [ - { - "name": "punctuation.separator.comma.haskell", - "match": "," - } - ] - }, - "comments": { - "patterns": [ - { - "begin": "(^[ \\t]+)?(?=--+\\s+[|^])", - "end": "(?!\\G)", - "patterns": [ - { - "name": "comment.line.double-dash.haddock.haskell", - "begin": "(--+)\\s+([|^])", - "end": "$", - "beginCaptures": { - "1": { - "name": "punctuation.definition.comment.haskell" - }, - "2": { - "name": "punctuation.definition.comment.haddock.haskell" - } - } - } - ] - }, - { - "begin": "(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))", - "end": "(?!\\G)", - "patterns": [ - { - "name": "comment.line.double-dash.haskell", - "begin": "--", - "end": "$", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.haskell" - } - } - } - ] - }, - { - "include": "#block_comment" - } - ] - }, - "common_toplevel": { - "patterns": [ - { - "include": "#class_decl" - }, - { - "include": "#instance_decl" - }, - { - "include": "#deriving_instance_decl" - }, - { - "include": "#foreign_import" - }, - { - "include": "#regular_import" - }, - { - "include": "#data_decl" - }, - { - "include": "#type_alias" - }, - { - "include": "#c_preprocessor" - } - ] - }, - "ctor_type_declaration": { - "patterns": [ - { - "name": "meta.ctor.type-declaration.haskell", - "contentName": "meta.type-signature.haskell", - "begin": "^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))", - "end": "^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "patterns": [ - { - "include": "#type_ctor" - }, - { - "include": "#infix_op" - } - ] - }, - "3": { - "name": "keyword.other.double-colon.haskell" - } - } - } - ] - }, - "data_decl": { - "patterns": [ - { - "name": "meta.declaration.type.data.haskell", - "begin": "^([ \\t]*)(data|newtype)\\s+((?:(?!(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|{-).|{-.*?-})*)", - "end": "^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#string" - }, - { - "include": "#where" - }, - { - "include": "#deriving" - }, - { - "include": "#via" - }, - { - "include": "#assignment_op" - }, - { - "include": "#type_ctor_forall" - }, - { - "include": "#type_ctor_alt" - }, - { - "match": "\\|", - "captures": { - "0": { - "name": "punctuation.separator.pipe.haskell" - } - } - }, - { - "name": "meta.declaration.type.data.record.block.haskell", - "begin": "\\{", - "end": "\\}", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#comma" - }, - { - "include": "#record_field_declaration" - } - ], - "beginCaptures": { - "0": { - "name": "keyword.operator.record.begin.haskell" - } - }, - "endCaptures": { - "0": { - "name": "keyword.operator.record.end.haskell" - } - } - }, - { - "include": "#ctor_type_declaration" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.data.haskell" - }, - "3": { - "name": "meta.type-signature.haskell", - "patterns": [ - { - "include": "#family_and_instance" - }, - { - "include": "#type_signature" - } - ] - } - } - } - ] - }, - "deriving": { - "patterns": [ - { - "include": "#deriving_list" - }, - { - "include": "#deriving_simple" - }, - { - "include": "#deriving_keyword" - } - ] - }, - "deriving_instance_decl": { - "patterns": [ - { - "name": "meta.declaration.instance.deriving.haskell", - "contentName": "meta.type-signature.haskell", - "begin": "^([ \\t]*)(?:(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+|(deriving)\\s+(via)\\s+(.*)\\s+)?(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#pragma" - }, - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.haskell" - }, - "3": { - "patterns": [ - { - "include": "#deriving_strategies" - } - ] - }, - "4": { - "name": "keyword.other.haskell" - }, - "5": { - "name": "keyword.other.haskell" - }, - "6": { - "name": "meta.type-signature.haskell", - "patterns": [ - { - "include": "#type_signature" - } - ] - }, - "7": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "deriving_keyword": { - "patterns": [ - { - "name": "meta.deriving.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "1": { - "name": "keyword.other.haskell" - }, - "2": { - "patterns": [ - { - "include": "#deriving_strategies" - } - ] - } - } - } - ] - }, - "deriving_list": { - "patterns": [ - { - "name": "meta.deriving.haskell", - "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(", - "end": "\\)", - "patterns": [ - { - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "1": { - "name": "entity.other.inherited-class.haskell" - } - } - } - ], - "beginCaptures": { - "1": { - "name": "keyword.other.haskell" - }, - "2": { - "patterns": [ - { - "include": "#deriving_strategies" - } - ] - } - } - } - ] - }, - "deriving_simple": { - "patterns": [ - { - "name": "meta.deriving.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "1": { - "name": "keyword.other.haskell" - }, - "2": { - "patterns": [ - { - "include": "#deriving_strategies" - } - ] - }, - "3": { - "name": "entity.other.inherited-class.haskell" - } - } - } - ] - }, - "deriving_strategies": { - "patterns": [ - { - "name": "meta.deriving.strategy.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "1": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "double_colon_operator": { - "patterns": [ - { - "name": "keyword.other.double-colon.haskell", - "match": "(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))" - } - ] - }, - "empty_list": { - "patterns": [ - { - "name": "constant.language.empty-list.haskell", - "match": "\\[\\]" - } - ] - }, - "family_and_instance": { - "patterns": [ - { - "name": "keyword.other.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - }, - "foreign_import": { - "patterns": [ - { - "name": "meta.foreign.haskell", - "begin": "^([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "match": "(?:un)?safe", - "captures": { - "0": { - "name": "keyword.other.haskell" - } - } - }, - { - "include": "#function_type_declaration" - }, - { - "include": "#haskell_expr" - }, - { - "include": "#comments" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.haskell" - }, - "3": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "function_name": { - "patterns": [ - { - "name": "entity.name.function.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "0": { - "patterns": [ - { - "include": "#module_name_prefix" - } - ] - } - } - } - ] - }, - "function_type_declaration": { - "patterns": [ - { - "name": "meta.function.type-declaration.haskell", - "contentName": "meta.type-signature.haskell", - "begin": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))", - "end": "^(?!\\1[ \\t]|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))", - "patterns": [ - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "patterns": [ - { - "include": "#function_name" - }, - { - "include": "#infix_op" - } - ] - }, - "3": { - "name": "keyword.other.double-colon.haskell" - } - } - } - ] - }, - "function_type_declaration_with_scoped_type": { - "patterns": [ - { - "include": "#scoped_type_override" - }, - { - "include": "#function_type_declaration" - }, - { - "include": "#multiline_type_declaration" - } - ] - }, - "haskell_expr": { - "patterns": [ - { - "include": "#infix_function" - }, - { - "include": "#unit" - }, - { - "include": "#empty_list" - }, - { - "include": "#quasi_quotes" - }, - { - "include": "#keywords" - }, - { - "include": "#pragma" - }, - { - "include": "#string" - }, - { - "include": "#newline_escape" - }, - { - "include": "#quoted_character" - }, - { - "include": "#comments" - }, - { - "include": "#infix_op" - }, - { - "include": "#comma" - }, - { - "include": "#lit_num" - }, - { - "include": "#scoped_type" - }, - { - "include": "#operator" - }, - { - "include": "#identifier" - }, - { - "include": "#type_ctor" - } - ] - }, - "haskell_source": { - "patterns": [ - { - "include": "#shebang" - }, - { - "include": "#module_decl" - }, - { - "include": "#haskell_toplevel" - } - ] - }, - "haskell_toplevel": { - "patterns": [ - { - "include": "#liquidhaskell_annotation" - }, - { - "include": "#common_toplevel" - }, - { - "include": "#function_type_declaration_with_scoped_type" - }, - { - "include": "#haskell_expr" - } - ] - }, - "hsig_decl": { - "patterns": [ - { - "name": "meta.declaration.module.haskell", - "begin": "^([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#module_name" - }, - { - "include": "#module_exports" - }, - { - "include": "#invalid" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.haskell" - } - }, - "endCaptures": { - "1": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "hsig_source": { - "patterns": [ - { - "include": "#hsig_decl" - }, - { - "include": "#hsig_toplevel" - } - ] - }, - "hsig_toplevel": { - "patterns": [ - { - "include": "#common_toplevel" - }, - { - "include": "#function_type_declaration" - }, - { - "include": "#lazy_function_type_signature" - }, - { - "include": "#comments" - } - ] - }, - "identifier": { - "patterns": [ - { - "name": "identifier.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "0": { - "patterns": [ - { - "include": "#module_name_prefix" - }, - { - "name": "support.function.prelude.$1.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|errorWithoutStackTrace|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - } - } - } - ] - }, - "infix_function": { - "patterns": [ - { - "name": "keyword.operator.function.infix.haskell", - "match": "(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)", - "captures": { - "1": { - "name": "punctuation.definition.entity.haskell" - }, - "2": { - "name": "punctuation.definition.entity.haskell" - } - } - } - ] - }, - "infix_op": { - "patterns": [ - { - "name": "entity.name.function.operator.haskell", - "match": "(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))", - "captures": { - "0": { - "patterns": [ - { - "include": "#module_name_prefix" - }, - { - "name": "support.operator.prelude.haskell", - "match": "^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$" - } - ] - } - } - } - ] - }, - "instance_decl": { - "patterns": [ - { - "name": "meta.declaration.instance.haskell", - "contentName": "meta.type-signature.haskell", - "begin": "^([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#pragma" - }, - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.haskell" - } - }, - "endCaptures": { - "1": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "invalid": { - "patterns": [ - { - "name": "invalid.illegal.character-not-allowed-here.haskell", - "match": "\\S+" - } - ] - }, - "keywords": { - "patterns": [ - { - "name": "keyword.other.$1.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - }, - { - "name": "keyword.operator.$1.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(infix[lr]?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - }, - { - "name": "keyword.control.$1.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - }, - "lazy_function_type_signature": { - "patterns": [ - { - "name": "meta.function.type-declaration.haskell", - "contentName": "meta.type-signature.haskell", - "begin": "^([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$", - "end": "^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#double_colon_operator" - }, - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "patterns": [ - { - "include": "#function_name" - }, - { - "include": "#infix_op" - } - ] - } - } - } - ] - }, - "liquidhaskell_annotation": { - "patterns": [ - { - "name": "block.liquidhaskell.haskell", - "contentName": "block.liquidhaskell.annotation.haskell", - "begin": "\\{-@(?!#)", - "end": "@-\\}", - "patterns": [ - { - "include": "annotation.liquidhaskell.haskell" - } - ] - } - ] - }, - "lit_num": { - "patterns": [ - { - "name": "constant.numeric.hexfloat.haskell", - "match": "0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)" - }, - { - "name": "constant.numeric.hexadecimal.haskell", - "match": "0[xX][_0-9a-fA-F]+" - }, - { - "name": "constant.numeric.octal.haskell", - "match": "0[oO][_0-7]+" - }, - { - "name": "constant.numeric.binary.haskell", - "match": "0[bB][_01]+" - }, - { - "name": "constant.numeric.float.haskell", - "match": "[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)" - }, - { - "name": "constant.numeric.decimal.haskell", - "match": "[0-9][_0-9]*" - } - ] - }, - "module_decl": { - "patterns": [ - { - "name": "meta.declaration.module.haskell", - "begin": "^([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#module_name" - }, - { - "include": "#module_exports" - }, - { - "include": "#invalid" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.haskell" - } - }, - "endCaptures": { - "1": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "module_exports": { - "patterns": [ - { - "name": "meta.declaration.exports.haskell", - "begin": "\\(", - "end": "\\)", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#c_preprocessor" - }, - { - "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "patterns": [ - { - "include": "#invalid" - } - ], - "beginCaptures": { - "1": { - "name": "keyword.other.haskell" - } - }, - "endCaptures": { - "1": { - "name": "support.other.module.haskell" - } - } - }, - { - "include": "#function_name" - }, - { - "include": "#type_name" - }, - { - "include": "#comma" - }, - { - "include": "#infix_op" - }, - { - "name": "meta.other.constructor-list.haskell", - "begin": "\\(", - "end": "\\)", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#c_preprocessor" - }, - { - "include": "#type_ctor" - }, - { - "include": "#attribute_name" - }, - { - "include": "#comma" - }, - { - "name": "keyword.operator.wildcard.haskell", - "match": "\\.\\." - }, - { - "include": "#infix_op" - } - ] - } - ], - "applyEndPatternLast": true - } - ] - }, - "module_name": { - "patterns": [ - { - "name": "support.other.module.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - }, - "module_name_prefix": { - "patterns": [ - { - "name": "support.other.module.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\." - } - ] - }, - "multiline_type_declaration": { - "patterns": [ - { - "name": "meta.multiline.type-declaration.haskell", - "contentName": "meta.type-signature.haskell", - "begin": "^([ \\t]*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))", - "end": "^(?!\\1|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))", - "patterns": [ - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.double-colon.haskell" - } - } - } - ] - }, - "newline_escape": { - "patterns": [ - { - "name": "markup.other.escape.newline.haskell", - "match": "\\\\$" - } - ] - }, - "operator": { - "patterns": [ - { - "name": "keyword.operator.haskell", - "match": "(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+", - "captures": { - "0": { - "patterns": [ - { - "include": "#module_name_prefix" - }, - { - "name": "support.operator.prelude.haskell", - "match": "^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$" - } - ] - } - } - } - ] - }, - "pragma": { - "patterns": [ - { - "name": "meta.preprocessor.haskell", - "begin": "\\{-#", - "end": "#-\\}", - "patterns": [ - { - "name": "keyword.other.preprocessor.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - } - ] - }, - "quasi_quotes": { - "patterns": [ - { - "contentName": "quoted.quasiquotes.qq-$3.haskell", - "begin": "(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))(\\|)", - "end": "(\\|)(\\])", - "beginCaptures": { - "1": { - "name": "punctuation.definition.quasiquotes.begin.haskell" - }, - "2": { - "name": "entity.name.tag.haskell", - "patterns": [ - { - "include": "#module_name_prefix" - } - ] - } - }, - "endCaptures": { - "2": { - "name": "punctuation.definition.quasiquotes.end.haskell" - } - } - } - ] - }, - "quoted_character": { - "patterns": [ - { - "name": "string.quoted.single.haskell", - "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(')", - "captures": { - "1": { - "name": "punctuation.definition.string.begin.haskell" - }, - "2": { - "patterns": [ - { - "include": "#characters" - } - ] - }, - "3": { - "name": "punctuation.definition.string.end.haskell" - } - } - } - ] - }, - "record_field_declaration": { - "patterns": [ - { - "name": "meta.record-field.type-declaration.haskell", - "contentName": "meta.type-signature.haskell", - "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))", - "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))|})", - "patterns": [ - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "1": { - "patterns": [ - { - "include": "#attribute_name" - }, - { - "include": "#infix_op" - } - ] - }, - "2": { - "name": "keyword.other.double-colon.haskell" - } - } - } - ] - }, - "regular_import": { - "patterns": [ - { - "name": "meta.import.haskell", - "begin": "^([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#module_name" - }, - { - "include": "#module_exports" - }, - { - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "1": { - "name": "keyword.other.haskell" - } - } - }, - { - "include": "#comments" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "scoped_type": { - "patterns": [ - { - "match": "\\(((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(?\u003cparen2\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen2\u003e\\))*))\\)", - "captures": { - "1": { - "patterns": [ - { - "include": "#haskell_expr" - } - ] - } - } - }, - { - "match": "((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|$).|{-.*?-})*)", - "captures": { - "1": { - "name": "keyword.other.double-colon.haskell" - }, - "2": { - "name": "meta.type-signature.haskell", - "patterns": [ - { - "include": "#type_signature" - } - ] - } - } - } - ] - }, - "scoped_type_override": { - "patterns": [ - { - "match": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))).|{-.*?-})*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))", - "captures": { - "2": { - "patterns": [ - { - "include": "#identifier" - } - ] - }, - "3": { - "name": "keyword.other.double-colon.haskell" - }, - "4": { - "name": "meta.type-signature.haskell", - "patterns": [ - { - "include": "#type_signature" - } - ] - }, - "5": { - "patterns": [ - { - "include": "#assignment_op" - }, - { - "include": "#operator" - } - ] - } - } - } - ] - }, - "shebang": { - "patterns": [ - { - "name": "comment.line.shebang.haskell", - "match": "^\\#\\!.*\\brunhaskell\\b.*$" - } - ] - }, - "string": { - "patterns": [ - { - "name": "string.quoted.double.haskell", - "begin": "\"", - "end": "\"", - "patterns": [ - { - "include": "#characters" - }, - { - "begin": "\\\\\\s", - "end": "\\\\", - "patterns": [ - { - "include": "#invalid" - } - ], - "beginCaptures": { - "0": { - "name": "markup.other.escape.newline.begin.haskell" - } - }, - "endCaptures": { - "0": { - "name": "markup.other.escape.newline.end.haskell" - } - } - } - ], - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.haskell" - } - }, - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.haskell" - } - } - } - ] - }, - "type_alias": { - "patterns": [ - { - "name": "meta.declaration.type.type.haskell", - "contentName": "meta.type-signature.haskell", - "begin": "^([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "^(?!\\1[ \\t]|[ \\t]*$)", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#family_and_instance" - }, - { - "include": "#where" - }, - { - "include": "#assignment_op" - }, - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.type.haskell" - } - } - } - ] - }, - "type_ctor": { - "patterns": [ - { - "name": "entity.name.tag.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "0": { - "patterns": [ - { - "include": "#module_name_prefix" - }, - { - "name": "support.tag.prelude.$1.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|LT|Left|Right|True|False)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - } - } - } - ] - }, - "type_ctor_alt": { - "patterns": [ - { - "contentName": "meta.type-signature.haskell", - "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*", - "end": "^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "1": { - "patterns": [ - { - "include": "#type_ctor" - } - ] - } - } - } - ] - }, - "type_ctor_forall": { - "patterns": [ - { - "contentName": "meta.type-signature.haskell", - "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "end": "^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))", - "patterns": [ - { - "include": "#comments" - }, - { - "match": "\\G.*?(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))", - "captures": { - "0": { - "patterns": [ - { - "include": "#type_signature" - } - ] - } - } - }, - { - "match": "\\G.*?\\.", - "captures": { - "0": { - "patterns": [ - { - "include": "#type_signature" - } - ] - } - } - }, - { - "include": "#big_arrow" - }, - { - "include": "#type_variable" - }, - { - "begin": "\\(", - "end": "\\)", - "patterns": [ - { - "include": "#type_signature" - } - ] - }, - { - "include": "#type_ctor_alt" - } - ], - "beginCaptures": { - "0": { - "patterns": [ - { - "include": "#type_signature" - } - ] - } - } - } - ] - }, - "type_name": { - "patterns": [ - { - "name": "entity.name.type.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "0": { - "patterns": [ - { - "include": "#module_name_prefix" - }, - { - "name": "entity.other.inherited-class.prelude.$1.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - }, - { - "name": "support.class.prelude.$1.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Just|Maybe|Nothing|Word)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - } - } - } - ] - }, - "type_signature": { - "patterns": [ - { - "include": "#pragma" - }, - { - "include": "#comments" - }, - { - "name": "keyword.other.forall.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - }, - { - "name": "constant.language.unit.promoted.haskell", - "match": "'(\\(\\))", - "captures": { - "1": { - "patterns": [ - { - "include": "#unit" - } - ] - } - } - }, - { - "include": "#unit" - }, - { - "name": "constant.language.empty-list.promoted.haskell", - "match": "'(\\[\\])", - "captures": { - "1": { - "patterns": [ - { - "include": "#empty_list" - } - ] - } - } - }, - { - "include": "#empty_list" - }, - { - "include": "#string" - }, - { - "include": "#arrow" - }, - { - "include": "#big_arrow" - }, - { - "name": "keyword.operator.promoted.haskell", - "match": "'((?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+)", - "captures": { - "1": { - "patterns": [ - { - "include": "#operator" - } - ] - } - } - }, - { - "include": "#operator" - }, - { - "include": "#type_variable" - }, - { - "name": "entity.name.type.promoted.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}'])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))'([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "1": { - "patterns": [ - { - "include": "#type_name" - } - ] - } - } - }, - { - "include": "#type_name" - }, - { - "include": "#lit_num" - } - ] - }, - "type_variable": { - "patterns": [ - { - "name": "variable.other.generic-type.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - }, - "unit": { - "patterns": [ - { - "name": "constant.language.unit.haskell", - "match": "\\(\\)" - } - ] - }, - "via": { - "patterns": [ - { - "include": "#via_list" - }, - { - "include": "#via_list_newline" - }, - { - "include": "#via_indent" - }, - { - "include": "#via_simple" - }, - { - "include": "#via_keyword" - } - ] - }, - "via_indent": { - "patterns": [ - { - "name": "meta.via.haskell", - "begin": "^([ \\t]*)(via)\\s*", - "end": "^(?!\\1|[ \\t]*$)", - "patterns": [ - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "2": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "via_keyword": { - "patterns": [ - { - "name": "meta.via.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "1": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "via_list": { - "patterns": [ - { - "name": "meta.via.haskell", - "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(", - "end": "\\)", - "patterns": [ - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "1": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "via_list_newline": { - "patterns": [ - { - "name": "meta.via.haskell", - "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*", - "end": "$", - "patterns": [ - { - "include": "#type_signature" - } - ], - "beginCaptures": { - "1": { - "name": "keyword.other.haskell" - } - } - } - ] - }, - "via_simple": { - "patterns": [ - { - "name": "meta.via.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))", - "captures": { - "1": { - "name": "keyword.other.haskell" - }, - "2": { - "patterns": [ - { - "include": "#type_signature" - } - ] - } - } - } - ] - }, - "where": { - "patterns": [ - { - "name": "keyword.other.haskell", - "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))" - } - ] - } - } -} +{"scopeName":"hint.message.haskell","patterns":[{"match":"^[^:]*:(.+)$","captures":{"1":{"patterns":[{"include":"source.haskell"}]}}},{"begin":"^[^:]*:$","end":"^(?=\\S)","patterns":[{"include":"source.haskell"}]},{"begin":"‘","end":"’","patterns":[{"include":"source.haskell"}]}],"repository":{"arrow":{"patterns":[{"name":"keyword.other.arrow.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"assignment_op":{"patterns":[{"match":"=","captures":{"0":{"name":"keyword.operator.assignment.haskell"}}}]},"attribute_name":{"patterns":[{"name":"entity.other.attribute-name.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"big_arrow":{"patterns":[{"name":"keyword.other.big-arrow.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"block_comment":{"patterns":[{"name":"comment.block.haddock.haskell","begin":"\\{-\\s*[|^]","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell"}},"applyEndPatternLast":true},{"name":"comment.block.haskell","begin":"\\{-","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.block.start.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.block.end.haskell"}},"applyEndPatternLast":true}]},"c_preprocessor":{"patterns":[{"name":"meta.preprocessor.c.haskell","begin":"^(?=#)","end":"(?\u003c!\\\\)(?=$)","patterns":[{"name":"keyword.control.c.haskell","match":"^#\\S+"}]}]},"characters":{"patterns":[{"name":"constant.character.escape.haskell","match":"\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])"},{"name":"constant.character.escape.octal.haskell","match":"(?:\\\\o[0-7]+)"},{"name":"constant.character.escape.hexadecimal.haskell","match":"(?:\\\\x[0-9A-Fa-f]+)"},{"name":"constant.character.escape.control.haskell","match":"(?:\\\\\\^[A-Z@\\[\\]\\\\^_])"}]},"class_decl":{"patterns":[{"name":"meta.declaration.class.haskell","begin":"^([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.class.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"comma":{"patterns":[{"name":"punctuation.separator.comma.haskell","match":","}]},"comments":{"patterns":[{"begin":"(^[ \\t]+)?(?=--+\\s+[|^])","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.haddock.haskell","begin":"(--+)\\s+([|^])","end":"$","beginCaptures":{"1":{"name":"punctuation.definition.comment.haskell"},"2":{"name":"punctuation.definition.comment.haddock.haskell"}}}]},{"begin":"(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.haskell","begin":"--","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.haskell"}}}]},{"include":"#block_comment"}]},"common_toplevel":{"patterns":[{"include":"#class_decl"},{"include":"#instance_decl"},{"include":"#deriving_instance_decl"},{"include":"#foreign_import"},{"include":"#regular_import"},{"include":"#data_decl"},{"include":"#type_alias"},{"include":"#c_preprocessor"}]},"ctor_type_declaration":{"patterns":[{"name":"meta.ctor.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#type_ctor"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell"}}}]},"data_decl":{"patterns":[{"name":"meta.declaration.type.data.haskell","begin":"^([ \\t]*)(data|newtype)\\s+((?:(?!(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|{-).|{-.*?-})*)","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#string"},{"include":"#where"},{"include":"#deriving"},{"include":"#via"},{"include":"#assignment_op"},{"include":"#type_ctor_forall"},{"include":"#type_ctor_alt"},{"match":"\\|","captures":{"0":{"name":"punctuation.separator.pipe.haskell"}}},{"name":"meta.declaration.type.data.record.block.haskell","begin":"\\{","end":"\\}","patterns":[{"include":"#comments"},{"include":"#comma"},{"include":"#record_field_declaration"}],"beginCaptures":{"0":{"name":"keyword.operator.record.begin.haskell"}},"endCaptures":{"0":{"name":"keyword.operator.record.end.haskell"}}},{"include":"#ctor_type_declaration"}],"beginCaptures":{"2":{"name":"keyword.other.data.haskell"},"3":{"name":"meta.type-signature.haskell","patterns":[{"include":"#family_and_instance"},{"include":"#type_signature"}]}}}]},"deriving":{"patterns":[{"include":"#deriving_list"},{"include":"#deriving_simple"},{"include":"#deriving_keyword"}]},"deriving_instance_decl":{"patterns":[{"name":"meta.declaration.instance.deriving.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+|(deriving)\\s+(via)\\s+(.*)\\s+)?(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"},"3":{"patterns":[{"include":"#deriving_strategies"}]},"4":{"name":"keyword.other.haskell"},"5":{"name":"keyword.other.haskell"},"6":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]},"7":{"name":"keyword.other.haskell"}}}]},"deriving_keyword":{"patterns":[{"name":"meta.deriving.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_list":{"patterns":[{"name":"meta.deriving.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(","end":"\\)","patterns":[{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"entity.other.inherited-class.haskell"}}}],"beginCaptures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_simple":{"patterns":[{"name":"meta.deriving.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]},"3":{"name":"entity.other.inherited-class.haskell"}}}]},"deriving_strategies":{"patterns":[{"name":"meta.deriving.strategy.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}}]},"double_colon_operator":{"patterns":[{"name":"keyword.other.double-colon.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"empty_list":{"patterns":[{"name":"constant.language.empty-list.haskell","match":"\\[\\]"}]},"family_and_instance":{"patterns":[{"name":"keyword.other.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"foreign_import":{"patterns":[{"name":"meta.foreign.haskell","begin":"^([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"match":"(?:un)?safe","captures":{"0":{"name":"keyword.other.haskell"}}},{"include":"#function_type_declaration"},{"include":"#haskell_expr"},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"},"3":{"name":"keyword.other.haskell"}}}]},"function_name":{"patterns":[{"name":"entity.name.function.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"}]}}}]},"function_type_declaration":{"patterns":[{"name":"meta.function.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell"}}}]},"function_type_declaration_with_scoped_type":{"patterns":[{"include":"#scoped_type_override"},{"include":"#function_type_declaration"},{"include":"#multiline_type_declaration"}]},"haskell_expr":{"patterns":[{"include":"#infix_function"},{"include":"#unit"},{"include":"#empty_list"},{"include":"#quasi_quotes"},{"include":"#keywords"},{"include":"#pragma"},{"include":"#string"},{"include":"#newline_escape"},{"include":"#quoted_character"},{"include":"#comments"},{"include":"#infix_op"},{"include":"#comma"},{"include":"#lit_num"},{"include":"#scoped_type"},{"include":"#operator"},{"include":"#identifier"},{"include":"#type_ctor"}]},"haskell_source":{"patterns":[{"include":"#shebang"},{"include":"#module_decl"},{"include":"#haskell_toplevel"}]},"haskell_toplevel":{"patterns":[{"include":"#liquidhaskell_annotation"},{"include":"#common_toplevel"},{"include":"#function_type_declaration_with_scoped_type"},{"include":"#haskell_expr"}]},"hsig_decl":{"patterns":[{"name":"meta.declaration.module.haskell","begin":"^([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"hsig_source":{"patterns":[{"include":"#hsig_decl"},{"include":"#hsig_toplevel"}]},"hsig_toplevel":{"patterns":[{"include":"#common_toplevel"},{"include":"#function_type_declaration"},{"include":"#lazy_function_type_signature"},{"include":"#comments"}]},"identifier":{"patterns":[{"name":"identifier.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.function.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|errorWithoutStackTrace|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"infix_function":{"patterns":[{"name":"keyword.operator.function.infix.haskell","match":"(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)","captures":{"1":{"name":"punctuation.definition.entity.haskell"},"2":{"name":"punctuation.definition.entity.haskell"}}}]},"infix_op":{"patterns":[{"name":"entity.name.function.operator.haskell","match":"(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell","match":"^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$"}]}}}]},"instance_decl":{"patterns":[{"name":"meta.declaration.instance.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"invalid":{"patterns":[{"name":"invalid.illegal.character-not-allowed-here.haskell","match":"\\S+"}]},"keywords":{"patterns":[{"name":"keyword.other.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.operator.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(infix[lr]?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.control.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"lazy_function_type_signature":{"patterns":[{"name":"meta.function.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#double_colon_operator"},{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]}}}]},"liquidhaskell_annotation":{"patterns":[{"name":"block.liquidhaskell.haskell","contentName":"block.liquidhaskell.annotation.haskell","begin":"\\{-@(?!#)","end":"@-\\}","patterns":[{"include":"annotation.liquidhaskell.haskell"}]}]},"lit_num":{"patterns":[{"name":"constant.numeric.hexfloat.haskell","match":"0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)"},{"name":"constant.numeric.hexadecimal.haskell","match":"0[xX][_0-9a-fA-F]+"},{"name":"constant.numeric.octal.haskell","match":"0[oO][_0-7]+"},{"name":"constant.numeric.binary.haskell","match":"0[bB][_01]+"},{"name":"constant.numeric.float.haskell","match":"[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)"},{"name":"constant.numeric.decimal.haskell","match":"[0-9][_0-9]*"}]},"module_decl":{"patterns":[{"name":"meta.declaration.module.haskell","begin":"^([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"module_exports":{"patterns":[{"name":"meta.declaration.exports.haskell","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","patterns":[{"include":"#invalid"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"support.other.module.haskell"}}},{"include":"#function_name"},{"include":"#type_name"},{"include":"#comma"},{"include":"#infix_op"},{"name":"meta.other.constructor-list.haskell","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"include":"#type_ctor"},{"include":"#attribute_name"},{"include":"#comma"},{"name":"keyword.operator.wildcard.haskell","match":"\\.\\."},{"include":"#infix_op"}]}],"applyEndPatternLast":true}]},"module_name":{"patterns":[{"name":"support.other.module.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"module_name_prefix":{"patterns":[{"name":"support.other.module.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."}]},"multiline_type_declaration":{"patterns":[{"name":"meta.multiline.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","end":"^(?!\\1|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.double-colon.haskell"}}}]},"newline_escape":{"patterns":[{"name":"markup.other.escape.newline.haskell","match":"\\\\$"}]},"operator":{"patterns":[{"name":"keyword.operator.haskell","match":"(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell","match":"^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$"}]}}}]},"pragma":{"patterns":[{"name":"meta.preprocessor.haskell","begin":"\\{-#","end":"#-\\}","patterns":[{"name":"keyword.other.preprocessor.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}]},"quasi_quotes":{"patterns":[{"contentName":"quoted.quasiquotes.qq-$3.haskell","begin":"(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))(\\|)","end":"(\\|)(\\])","beginCaptures":{"1":{"name":"punctuation.definition.quasiquotes.begin.haskell"},"2":{"name":"entity.name.tag.haskell","patterns":[{"include":"#module_name_prefix"}]}},"endCaptures":{"2":{"name":"punctuation.definition.quasiquotes.end.haskell"}}}]},"quoted_character":{"patterns":[{"name":"string.quoted.single.haskell","match":"(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(')","captures":{"1":{"name":"punctuation.definition.string.begin.haskell"},"2":{"patterns":[{"include":"#characters"}]},"3":{"name":"punctuation.definition.string.end.haskell"}}}]},"record_field_declaration":{"patterns":[{"name":"meta.record-field.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))|})","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#attribute_name"},{"include":"#infix_op"}]},"2":{"name":"keyword.other.double-colon.haskell"}}}]},"regular_import":{"patterns":[{"name":"meta.import.haskell","begin":"^([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#module_name"},{"include":"#module_exports"},{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}}}]},"scoped_type":{"patterns":[{"match":"\\(((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(?\u003cparen2\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen2\u003e\\))*))\\)","captures":{"1":{"patterns":[{"include":"#haskell_expr"}]}}},{"match":"((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|$).|{-.*?-})*)","captures":{"1":{"name":"keyword.other.double-colon.haskell"},"2":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]}}}]},"scoped_type_override":{"patterns":[{"match":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))).|{-.*?-})*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","captures":{"2":{"patterns":[{"include":"#identifier"}]},"3":{"name":"keyword.other.double-colon.haskell"},"4":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]},"5":{"patterns":[{"include":"#assignment_op"},{"include":"#operator"}]}}}]},"shebang":{"patterns":[{"name":"comment.line.shebang.haskell","match":"^\\#\\!.*\\brunhaskell\\b.*$"}]},"string":{"patterns":[{"name":"string.quoted.double.haskell","begin":"\"","end":"\"","patterns":[{"include":"#characters"},{"begin":"\\\\\\s","end":"\\\\","patterns":[{"include":"#invalid"}],"beginCaptures":{"0":{"name":"markup.other.escape.newline.begin.haskell"}},"endCaptures":{"0":{"name":"markup.other.escape.newline.end.haskell"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.haskell"}}}]},"type_alias":{"patterns":[{"name":"meta.declaration.type.type.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#family_and_instance"},{"include":"#where"},{"include":"#assignment_op"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.type.haskell"}}}]},"type_ctor":{"patterns":[{"name":"entity.name.tag.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.tag.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|LT|Left|Right|True|False)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_ctor_alt":{"patterns":[{"contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#type_ctor"}]}}}]},"type_ctor_forall":{"patterns":[{"contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"match":"\\G.*?(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"match":"\\G.*?\\.","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"include":"#big_arrow"},{"include":"#type_variable"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#type_signature"}]},{"include":"#type_ctor_alt"}],"beginCaptures":{"0":{"patterns":[{"include":"#type_signature"}]}}}]},"type_name":{"patterns":[{"name":"entity.name.type.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"entity.other.inherited-class.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"support.class.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Just|Maybe|Nothing|Word)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_signature":{"patterns":[{"include":"#pragma"},{"include":"#comments"},{"name":"keyword.other.forall.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"constant.language.unit.promoted.haskell","match":"'(\\(\\))","captures":{"1":{"patterns":[{"include":"#unit"}]}}},{"include":"#unit"},{"name":"constant.language.empty-list.promoted.haskell","match":"'(\\[\\])","captures":{"1":{"patterns":[{"include":"#empty_list"}]}}},{"include":"#empty_list"},{"include":"#string"},{"include":"#arrow"},{"include":"#big_arrow"},{"name":"keyword.operator.promoted.haskell","match":"'((?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+)","captures":{"1":{"patterns":[{"include":"#operator"}]}}},{"include":"#operator"},{"include":"#type_variable"},{"name":"entity.name.type.promoted.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}'])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))'([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"patterns":[{"include":"#type_name"}]}}},{"include":"#type_name"},{"include":"#lit_num"}]},"type_variable":{"patterns":[{"name":"variable.other.generic-type.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"unit":{"patterns":[{"name":"constant.language.unit.haskell","match":"\\(\\)"}]},"via":{"patterns":[{"include":"#via_list"},{"include":"#via_list_newline"},{"include":"#via_indent"},{"include":"#via_simple"},{"include":"#via_keyword"}]},"via_indent":{"patterns":[{"name":"meta.via.haskell","begin":"^([ \\t]*)(via)\\s*","end":"^(?!\\1|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}}}]},"via_keyword":{"patterns":[{"name":"meta.via.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}}]},"via_list":{"patterns":[{"name":"meta.via.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(","end":"\\)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"via_list_newline":{"patterns":[{"name":"meta.via.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*","end":"$","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"via_simple":{"patterns":[{"name":"meta.via.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#type_signature"}]}}}]},"where":{"patterns":[{"name":"keyword.other.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}