diff --git a/Language/C/Pretty.hs b/Language/C/Pretty.hs
--- a/Language/C/Pretty.hs
+++ b/Language/C/Pretty.hs
@@ -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) 
diff --git a/Language/C/Quote/Base.hs b/Language/C/Quote/Base.hs
--- a/Language/C/Quote/Base.hs
+++ b/Language/C/Quote/Base.hs
@@ -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)
diff --git a/Language/C/Quote/OpenCL.hs b/Language/C/Quote/OpenCL.hs
--- a/Language/C/Quote/OpenCL.hs
+++ b/Language/C/Quote/OpenCL.hs
@@ -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]]
diff --git a/dist/build/Language/C/Parser/Lexer.hs b/dist/build/Language/C/Parser/Lexer.hs
--- a/dist/build/Language/C/Parser/Lexer.hs
+++ b/dist/build/Language/C/Parser/Lexer.hs
@@ -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
diff --git a/language-c-quote.cabal b/language-c-quote.cabal
--- a/language-c-quote.cabal
+++ b/language-c-quote.cabal
@@ -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
diff --git a/tests/unit/Main.hs b/tests/unit/Main.hs
--- a/tests/unit/Main.hs
+++ b/tests/unit/Main.hs
@@ -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" $
