diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2021-03-04 18:05:14 +0000 |
---|---|---|
committer | Ryan Scott <ryan.gl.scott@gmail.com> | 2021-04-16 15:03:08 -0400 |
commit | e13ad2cb1cdc7bb67f582a87af6f3631fd11eef7 (patch) | |
tree | d4ef9964dadd912d9e54e342ce9df19684cb6e99 /testsuite/tests/typecheck/should_run | |
parent | 232a44de1fa1261316691cdec0a57840b908c942 (diff) | |
download | haskell-wip/T19397-backport.tar.gz |
Fixes to dealing with the export of mainwip/T19397-backport
It's surprisingly tricky to deal with 'main' (#19397). This
patch does quite bit of refactoring do to it right. Well,
more-right anyway!
The moving parts are documented in GHC.Tc.Module
Note [Dealing with main]
Some other oddments:
* Rename tcRnExports to rnExports; no typechecking here!
* rnExports now uses checkNoErrs rather than failIfErrsM;
the former fails only if rnExports itself finds errors
* Small improvements to tcTyThingCategory, which ultimately
weren't important to the patch, but I've retained as
a minor improvement.
Diffstat (limited to 'testsuite/tests/typecheck/should_run')
19 files changed, 38 insertions, 3 deletions
diff --git a/testsuite/tests/typecheck/should_run/T16453M1.stdout b/testsuite/tests/typecheck/should_run/T16453M1.stdout index e4dfbcd44f..3c86130b45 100644 --- a/testsuite/tests/typecheck/should_run/T16453M1.stdout +++ b/testsuite/tests/typecheck/should_run/T16453M1.stdout @@ -1 +1 @@ -T16453T +T16453T.main diff --git a/testsuite/tests/typecheck/should_run/T16453M4.stdout b/testsuite/tests/typecheck/should_run/T16453M4.stdout index e4dfbcd44f..3c86130b45 100644 --- a/testsuite/tests/typecheck/should_run/T16453M4.stdout +++ b/testsuite/tests/typecheck/should_run/T16453M4.stdout @@ -1 +1 @@ -T16453T +T16453T.main diff --git a/testsuite/tests/typecheck/should_run/T16453M5.hs b/testsuite/tests/typecheck/should_run/T16453M5.hs new file mode 100644 index 0000000000..a79a33003d --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T16453M5.hs @@ -0,0 +1,2 @@ +module Main (T16453T.main) where +import T16453T diff --git a/testsuite/tests/typecheck/should_run/T16453M5.stdout b/testsuite/tests/typecheck/should_run/T16453M5.stdout new file mode 100644 index 0000000000..3c86130b45 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T16453M5.stdout @@ -0,0 +1 @@ +T16453T.main diff --git a/testsuite/tests/typecheck/should_run/T16453M6.hs b/testsuite/tests/typecheck/should_run/T16453M6.hs new file mode 100644 index 0000000000..b013e857cd --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T16453M6.hs @@ -0,0 +1,2 @@ +module Main (T16453T.foo) where +import T16453T diff --git a/testsuite/tests/typecheck/should_run/T16453M6.stdout b/testsuite/tests/typecheck/should_run/T16453M6.stdout new file mode 100644 index 0000000000..72252ffbd0 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T16453M6.stdout @@ -0,0 +1 @@ +T16453T.foo diff --git a/testsuite/tests/typecheck/should_run/T16453T.hs b/testsuite/tests/typecheck/should_run/T16453T.hs index 98ea6255f7..b8dd8923c4 100644 --- a/testsuite/tests/typecheck/should_run/T16453T.hs +++ b/testsuite/tests/typecheck/should_run/T16453T.hs @@ -1,2 +1,4 @@ module T16453T where -main = putStrLn "T16453T" +main = putStrLn "T16453T.main" +foo = putStrLn "T16453T.foo" + diff --git a/testsuite/tests/typecheck/should_run/T19397M0.hs b/testsuite/tests/typecheck/should_run/T19397M0.hs new file mode 100644 index 0000000000..fcc08716d5 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M0.hs @@ -0,0 +1,2 @@ +module Main (main) where +import T19397S diff --git a/testsuite/tests/typecheck/should_run/T19397M0.stdout b/testsuite/tests/typecheck/should_run/T19397M0.stdout new file mode 100644 index 0000000000..4ff016fc0e --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M0.stdout @@ -0,0 +1 @@ +T19379S-main diff --git a/testsuite/tests/typecheck/should_run/T19397M1.hs b/testsuite/tests/typecheck/should_run/T19397M1.hs new file mode 100644 index 0000000000..75413537c8 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M1.hs @@ -0,0 +1 @@ +import T19397S diff --git a/testsuite/tests/typecheck/should_run/T19397M1.stdout b/testsuite/tests/typecheck/should_run/T19397M1.stdout new file mode 100644 index 0000000000..4ff016fc0e --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M1.stdout @@ -0,0 +1 @@ +T19379S-main diff --git a/testsuite/tests/typecheck/should_run/T19397M2.hs b/testsuite/tests/typecheck/should_run/T19397M2.hs new file mode 100644 index 0000000000..71a75a102b --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M2.hs @@ -0,0 +1,2 @@ +module Main(foo) where +import T19397S (foo) diff --git a/testsuite/tests/typecheck/should_run/T19397M2.stdout b/testsuite/tests/typecheck/should_run/T19397M2.stdout new file mode 100644 index 0000000000..3fe3b9aac6 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M2.stdout @@ -0,0 +1 @@ +T19379S-foo diff --git a/testsuite/tests/typecheck/should_run/T19397M3.hs b/testsuite/tests/typecheck/should_run/T19397M3.hs new file mode 100644 index 0000000000..fd817a8176 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M3.hs @@ -0,0 +1 @@ +import T19397S (foo) diff --git a/testsuite/tests/typecheck/should_run/T19397M3.stdout b/testsuite/tests/typecheck/should_run/T19397M3.stdout new file mode 100644 index 0000000000..3fe3b9aac6 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M3.stdout @@ -0,0 +1 @@ +T19379S-foo diff --git a/testsuite/tests/typecheck/should_run/T19397M4.hs b/testsuite/tests/typecheck/should_run/T19397M4.hs new file mode 100644 index 0000000000..544242c2f5 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M4.hs @@ -0,0 +1,2 @@ +module Main(module T19397S) where +import T19397S (foo) diff --git a/testsuite/tests/typecheck/should_run/T19397M4.stdout b/testsuite/tests/typecheck/should_run/T19397M4.stdout new file mode 100644 index 0000000000..3fe3b9aac6 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397M4.stdout @@ -0,0 +1 @@ +T19379S-foo diff --git a/testsuite/tests/typecheck/should_run/T19397S.hs b/testsuite/tests/typecheck/should_run/T19397S.hs new file mode 100644 index 0000000000..9316d7d99a --- /dev/null +++ b/testsuite/tests/typecheck/should_run/T19397S.hs @@ -0,0 +1,7 @@ +module T19397S where + +main :: IO () +main = putStrLn "T19379S-main" + +foo :: IO () +foo = putStrLn "T19379S-foo" diff --git a/testsuite/tests/typecheck/should_run/all.T b/testsuite/tests/typecheck/should_run/all.T index f69cc71352..7468511779 100755 --- a/testsuite/tests/typecheck/should_run/all.T +++ b/testsuite/tests/typecheck/should_run/all.T @@ -140,6 +140,8 @@ test('T16453M1', extra_files(['T16453T.hs']), compile_and_run, ['']) test('T16453M2', extra_files(['T16453T.hs']), compile_and_run, ['']) test('T16453M3', extra_files(['T16453T.hs']), compile_and_run, ['']) test('T16453M4', extra_files(['T16453T.hs']), compile_and_run, ['']) +test('T16453M5', extra_files(['T16453T.hs']), compile_and_run, ['']) +test('T16453M6', extra_files(['T16453T.hs']), compile_and_run, ['-main-is foo']) test('UnliftedNewtypesRun', normal, compile_and_run, ['']) test('UnliftedNewtypesFamilyRun', normal, compile_and_run, ['']) test('UnliftedNewtypesDependentFamilyRun', normal, compile_and_run, ['']) @@ -147,3 +149,8 @@ test('UnliftedNewtypesIdentityRun', normal, compile_and_run, ['']) test('UnliftedNewtypesCoerceRun', normal, compile_and_run, ['']) test('T17104', normal, compile_and_run, ['']) test('T18627', normal, compile_and_run, ['-O']) # Optimisation shows up the bug +test('T19397M0', extra_files(['T19397S.hs']), compile_and_run, ['']) +test('T19397M1', extra_files(['T19397S.hs']), compile_and_run, ['']) +test('T19397M2', extra_files(['T19397S.hs']), compile_and_run, ['-main-is foo']) +test('T19397M3', extra_files(['T19397S.hs']), compile_and_run, ['-main-is foo']) +test('T19397M4', extra_files(['T19397S.hs']), compile_and_run, ['-main-is foo']) |