language-c-quote 0.7.1 → 0.7.2
raw patch · 6 files changed
+75/−42 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Language.C.Quote.Base: instance ToIdent (SrcLoc -> Id)
+ Language.C.Quote.Base: instance ToIdent Id
+ Language.C.Quote.Base: instance ToIdent String
Files
- Language/C/Pretty.hs +6/−7
- Language/C/Quote/Base.hs +13/−1
- Language/C/Quote/OpenCL.hs +10/−5
- dist/build/Language/C/Parser/Lexer.hs +34/−26
- language-c-quote.cabal +1/−1
- tests/unit/Main.hs +11/−2
Language/C/Pretty.hs view
@@ -497,7 +497,7 @@ text "@property" <+> case attrs of [] -> empty- _ -> parensList (map ppr attrs)+ _ -> parensList (map ppr attrs) <> space <> ppr field <> semi ppr (ObjCIfaceReq req loc) @@ -529,12 +529,11 @@ instance Pretty ObjCParm where ppr (ObjCParm sel ty attrs arg loc) = pprLoc loc $- maybe empty ppr sel- <> case (sel, arg) of- (Nothing , Nothing) -> error $ "pretty printing 'ObjCParm': empty " ++ show loc- (Just sid, Nothing) -> ppr sid- (_ , Just pid) - -> maybe empty ppr sel <> colon <> maybe empty (parens . ppr) ty <> ppr attrs <> ppr pid+ case (sel, arg) of+ (Nothing , Nothing) -> error $ "pretty printing 'ObjCParm': empty " ++ show loc+ (Just sid, Nothing) -> ppr sid+ (_ , Just pid) + -> maybe empty ppr sel <> colon <> maybe empty (parens . ppr) ty <> ppr attrs <> ppr pid instance Pretty ObjCMethodProto where ppr (ObjCMethodProto isClassMeth resTy attrs1 parms vargs attrs2 loc)
Language/C/Quote/Base.hs view
@@ -40,6 +40,18 @@ import qualified Language.C.Parser as P import qualified Language.C.Syntax as C +class ToIdent a where+ toIdent :: a -> SrcLoc -> C.Id++instance ToIdent C.Id where+ toIdent ident _ = ident++instance ToIdent (SrcLoc -> C.Id) where+ toIdent ident = ident++instance ToIdent String where+ toIdent s loc = C.Id s loc+ class ToExp a where toExp :: a -> SrcLoc -> C.Exp @@ -77,7 +89,7 @@ qqStringE s = Just $ litE $ stringL s qqIdE :: C.Id -> Maybe (Q Exp)-qqIdE (C.AntiId v loc) = Just [|C.Id $(antiVarE v) $(qqLocE loc)|]+qqIdE (C.AntiId v loc) = Just [|toIdent $(antiVarE v) $(qqLocE loc)|] qqIdE _ = Nothing qqDeclSpecE :: C.DeclSpec -> Maybe (Q Exp)
Language/C/Quote/OpenCL.hs view
@@ -31,11 +31,16 @@ typenames :: [String] typenames =- concatMap typeN- ["char", "uchar", "short", "ushort", "int", "uint",- "long" , "ulong", "float", "double", "bool", "half", "quad"] ++- ["uchar", "ushort", "uint", "ulong",- "half", "quad", "image2d_t", "image3d_t", "sampler_t", "event_t"]+ ["bool", "char", "uchar", "short", "ushort", "int", "uint",+ "long" , "ulong", "float", "half"]+ ++ ["size_t", "ptrdiff_t", "intptr_t", "uintpyt_t", "void"]+ ++ concatMap typeN ["char", "uchar", "short", "ushort",+ "int", "uint", "long", "ulong", "float"]+ ++ ["image2d_t", "image3d_t", "sampler_t", "event_t"]+ -- OpenCL 1.2+ ++ ["double"]+ ++ concatMap typeN ["double"]+ ++ ["image2d_array_t", "image1d_t", "image1d_buffer_t", "image1d_array_t"] typeN :: String -> [String] typeN typename = [typename ++ show n | n <- [2, 3, 4, 8, 16 :: Integer]]
dist/build/Language/C/Parser/Lexer.hs view
@@ -74,7 +74,7 @@ alex_deflt :: AlexAddr alex_deflt = AlexA# "\xff\xff\xff\xff\x80\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4b\x00\x4b\x00\x60\x00\x60\x00\xff\xff\x65\x00\x65\x00\xff\xff\x6b\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7a\x00\x7c\x00\x7c\x00\x7e\x00\x7e\x00\x80\x00\x80\x00\x80\x00\x81\x00\x81\x00\x83\x00\x83\x00\x88\x00\x88\x00\x89\x00\x89\x00\x8b\x00\x8b\x00\x90\x00\x90\x00\x91\x00\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\xa8\x00\xab\x00\xab\x00\xae\x00\xae\x00\x80\x00\xb1\x00\xb1\x00\xb4\x00\xb4\x00\xb6\x00\xff\xff\xb6\x00\xb6\x00\xb8\x00\xb8\x00\xbb\x00\xbb\x00\xbd\x00\xff\xff\xbd\x00\xbd\x00\xbf\x00\xbf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x01\x1a\x01\x1a\x01\x22\x01\x22\x01\x22\x01\x23\x01\x23\x01\x23\x01\x0e\x01\x0e\x01\x0e\x01\x0b\x01\x0b\x01\x0b\x01\x0a\x01\xb6\x00\x0a\x01\x0a\x01\x09\x01\x09\x01\x09\x01\x08\x01\xbd\x00\x08\x01\x08\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x08\x01\x09\x01\x0a\x01\x0b\x01\xff\xff\x1a\x01\x0e\x01\xff\xff\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x1a\x01\x22\x01\x23\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# -alex_accept = listArray (0::Int,386) [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAccPred (alex_action_0) ( allowAnti )),(AlexAcc (alex_action_45))],[(AlexAccPred (alex_action_1) ( allowAnti ))],[(AlexAccPred (alex_action_2) ( allowAnti ))],[(AlexAccPred (alex_action_3) ( allowAnti ))],[(AlexAccPred (alex_action_4) ( allowAnti ))],[(AlexAccPred (alex_action_5) ( allowAnti ))],[(AlexAccPred (alex_action_6) ( allowAnti ))],[(AlexAccPred (alex_action_7) ( allowAnti ))],[(AlexAccPred (alex_action_8) ( allowAnti ))],[(AlexAccPred (alex_action_9) ( allowAnti ))],[(AlexAccPred (alex_action_10) ( allowAnti ))],[(AlexAccPred (alex_action_11) ( allowAnti ))],[(AlexAccPred (alex_action_12) ( allowAnti ))],[(AlexAccPred (alex_action_13) ( allowAnti ))],[(AlexAccPred (alex_action_14) ( allowAnti ))],[(AlexAccPred (alex_action_15) ( allowAnti ))],[(AlexAccPred (alex_action_16) ( allowAnti ))],[(AlexAccPred (alex_action_17) ( allowAnti ))],[(AlexAccPred (alex_action_18) ( allowAnti ))],[(AlexAccPred (alex_action_19) ( allowAnti ))],[(AlexAccPred (alex_action_20) ( allowAnti ))],[(AlexAccPred (alex_action_21) ( allowAnti ))],[(AlexAccPred (alex_action_22) ( allowAnti ))],[(AlexAccPred (alex_action_23) ( allowAnti ))],[(AlexAccPred (alex_action_24) ( allowAnti ))],[(AlexAccPred (alex_action_25) ( allowAnti ))],[(AlexAccPred (alex_action_26) ( allowAnti ))],[(AlexAccPred (alex_action_27) ( allowAnti ))],[(AlexAccPred (alex_action_28) ( allowAnti ))],[(AlexAccPred (alex_action_29) ( allowAnti ))],[(AlexAccPred (alex_action_30) ( allowAnti ))],[(AlexAccPred (alex_action_31) ( allowAnti ))],[(AlexAccPred (alex_action_32) ( allowAnti ))],[(AlexAccPred (alex_action_33) ( allowAnti ))],[(AlexAccPred (alex_action_34) ( allowAnti ))],[(AlexAccPred (alex_action_35) ( allowAnti ))],[(AlexAccPred (alex_action_36) ( allowAnti ))],[(AlexAccPred (alex_action_37) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccPred (alex_action_37) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))),(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccPred (alex_action_38) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccPred (alex_action_38) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))),(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccPred (alex_action_39) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccPred (alex_action_39) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))),(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False)))],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_50))],[(AlexAcc (alex_action_51))],[(AlexAcc (alex_action_52))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_55))],[(AlexAcc (alex_action_56))],[(AlexAcc (alex_action_57))],[(AlexAcc (alex_action_58))],[(AlexAcc (alex_action_59))],[(AlexAcc (alex_action_60))],[(AlexAcc (alex_action_61))],[(AlexAcc (alex_action_62))],[(AlexAcc (alex_action_63))],[(AlexAcc (alex_action_64))],[(AlexAcc (alex_action_65))],[(AlexAcc (alex_action_66))],[(AlexAcc (alex_action_67))],[(AlexAcc (alex_action_68))],[(AlexAcc (alex_action_69))],[(AlexAcc (alex_action_70))],[(AlexAcc (alex_action_71))],[(AlexAcc (alex_action_72))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_76))],[(AlexAcc (alex_action_77))],[(AlexAcc (alex_action_78))],[(AlexAcc (alex_action_79))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_84))],[(AlexAcc (alex_action_85))],[(AlexAcc (alex_action_86))],[(AlexAcc (alex_action_87))],[(AlexAcc (alex_action_88))],[(AlexAcc (alex_action_89))],[(AlexAcc (alex_action_90))],[(AlexAcc (alex_action_91))],[(AlexAcc (alex_action_92))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_95))],[(AlexAcc (alex_action_96))],[(AlexAcc (alex_action_97))],[(AlexAccPred (alex_action_98) ( ifExtension cudaExts ))],[(AlexAccPred (alex_action_99) ( ifExtension cudaExts ))],[(AlexAccPred (alex_action_100) ( ifExtension objcExts ))]]+alex_accept = listArray (0::Int,386) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccPred (alex_action_0) ( allowAnti )(AlexAcc (alex_action_45)),AlexAccPred (alex_action_1) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_2) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_3) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_4) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_5) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_6) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_7) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_8) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_9) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_10) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_11) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_12) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_13) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_14) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_15) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_16) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_17) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_18) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_19) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_20) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_21) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_22) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_23) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_24) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_25) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_26) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_27) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_28) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_29) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_30) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_31) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_32) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_33) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_34) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_35) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_36) ( allowAnti )(AlexAccNone),AlexAccPred (alex_action_37) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccPred (alex_action_37) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone)),AlexAccPred (alex_action_38) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccPred (alex_action_38) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone)),AlexAccPred (alex_action_39) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccPred (alex_action_39) (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone)),AlexAccSkip,AlexAccSkip,AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkipPred (alexPrevCharMatches(\c -> c >= '\n' && c <= '\n' || False))(AlexAccNone),AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_46),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_47),AlexAcc (alex_action_47),AlexAcc (alex_action_47),AlexAcc (alex_action_47),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_48),AlexAcc (alex_action_48),AlexAcc (alex_action_48),AlexAcc (alex_action_48),AlexAcc (alex_action_48),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_49),AlexAcc (alex_action_49),AlexAcc (alex_action_49),AlexAcc (alex_action_49),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_56),AlexAcc (alex_action_57),AlexAcc (alex_action_58),AlexAcc (alex_action_59),AlexAcc (alex_action_60),AlexAcc (alex_action_61),AlexAcc (alex_action_62),AlexAcc (alex_action_63),AlexAcc (alex_action_64),AlexAcc (alex_action_65),AlexAcc (alex_action_66),AlexAcc (alex_action_67),AlexAcc (alex_action_68),AlexAcc (alex_action_69),AlexAcc (alex_action_70),AlexAcc (alex_action_71),AlexAcc (alex_action_72),AlexAcc (alex_action_73),AlexAcc (alex_action_74),AlexAcc (alex_action_75),AlexAcc (alex_action_76),AlexAcc (alex_action_77),AlexAcc (alex_action_78),AlexAcc (alex_action_79),AlexAcc (alex_action_80),AlexAcc (alex_action_81),AlexAcc (alex_action_82),AlexAcc (alex_action_83),AlexAcc (alex_action_84),AlexAcc (alex_action_85),AlexAcc (alex_action_86),AlexAcc (alex_action_87),AlexAcc (alex_action_88),AlexAcc (alex_action_89),AlexAcc (alex_action_90),AlexAcc (alex_action_91),AlexAcc (alex_action_92),AlexAcc (alex_action_93),AlexAcc (alex_action_94),AlexAcc (alex_action_95),AlexAcc (alex_action_96),AlexAcc (alex_action_97),AlexAccPred (alex_action_98) ( ifExtension cudaExts )(AlexAccNone),AlexAccPred (alex_action_99) ( ifExtension cudaExts )(AlexAccNone),AlexAccPred (alex_action_100) ( ifExtension objcExts )(AlexAccNone)] {-# LINE 202 "Language/C/Parser/Lexer.x" #-} type Action = AlexInput -> AlexInput -> P (L Token)@@ -520,9 +520,9 @@ -- ----------------------------------------------------------------------------- -- INTERNALS and main scanner engine -{-# LINE 37 "templates/GenericTemplate.hs" #-}+{-# LINE 35 "templates/GenericTemplate.hs" #-} -{-# LINE 47 "templates/GenericTemplate.hs" #-}+{-# LINE 45 "templates/GenericTemplate.hs" #-} data AlexAddr = AlexA# Addr#@@ -553,14 +553,14 @@ #ifdef WORDS_BIGENDIAN narrow32Int# i where- !i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`+ i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#` (b2 `uncheckedShiftL#` 16#) `or#` (b1 `uncheckedShiftL#` 8#) `or#` b0)- !b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))- !b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))- !b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- !b0 = int2Word# (ord# (indexCharOffAddr# arr off'))- !off' = off *# 4#+ b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))+ b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))+ b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))+ b0 = int2Word# (ord# (indexCharOffAddr# arr off'))+ off' = off *# 4# #else indexInt32OffAddr# arr off #endif@@ -635,36 +635,41 @@ - let- (base) = alexIndexInt32OffAddr alex_base s- ((I# (ord_c))) = fromIntegral c- (offset) = (base +# ord_c)- (check) = alexIndexInt16OffAddr alex_check offset+ case fromIntegral c of { (I# (ord_c)) ->+ let+ base = alexIndexInt32OffAddr alex_base s+ offset = (base +# ord_c)+ check = alexIndexInt16OffAddr alex_check offset - (new_s) = if (offset >=# 0#) && (check ==# ord_c)+ new_s = if (offset >=# 0#) && (check ==# ord_c) then alexIndexInt16OffAddr alex_table offset else alexIndexInt16OffAddr alex_deflt s in- case new_s of + case new_s of -1# -> (new_acc, input) -- on an error, we want to keep the input *before* the -- character that failed, not after. _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len) -- note that the length is increased ONLY if this is the 1st byte in a char encoding) new_input new_s new_acc-+ } where- check_accs [] = last_acc- check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len))- check_accs (AlexAccSkip : _) = AlexLastSkip input (I# (len))- check_accs (AlexAccPred a predx : rest)+ check_accs (AlexAccNone) = last_acc+ check_accs (AlexAcc a ) = AlexLastAcc a input (I# (len))+ check_accs (AlexAccSkip) = AlexLastSkip input (I# (len))++ check_accs (AlexAccPred a predx rest) | predx user orig_input (I# (len)) input = AlexLastAcc a input (I# (len))- check_accs (AlexAccSkipPred predx : rest)+ | otherwise+ = check_accs rest+ check_accs (AlexAccSkipPred predx rest) | predx user orig_input (I# (len)) input = AlexLastSkip input (I# (len))- check_accs (_ : rest) = check_accs rest+ | otherwise+ = check_accs rest + data AlexLastAcc a = AlexNone | AlexLastAcc a !AlexInput !Int@@ -676,11 +681,13 @@ fmap f (AlexLastSkip x y) = AlexLastSkip x y data AlexAcc a user- = AlexAcc a+ = AlexAccNone+ | AlexAcc a | AlexAccSkip- | AlexAccPred a (AlexAccPred user)- | AlexAccSkipPred (AlexAccPred user) + | AlexAccPred a (AlexAccPred user) (AlexAcc a user)+ | AlexAccSkipPred (AlexAccPred user) (AlexAcc a user)+ type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool -- -----------------------------------------------------------------------------@@ -705,6 +712,7 @@ -- TODO: there's no need to find the longest -- match when checking the right context, just -- the first match will do.+ -- used by wrappers iUnbox (I# (i)) = i
language-c-quote.cabal view
@@ -1,5 +1,5 @@ name: language-c-quote-version: 0.7.1+version: 0.7.2 cabal-version: >= 1.10 license: BSD3 license-file: LICENSE
tests/unit/Main.hs view
@@ -7,7 +7,9 @@ import Test.Framework.Providers.HUnit import Test.HUnit ((@=?)) +import Data.Loc (SrcLoc, noLoc) import Language.C.Quote.C+import qualified Language.C.Syntax as C import System.Exit (exitFailure, exitSuccess) #if !MIN_VERSION_template_haskell(2,7,0)@@ -27,9 +29,16 @@ exp_init, exp_inits, exp_item] exp_id :: Test-exp_id = testCase "exp id" $ [cexp|$id:ident|] @=? [cexp|x|]+exp_id = testCase "exp id" $ [cexp|$id:f($id:x, $id:y)|] @=? [cexp|f(x, y)|] where- ident = "x"+ f :: String+ f = "f"++ x :: SrcLoc -> C.Id+ x = C.Id "x"++ y :: C.Id+ y = C.Id "y" noLoc exp_int :: Test exp_int = testCase "exp int" $