summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Miedema <thomasmiedema@gmail.com>2015-04-01 19:22:28 +0200
committerThomas Miedema <thomasmiedema@gmail.com>2015-04-01 19:22:54 +0200
commit7cec6c7b2973b34c18da1c74c87cead33bb1bfd7 (patch)
treebe99face836f135e843f758ff9eab09b6f122f93
parentd4cf7051bc17182238b17ba1dc42e190fa5c6f0d (diff)
downloadhaskell-7cec6c7b2973b34c18da1c74c87cead33bb1bfd7.tar.gz
Change which files --make thinks are 'Haskellish' (#10220)
`.hspp` and `.hscpp` are haskell files that have already been preprocessed. Treat `.hspp` and `.hscpp` as Haskellish sources again, as they were before commit a10e1990. This way, ghc --make will load their imports. Make sure that `.cmm` and `.cmmcpp` are still not treated as Haskellish, by moving them out of `haskell_src_suffixes` (but still keeping them in haskellish_suffixes, though I'm not sure what the purpose of that group is). Reviewed By: austin Differential Revision: https://phabricator.haskell.org/D778
-rw-r--r--compiler/main/DriverPhases.hs7
-rw-r--r--ghc/Main.hs2
-rw-r--r--testsuite/tests/driver/T10220.hspp2
-rw-r--r--testsuite/tests/driver/T10220B.hs1
-rw-r--r--testsuite/tests/driver/all.T4
5 files changed, 13 insertions, 3 deletions
diff --git a/compiler/main/DriverPhases.hs b/compiler/main/DriverPhases.hs
index e3aaf698e0..9d1199339a 100644
--- a/compiler/main/DriverPhases.hs
+++ b/compiler/main/DriverPhases.hs
@@ -279,11 +279,14 @@ phaseInputExt StopLn = "o"
haskellish_src_suffixes, haskellish_suffixes, cish_suffixes,
haskellish_user_src_suffixes, haskellish_sig_suffixes
:: [String]
+-- When a file with an extension in the haskellish_src_suffixes group is
+-- loaded in --make mode, its imports will be loaded too.
haskellish_src_suffixes = haskellish_user_src_suffixes ++
- [ "hspp", "hscpp", "cmm", "cmmcpp" ]
+ [ "hspp", "hscpp" ]
haskellish_suffixes = haskellish_src_suffixes ++
- [ "hc" ]
+ [ "hc", "cmm", "cmmcpp" ]
cish_suffixes = [ "c", "cpp", "C", "cc", "cxx", "s", "S", "ll", "bc", "lm_s", "m", "M", "mm" ]
+
-- Will not be deleted as temp files:
haskellish_user_src_suffixes =
haskellish_sig_suffixes ++ [ "hs", "lhs", "hs-boot", "lhs-boot" ]
diff --git a/ghc/Main.hs b/ghc/Main.hs
index 2f013aa76e..fa266a24f8 100644
--- a/ghc/Main.hs
+++ b/ghc/Main.hs
@@ -656,7 +656,7 @@ doMake srcs = do
let (hs_srcs, non_hs_srcs) = partition haskellish srcs
haskellish (f,Nothing) =
- looksLikeModuleName f || isHaskellUserSrcFilename f || '.' `notElem` f
+ looksLikeModuleName f || isHaskellSrcFilename f || '.' `notElem` f
haskellish (_,Just phase) =
phase `notElem` [ As True, As False, Cc, Cobjc, Cobjcxx, CmmCpp, Cmm
, StopLn]
diff --git a/testsuite/tests/driver/T10220.hspp b/testsuite/tests/driver/T10220.hspp
new file mode 100644
index 0000000000..9dd6b0d39a
--- /dev/null
+++ b/testsuite/tests/driver/T10220.hspp
@@ -0,0 +1,2 @@
+module T10220 where
+import T10220B
diff --git a/testsuite/tests/driver/T10220B.hs b/testsuite/tests/driver/T10220B.hs
new file mode 100644
index 0000000000..fce109b203
--- /dev/null
+++ b/testsuite/tests/driver/T10220B.hs
@@ -0,0 +1 @@
+module T10220B where
diff --git a/testsuite/tests/driver/all.T b/testsuite/tests/driver/all.T
index e1665f1aca..32678d3d27 100644
--- a/testsuite/tests/driver/all.T
+++ b/testsuite/tests/driver/all.T
@@ -427,3 +427,7 @@ test('T10219', normal, run_command,
# `-x hspp` in make mode should work.
# Note: need to specify `-x hspp` before the filename.
['{compiler} --make -x hspp T10219.hspp -fno-code -v0'])
+
+test('T10220', normal, run_command,
+ # Preprocessed T10220.hspp imports T10220B. Should work in --make mode.
+ ['{compiler} --make T10220.hspp -fno-code -v0'])