
#10382: Template Haskell (non-quasi) quotes should work with stage 1 compiler -------------------------------------+------------------------------------- Reporter: ezyang | Owner: Type: feature request | Status: new Priority: normal | Milestone: 8.0.1 Component: Template Haskell | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D876 Wiki Page: | -------------------------------------+------------------------------------- Comment (by thomie): Replying to [comment:20 ezyang]:
We also need a way to force the test suite to run stage1 in some cases, so we can catch this regression next time.
I see three options: * Option 1 (change validate) - create a directory with tests that should be tested with the stage1 compiler. - In ./validate, add something like `make -C testsuite/tests/stage1-tests stage=1` (The full command would also include: `$MAKE_TEST_TARGET $BINDIST $TEST_VERBOSITY THREADS=$threads SUMMARY_FILE=...)` - Make sure the grepping for results in testsuite_summary.txt still does the right thing (bit fiddly) - Minor point: define target synonyms `fasttest` and `slowtest` in `testsuite/Makefile` and `testsuite/mk/test.mk`) * Option 2 (driver support) - add a new setup function to testsuite/driver/testlib.py: something like `def stage(n)` or `def stage1()` - assign the `STAGE1_GHC` variable from testsuite/mk/boilerplate.mk should to a new option config.stage1 (add `--config 'stage1=$(call quote_path,$(STAGE1_GHC))'` to RUNTEST_OPTS in testsuite/mk/test.mk, and change testsuite/driver/runtests.py and testsuite/driver/testglobals.py. - add a `compiler` field to TestOptions (testsuite/driver/testglobals.py). By default it should contain config.compiler (do so in `def test` in testsuite/driver/testlib.py, not sure..) - the setup function `stage1()` sets opts.compiler to config.stage1, but only when the stage1 compiler is available. When TEST_HC is specified or when TEST_HC is implied to be an installed compiler, STAGE1_GHC won't be defined. - change all uses of config.compiler to opts.compiler (grep also for '{compiler}'). * Option 3 (Makefile) - define the test in a Makefile. Refer to `STAGE1_GHC` instead of `TEST_HC`. Skip if empty. The drawback of option 1 is that a failing validate might confuse GHC developers, because they can't reproduce the test failure when running the test locally (they'd have to specify make stage=1, which isn't obvious). Many questions on IRC/Phabricator/mail. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10382#comment:21 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler