From 0cf2cdbb5b5bd751b0f9c9a8fce4b432688c6db5 Mon Sep 17 00:00:00 2001 From: Alp Mestanogullari <alpmestan@gmail.com> Date: Fri, 3 May 2019 10:21:44 +0000 Subject: [PATCH] Enable external interpreter when TH is requested but no internal interpreter is available (cherry picked from commit e172a6d127a65b945b31306ff7b6c43320debfb4) --- compiler/main/DriverPipeline.hs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index 5fe23629739..2c1f0a7ab69 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 -- GitLab