summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlp Mestanogullari <alpmestan@gmail.com>2019-05-03 12:21:44 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-05-06 15:11:43 -0400
commite172a6d127a65b945b31306ff7b6c43320debfb4 (patch)
treec24ff70c9c5cab9e62c2848e5cd77b8ea53de4cb
parent821fa9e81161f4414041c840236df848e18cb3b4 (diff)
downloadhaskell-e172a6d127a65b945b31306ff7b6c43320debfb4.tar.gz
Enable external interpreter when TH is requested but no internal interpreter is available
-rw-r--r--compiler/main/DriverPipeline.hs11
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index 83e6bfde59..82a6d601de 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -258,16 +258,23 @@ compileOne' m_tc_result mHscMessage
then gopt_set dflags0 Opt_BuildDynamicToo
else dflags0
+ -- #16331 - when no "internal interpreter" is available but we
+ -- need to process some TemplateHaskell or QuasiQuotes, we automatically
+ -- turn on -fexternal-interpreter.
+ dflags2 = if not internalInterpreter && needsLinker
+ then gopt_set dflags1 Opt_ExternalInterpreter
+ else dflags1
+
basename = dropExtension input_fn
-- We add the directory in which the .hs files resides) to the import
-- path. This is needed when we try to compile the .hc file later, if it
-- imports a _stub.h file that we created here.
current_dir = takeDirectory basename
- old_paths = includePaths dflags1
+ old_paths = includePaths dflags2
!prevailing_dflags = hsc_dflags hsc_env0
dflags =
- dflags1 { includePaths = addQuoteInclude old_paths [current_dir]
+ dflags2 { includePaths = addQuoteInclude old_paths [current_dir]
, log_action = log_action prevailing_dflags }
-- use the prevailing log_action / log_finaliser,
-- not the one cached in the summary. This is so