diff --git a/hspec-core.cabal b/hspec-core.cabal
--- a/hspec-core.cabal
+++ b/hspec-core.cabal
@@ -1,5 +1,5 @@
 name:             hspec-core
-version:          2.1.2
+version:          2.1.3
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2011-2014 Simon Hengel,
diff --git a/src/Test/Hspec/Core/Formatters.hs b/src/Test/Hspec/Core/Formatters.hs
--- a/src/Test/Hspec/Core/Formatters.hs
+++ b/src/Test/Hspec/Core/Formatters.hs
@@ -181,17 +181,16 @@
 
     formatFailure :: (Int, FailureRecord) -> FormatM ()
     formatFailure (n, FailureRecord mLoc path reason) = do
+      forM_ mLoc $ \loc -> do
+        withInfoColor $ writeLine (formatLoc loc)
       write ("  " ++ show n ++ ") ")
       writeLine (formatRequirement path)
       withFailColor $ do
         forM_ (lines err) $ \x -> do
           writeLine ("       " ++ x)
-      forM_ mLoc $ \loc -> do
-        writeLine ""
-        withInfoColor $ writeLine (formatLoc loc)
       where
         err = either (("uncaught exception: " ++) . formatException) id reason
-        formatLoc (Location file line _column accuracy) = "     # " ++ file ++ ":" ++ show line ++ bestEffortMarking
+        formatLoc (Location file line _column accuracy) = "  " ++ file ++ ":" ++ show line ++ ":" ++ bestEffortMarking
           where
             bestEffortMarking = case accuracy of
               ExactLocation -> ""
diff --git a/test/Test/Hspec/Core/FormattersSpec.hs b/test/Test/Hspec/Core/FormattersSpec.hs
--- a/test/Test/Hspec/Core/FormattersSpec.hs
+++ b/test/Test/Hspec/Core/FormattersSpec.hs
@@ -162,13 +162,20 @@
     context "when a failed example has a source location" $ do
       let bestEffortExplanation = "Source locations marked with \"best-effort\" are calculated heuristically and may be incorrect."
 
+      it "includes the source locations above the error messages" $ do
+        let loc = H.Location "test/FooSpec.hs" 23 0 H.ExactLocation
+            addLoc e = e {H.itemLocation = Just loc}
+        r <- runSpec $ H.mapSpecItem_ addLoc $ do
+          H.it "foo" False
+        r `shouldContain` ["  test/FooSpec.hs:23:", "  1) foo"]
+
       context "when source location is exact" $ do
         it "includes that source locations" $ do
           let loc = H.Location "test/FooSpec.hs" 23 0 H.ExactLocation
               addLoc e = e {H.itemLocation = Just loc}
           r <- runSpec $ H.mapSpecItem_ addLoc $ do
             H.it "foo" False
-          r `shouldSatisfy` any (== "     # test/FooSpec.hs:23")
+          r `shouldSatisfy` any (== "  test/FooSpec.hs:23:")
 
         it "does not include 'best-effort' explanation" $ do
           let loc = H.Location "test/FooSpec.hs" 23 0 H.ExactLocation
@@ -183,7 +190,7 @@
               addLoc e = e {H.itemLocation = Just loc}
           r <- runSpec $ H.mapSpecItem_ addLoc $ do
             H.it "foo" False
-          r `shouldSatisfy` any (== "     # test/FooSpec.hs:23 (best-effort)")
+          r `shouldSatisfy` any (== "  test/FooSpec.hs:23: (best-effort)")
 
         it "includes 'best-effort' explanation" $ do
           let loc = H.Location "test/FooSpec.hs" 23 0 H.BestEffort
