diff --git a/ghc/compiler/parser/Lexer.x b/ghc/compiler/parser/Lexer.x index 31acaa0409becf9cef3e574848934316b195a3e0..4c1b48efc0845f3009dc19f4d8e5e26eadb36103 100644 --- a/ghc/compiler/parser/Lexer.x +++ b/ghc/compiler/parser/Lexer.x @@ -44,14 +44,14 @@ import Ctype import Util ( maybePrefixMatch, readRational ) import DATA_BITS -import Data.Char +import Data.Char ( chr ) import Ratio --import TRACE #if __GLASGOW_HASKELL__ >= 605 -import Data.Char ( GeneralCategory(..), generalCategory ) +import Data.Char ( GeneralCategory(..), generalCategory, isPrint, isUpper ) #else -import Compat.Unicode ( GeneralCategory(..), generalCategory ) +import Compat.Unicode ( GeneralCategory(..), generalCategory, isPrint, isUpper ) #endif } diff --git a/ghc/lib/compat/Compat/Unicode.hs b/ghc/lib/compat/Compat/Unicode.hs index 4765511954783d005b2d7b9c470df5bd42c9d107..3c8bfc6a06011db59673cf9c227ec6b203646de8 100644 --- a/ghc/lib/compat/Compat/Unicode.hs +++ b/ghc/lib/compat/Compat/Unicode.hs @@ -1,6 +1,6 @@ {-# OPTIONS -cpp #-} module Compat.Unicode ( - GeneralCategory(..), generalCategory, + GeneralCategory(..), generalCategory, isPrint, isUpper ) where #if __GLASGOW_HASKELL__ > 604 @@ -54,4 +54,13 @@ generalCategory c = toEnum (wgencat (fromIntegral (ord c))) foreign import ccall unsafe "u_gencat" wgencat :: CInt -> Int + +isPrint c = iswprint (fromIntegral (ord c)) /= 0 +isUpper c = iswupper (fromIntegral (ord c)) /= 0 + +foreign import ccall unsafe "u_iswprint" + iswprint :: CInt -> CInt + +foreign import ccall unsafe "u_iswupper" + iswupper :: CInt -> CInt #endif