• Duncan Coutts's avatar
    Typechecking for "foreign import prim" · 2da37f4f
    Duncan Coutts authored
    The main restriction is that all args and results must be unboxed types.
    In particular we allow unboxed tuple results (which is a primary
    motivation for the whole feature). The normal rules apply about
    "void rep" result types like State#. We only allow "prim" calling
    convention for import, not export. The other forms of import, "dynamic",
    "wrapper" and data label are banned as a conseqence of checking that the
    imported name is a valid C string. We currently require prim imports to
    be marked unsafe, though this is essentially arbitrary as the safety
    information is unused.