Skip to content
  • chevalier@alum.wellesley.edu's avatar
    [project @ 2003-08-19 21:51:53 by krc] · a27b1e51
    chevalier@alum.wellesley.edu authored
    Added support for testing generation and compilation of External Core
    code. There are two new ways, which are not automatically enabled but can be
    invoked from the command line: extcore and optextcore. Invoking either way will
    test that ghc is able to generate External Core code for a given test, read the
    code back in, and compile it to an executable that produces the expected output
    for the test.
    
    The External Core facility has a few limitations which result in certain tests
    failing for the "extcore" way.
      - External Core can't represent foreign calls other than static C calls
      - External Core can't correctly represent literals resulting from a
        "foreign label" declaration
      - External Core can't represent declarations of datatypes with no
        constructors
    The first of these was already known, and GHC panics if you tried to
    generate External Core for a program containing such a call. The second two
    cases were not handled properly before now; in another commit, I've changed the
    code that emits External Core to panic if either of them arises. Previously,
    GHC would happily generate External Core in either case, but would not be able
    to compile the resulting code.
    
    There are several tests that exhibit these limitations of External Core, so
    they've had to be made "expected failures" when compiling in the extcore or
    optextcore ways.
    a27b1e51