Change which files --make thinks are 'Haskellish' (#10220)
authorThomas Miedema <thomasmiedema@gmail.com>
Wed, 1 Apr 2015 17:22:28 +0000 (19:22 +0200)
committerThomas Miedema <thomasmiedema@gmail.com>
Wed, 1 Apr 2015 17:22:54 +0000 (19:22 +0200)
`.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

compiler/main/DriverPhases.hs
ghc/Main.hs
testsuite/tests/driver/T10220.hspp [new file with mode: 0644]
testsuite/tests/driver/T10220B.hs [new file with mode: 0644]
testsuite/tests/driver/all.T

index e3aaf69..9d11993 100644 (file)
@@ -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" ]
index 2f013aa..fa266a2 100644 (file)
@@ -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 (file)
index 0000000..9dd6b0d
--- /dev/null
@@ -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 (file)
index 0000000..fce109b
--- /dev/null
@@ -0,0 +1 @@
+module T10220B where
index e1665f1..32678d3 100644 (file)
@@ -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'])