let make_c_type_ql ql ty =
let rec iter const volatile = function
[] -> make_c_type ~const ~volatile ty
| Const :: tl ->
if const then failwith "const appeared twice"
else iter true volatile tl
| Volatile :: tl ->
if volatile then failwith "volatile appeared twice"
else iter const true tl
in iter false false ql