diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2021-06-29 12:02:47 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-07-19 19:37:12 -0400 |
commit | 952ba18e596f406d08003a9ff07f95a5a94a2ede (patch) | |
tree | bdccdc0843b2e9d58f6eccc57fc2b4618d029451 /testsuite/tests | |
parent | e5a4cfa51899e67db8fb17409660107b821d252d (diff) | |
download | haskell-952ba18e596f406d08003a9ff07f95a5a94a2ede.tar.gz |
th: Weaken return type of myCoreToStgExpr
The previous code assumed properties of the CoreToStg translation,
namely that a core let expression which be translated to a single
non-recursive top-level STG binding. This assumption was false, as
evidenced by #20060.
The consequence of this was the need to modify the call sites of
`myCoreToStgExpr`, the main one being in hscCompileCoreExpr', which
the meant we had to use byteCodeGen instead of stgExprToBCOs to convert
the returned value to bytecode.
I removed the `stgExprToBCOs` function as it is no longer
used in the compiler.
There is still some partiallity with this patch (the lookup in
hscCompileCoreExpr') but this should be more robust that before.
Fixes #20060
Diffstat (limited to 'testsuite/tests')
-rw-r--r-- | testsuite/tests/th/T20060.hs | 11 | ||||
-rw-r--r-- | testsuite/tests/th/all.T | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/testsuite/tests/th/T20060.hs b/testsuite/tests/th/T20060.hs new file mode 100644 index 0000000000..cbf78c3215 --- /dev/null +++ b/testsuite/tests/th/T20060.hs @@ -0,0 +1,11 @@ +{-# LANGUAGE TemplateHaskell #-} +{-# OPTIONS_GHC -O2 #-} +module THBug where + +data A +data B + +concat <$> mapM (\_ -> (pure [])) + [ ''A + , ''B + ] diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T index 029353cfc3..90ca816cd8 100644 --- a/testsuite/tests/th/all.T +++ b/testsuite/tests/th/all.T @@ -529,3 +529,4 @@ test('T17804', normal, compile, ['']) test('T19470', only_ways(['ghci']), ghci_script, ['T19470.script']) test('T19737', normal, compile, ['']) test('T19759', normal, compile, ['']) +test('T20060', normal, compile, ['']) |