Skip to content
Snippets Groups Projects
Forked from Glasgow Haskell Compiler / GHC
66726 commits behind the upstream repository.
Simon Marlow's avatar
Simon Marlow authored
add typechecker bug which we currently don't have a fix for
7b2f8c91
History
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
-------------------------------------------------------------------------------
			GHC COMPILER TESTS
-------------------------------------------------------------------------------

This directory contains the regression tests for the compiler and the
prelude libraries.  Regression tests meaning "correctness", NoFib
deals with "performance". Note that regression tests for other parts
of the ghc system (such as the driver, runtime system, system libs)
belong elsewhere.

Each test takes the form of a single program (for example, reader001.hs)
and files which specify ghc's expected error output (reader001.stderr).

"make reader001.runtest" will compile reader001.hs using ghc and compare
the resulting output with that specified in the file reader001.stderr.

"make all" run all tests.

-------------------------------------------------------------------------------
			ADDING A NEW TEST
-------------------------------------------------------------------------------

To add a new test copy your Haskell program into an appropriately named
file in the appropriate directory (for example, "typecheck/tc093.hs" for
the 93rd typechecker test).

If the test needs to set the compiler options to something other than
the default for the directory, either modify the SRC_HC_OPTS (applies
to all tests in that directory), or set some extra per-file compiler
options. For example,

  tc093_HC_OPTS = -noC -ddump-tc 

-noC tells not bother generating any C (not point in doing that, since we
only want to test the typechecker).  -ddump-tc tells ghc to dump the
typechecker state. 

Depending on the tests/ subdirectory, a default exit code is
expected from all tests therein, normally 0 (==success).
Per-file options to the runtests script can be set as follows

  tc093_RUNTEST_OPTS = -x 1

telling the test script that the compiler is expected to fail
on tc093.

"touch" the file tc093.stderr.  "make tc093.o" will then run
the compiler and fail (because the expected output doesn't match the empty
tc093.stderr).  However, it is then easy to update tc093.stderr with the
stuff printed out during "make tc093.o". An alternative is to run
`make' with EXTRA_RUNTEST_OPTS=-accept-output on the new test, and the
runtest script will add the stderr&stdout dump files for you *in the
build tree*.