Driver: `ghc ../Test` (without file extension) should work
authorThomas Miedema <thomasmiedema@gmail.com>
Mon, 13 Jun 2016 22:10:19 +0000 (00:10 +0200)
committerThomas Miedema <thomasmiedema@gmail.com>
Sat, 18 Jun 2016 10:46:05 +0000 (12:46 +0200)
Reviewed by: bgamari

Differential Revision: https://phabricator.haskell.org/D2331

GHC Trac Issues: #12192

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

index 84eee1b..650bb15 100644 (file)
@@ -348,7 +348,7 @@ isSourceSuffix suff  = isHaskellishSuffix suff || isCishSuffix suff
 --         specified suffix is a Haskell one.
 isHaskellishTarget :: (String, Maybe Phase) -> Bool
 isHaskellishTarget (f,Nothing) =
-  looksLikeModuleName f || isHaskellSrcFilename f || '.' `notElem` f
+  looksLikeModuleName f || isHaskellSrcFilename f || not (hasExtension f)
 isHaskellishTarget (_,Just phase) =
   phase `notElem` [ As True, As False, Cc, Cobjc, Cobjcxx, CmmCpp, Cmm
                   , StopLn]
index 1a6cbeb..4870ce4 100644 (file)
@@ -306,7 +306,7 @@ partition_args (arg:args) srcs objs
          the flag parser, and we want them to generate errors later in
          checkOptions, so we class them as source files (#5921)
 
-       - and finally we consider everything not containing a '.' to be
+       - and finally we consider everything without an extension to be
          a comp manager input, as shorthand for a .hs or .lhs filename.
 
       Everything else is considered to be a linker object, and passed
@@ -316,7 +316,7 @@ looks_like_an_input :: String -> Bool
 looks_like_an_input m =  isSourceFilename m
                       || looksLikeModuleName m
                       || "-" `isPrefixOf` m
-                      || '.' `notElem` m
+                      || not (hasExtension m)
 
 -- -----------------------------------------------------------------------------
 -- Option sanity checks
diff --git a/testsuite/tests/driver/T12192.hs b/testsuite/tests/driver/T12192.hs
new file mode 100644 (file)
index 0000000..ce6da02
--- /dev/null
@@ -0,0 +1 @@
+module T12192 where
index 54c84bc..36ba99b 100644 (file)
@@ -488,3 +488,6 @@ test('T12135',
       extra_clean(['T12135.o', 'T12135.hi', 'T12135', 'T12135a/T12135.h', 'T12135b/T12135.h'])],
      run_command,
      ['$MAKE -s --no-print-directory T12135'])
+
+test('T12192', normal, run_command,
+     ['mkdir foo && (cd foo && {compiler} -v0 ../T12192)'])