diff options
author | Ian Lynagh <ian@well-typed.com> | 2013-02-26 01:27:43 +0000 |
---|---|---|
committer | Ian Lynagh <ian@well-typed.com> | 2013-02-26 14:40:47 +0000 |
commit | c68aac1f2e59d0844a285b757777b950da91a8be (patch) | |
tree | ae7dd0217ecf2b13b429e60386725ea80988c611 /compiler/parser | |
parent | b7ae3cd9273da044384de4a327a4a5d71190129e (diff) | |
download | haskell-c68aac1f2e59d0844a285b757777b950da91a8be.tar.gz |
Fix parsing of pragmas containing unicode characters; fixes #7671
Diffstat (limited to 'compiler/parser')
-rw-r--r-- | compiler/parser/Lexer.x | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/parser/Lexer.x b/compiler/parser/Lexer.x index 7e801dde21..fdf75cf003 100644 --- a/compiler/parser/Lexer.x +++ b/compiler/parser/Lexer.x @@ -2389,8 +2389,11 @@ dispatch_pragmas prags span buf len = case Map.lookup (clean_pragma (lexemeToStr Nothing -> lexError "unknown pragma" known_pragma :: Map String Action -> AlexAccPred Int -known_pragma prags _ _ len (AI _ buf) = (isJust $ Map.lookup (clean_pragma (lexemeToString (offsetBytes (- len) buf) len)) prags) - && (nextCharIsNot buf (\c -> isAlphaNum c || c == '_')) +known_pragma prags _ (AI _ startbuf) _ (AI _ curbuf) + = isKnown && nextCharIsNot curbuf pragmaNameChar + where l = lexemeToString startbuf (byteDiff startbuf curbuf) + isKnown = isJust $ Map.lookup (clean_pragma l) prags + pragmaNameChar c = isAlphaNum c || c == '_' clean_pragma :: String -> String clean_pragma prag = canon_ws (map toLower (unprefix prag)) |