-
Notifications
You must be signed in to change notification settings - Fork 714
REPL command in project requires a target #10684
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
REPL command in project requires a target #10684
Conversation
09fcf06
to
6dd178f
Compare
2782ef9
to
5a50424
Compare
35477a0
to
1b8edc1
Compare
1b8edc1
to
2a587e3
Compare
2a587e3
to
59869f3
Compare
59869f3
to
d34ecf2
Compare
d34ecf2
to
80875e2
Compare
This pull request will be easier to review once the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving despite suggestions because they're not functional changes.
2e359e9
to
88c7a58
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this patch and the test! I have a couple questions...
@mpickering could you take a brief look at this (it's a small patch)? Especially my comment under the -- NOTE:
.
text "There are no packages in" | ||
<+> (project <> char '.') | ||
<+> text "Please add a package to the project and pick a component to use as the target of the REPL command." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the no-packages case is certainly already handled in other places today, right? (people keep forgetting packages:...
and get an error message.) Is it possible to not duplicate this logic?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After removing the target string manipulation, the current behaviour (#9983) is bad and doesn't cover this case:
$ ~/.ghcup/bin/cabal --numeric-version
3.14.2.0
$ ~/.ghcup/bin/cabal repl --project-dir=cabal-testsuite/PackageTests/ReplProjectTarget --project-file=empty.project
Configuration is affected by the following files:
- empty.project
Warning: There are no packages or optional-packages in the project
Resolving dependencies...
Error: [Cabal-7076]
Internal error when trying to open a repl for the package fake-package-0. The package is not in the set of available targets for the project plan, which would suggest an inconsistency between readTargetSelectors and resolveTargets.
Also I'd be curious to know how to get better output from a debug build of cabal-install with assertions enabled because that version gives me a poorer error report with no line number:
$ cabal repl --project-dir=cabal-testsuite/PackageTests/ReplProjectTarget --project-file=empty.project
Warning: this is a debug build of cabal-install with assertions enabled.
Configuration is affected by the following files:
- empty.project
Warning: There are no packages or optional-packages in the project
Resolving dependencies...
Assertion failed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Warning: There are no packages or optional-packages in the project
is a different issue, I think, (#8679 probably) so it may be wise to try to avoid solving it here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assertion failure is bad but also looks like a future work. We're minutes from cutting the 3.16 branch and all backporting will have to go through extra careful consideration (mostly deciding the tradeoff: scarse resource for the release vs profit from performing the backport)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The assertion bothers me. I could cut back on the scope of this pull request or dig in more about the assertion.
88c7a58
to
b12ed12
Compare
Did you consider modifying |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my previous comment about modifying selectPackageTargets
.
fc542e2
to
236d5b8
Compare
@philderbeast could you post a little summary on the state of this patch? Do you believe you addressed all Matt's concerns? If you're done, please ping Matt for re-reviewing. Rebasing on master is also advisable. There's still a chance we could get this into 3.16 but it's getting tight... |
236d5b8
to
9b09fed
Compare
- Show packages when no --project-file is given - Handle the case with no packages in the project - Add a changelog - Add tests - Satisfy hlint - Satisfy fourmolu - Don't need a target when there is one package - Adjust target strings for sole package - Add alt.project tests for ReplOptions - Silence the 1st withCtx call's verbosity - Don't repeat configuration is affected by - Satisfy whitespace - Fixups after rebase - Remove punct variable
- Comma with but joining indep' clauses - Use single package Co-Authored-By: brandon s allbery kf8nh <[email protected]>
Improve test descriptions
- Don't use -XRecordWildCards for configFlags
b632961
to
a49a505
Compare
I'm currently stumbling over assertions. |
Let me know if you need some help with this @philderbeast |
Fixes #10527 and #9983. Depend-on: #10688.
Doesn't allow an empty list of targets with a project context.
With a project, the REPL command requires a target. If one is not given then a message is shown explaining this and naming the project if the
--project-file
option was given (but not when the default 'cabal.project' project name is used implicitly). We're not yet able to list project targets so in the meantime, the messages lists the packages of the project.cabal.project
is used:--project-file
option is used, the file name is included:fake-package-0
. This was confusing:cabal-install:exe:cabal
versions mentioned usingall
as the target but this won't work for the REPL command:significance: significant
in the changelog file.