haskell / haskell/cabal

Unrecognized Cabal flag error is printed to stdout

Open
#12,178 1 comment 1 reaction 0 assignees View on GitHub
re: error-message type: bug
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

**Describe the bug**

When a flag to a `Setup.hs` is not recognized, then the error message is printed to stdout.

This is not what I would have expected.

**To Reproduce**

```
$ mkdir a-with-custom
$ cd a-with-custom
$ cabal init --lib --minimal -n
```

Then modify the cabal file:

```
cabal-version: 3.0
name: a-with-custom
version: 0.1.0.0
build-type: Custom

custom-setup
setup-depends:
Cabal <3.16,
base

library
exposed-modules: MyLib
build-depends: base
hs-source-dirs: src
default-language: Haskell2010
```

Then run ``cabal repl src/MyLib.hs --keep-temp-files``:

```
Warning: this is a debug build of cabal-install with assertions enabled.
Resolving dependencies...
Build profile: -w ghc-9.10.3 -O1
In order, the following will be built (use -v for more details):
- a-with-custom-0.1.0.0 (interactive) (first run)
unrecognized 'repl' option `--keep-temp-files'
Error: [Cabal-7125]
repl failed for a-with-custom-0.1.0.0.

HasCallStack backtrace:
collectBacktraces, called at libraries/ghc-internal/src/GHC/Internal/Exception.hs:169:13 in ghc-internal:GHC.Internal.Exception
toExceptionWithBacktrace, called at libraries/ghc-internal/src/GHC/Internal/IO.hs:260:11 in ghc-internal:GHC.Internal.IO
throwIO, called at libraries/ghc-internal/src/GHC/Internal/Control/Exception/Base.hs:195:43 in ghc-internal:GHC.Internal.Control.Exception.Base
```

The error ``unrecognized 'repl' option `--keep-temp-files'`` is printed to stdout.

**Expected behavior**

The error message `unrecognized 'repl' option `--keep-temp-files'` should be printed to stderr, imo.

**System information**
- Operating system
- `cabal3.16.1.0` and cabal HEAD 4907eec7b275aa0e1a31333fc745b3cc9f023f4f

Contributor guide

Open the contributing guide

Research direction

Reproduce the issue with a custom Setup.hs and the shown cabal file, then run `cabal repl src/MyLib.hs --keep-temp-files` while capturing stdout and stderr separately. Trace the `cabal repl` handling of the unrecognized option and add or update coverage so the error is emitted on stderr while the command's failure remains reported correctly.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
cli, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
64/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.