From cf9a5ba9cae80f73c0ff1bec8bee5dff7d7b28af Mon Sep 17 00:00:00 2001
From: Fendor <power.walross@gmail.com>
Date: Sat, 12 Jun 2021 15:35:13 +0200
Subject: [PATCH] Print error message if no freeze file can be found

---
 .../src/Distribution/Client/CmdOutdated.hs         | 14 ++++++++++++--
 .../PackageTests/Outdated/outdated_freeze.out      |  4 +++-
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/cabal-install/src/Distribution/Client/CmdOutdated.hs b/cabal-install/src/Distribution/Client/CmdOutdated.hs
index 979fc3afa7..b2b817a00c 100644
--- a/cabal-install/src/Distribution/Client/CmdOutdated.hs
+++ b/cabal-install/src/Distribution/Client/CmdOutdated.hs
@@ -89,7 +89,7 @@ import Distribution.ReadE
 
 import qualified Data.Set as S
 import System.Directory
-    ( getCurrentDirectory )
+    ( getCurrentDirectory, doesFileExist )
 
 -------------------------------------------------------------------------------
 -- Command
@@ -304,8 +304,18 @@ depsFromNewFreezeFile verbosity mprojectFile = do
   let ucnstrs = map fst . projectConfigConstraints . projectConfigShared
                 $ projectConfig
       deps    = userConstraintsToDependencies ucnstrs
+      freezeFile = distProjectFile distDirLayout "freeze"
+  freezeFileExists <- doesFileExist freezeFile
+
+  unless freezeFileExists $
+    die' verbosity $
+      "Couldn't find a freeze file expected at: " ++ freezeFile ++ "\n\n"
+      ++ "We are looking for this file because you supplied '--project-file' or '--v2-freeze-file'. "
+      ++ "When one of these flags is given, we try to read the dependencies from a freeze file. "
+      ++ "If it is undesired behaviour, you should not use these flags, otherwise please generate "
+      ++ "a freeze file via 'cabal freeze'."
   debug verbosity $
-    "Reading the list of dependencies from the new-style freeze file " ++ distProjectFile distDirLayout "freeze"
+    "Reading the list of dependencies from the new-style freeze file " ++ freezeFile
   return deps
 
 -- | Read the list of dependencies from the package description.
diff --git a/cabal-testsuite/PackageTests/Outdated/outdated_freeze.out b/cabal-testsuite/PackageTests/Outdated/outdated_freeze.out
index feacae734c..fb8608b255 100644
--- a/cabal-testsuite/PackageTests/Outdated/outdated_freeze.out
+++ b/cabal-testsuite/PackageTests/Outdated/outdated_freeze.out
@@ -23,4 +23,6 @@ Outdated dependencies:
 template-haskell ==2.3.0.0 (latest: 2.3.0.1)
 binary ==0.8.5.0 (latest: 0.8.6.0)
 # cabal outdated
-cabal: Couldn't find a freeze file expected at: <ROOT>/cabal.project.missing.freeze.freezeWe are looking for this file because you supplied '--project-file' or '--v2-freeze-file'. When one of these flags is given, we try to read the dependencies from a freeze file. If it is undesired behaviour, you should not use these flags, otherwise please generate a freeze file via 'cabal freeze'
+cabal: Couldn't find a freeze file expected at: <ROOT>/cabal.project.missing.freeze.freeze
+
+We are looking for this file because you supplied '--project-file' or '--v2-freeze-file'. When one of these flags is given, we try to read the dependencies from a freeze file. If it is undesired behaviour, you should not use these flags, otherwise please generate a freeze file via 'cabal freeze'.
-- 
GitLab