This MR extends the expressivity of CFunction
by allowing users to specify its type signature, and introduces literal expressions.
CFunction
now have to be created with a fixed type signature, which is used by the typifier.PsLiteral
and PsLiteralExpr
to allow injection of custom code literals into the AST. Literals must have a fixed type, and are considered constant within the scope of a kernel.This MR furthermore fixes CFunction printing, and a bug that affected typification and constant elimination in the presence of array initializers.