[Git][ghc/ghc][wip/spj-apporv-Oct24] 18 commits: users-guide: Document GHCi :where command
Apoorv Ingle (@ani)
gitlab at gitlab.haskell.org
Fri Oct 18 15:33:36 UTC 2024
Apoorv Ingle pushed to branch wip/spj-apporv-Oct24 at Glasgow Haskell Compiler / GHC
Commits:
745dd590 by Ben Gamari at 2024-10-14T09:13:12-04:00
users-guide: Document GHCi :where command
Resolve #24509.
- - - - -
e9cc4699 by Alan Zimmerman at 2024-10-14T09:13:48-04:00
EPA: Remove [AddEpAnn] from IE, Pat and some Tys
EPA: Remove [AddEpAnn] from LazyPat
EPA: Remove [AddEpAnn] from RecordCon/RecordUpd/ConPat
EPA: Remove [AddEpAnn] from HsFieldBind
EPA: Remove [AddEpAnn] from PatSynBind
EPA: Remove [AddEpAnn] from IPBind
EPA: Remove [AddEpAnn] from FixSig
EPA: Remove [AddEpAnn] from activation rules
EPA: Remove [AddEpann] from SpecInstSig
EPA: Remove [AddEpAnn] from MinimalSig
EPA: Remove [AddEpAnn] from SCCFunSig
EPA: Remove [AddEpAnn] from CompleteMatchSig
EPA: Remove [AddEpAnn] from AnnSig, as used in PatSynSig, ClassOpSig, TypeSig
EPA: Remove [AddEpAnn] from IEThingAbs
EPA: Remove [AddEpAnn] from IEThingAll / IEThingWith
EPA: Remove [AddEpAnn] from IEModuleContents
EPA: Remove [AddEpAnn] from HsOpTy
EPA: Remove [AddEpAnn] for various binders
EPA: Remove [AddEpAnn] for HsIParamTy
- - - - -
81a570bf by Sebastian Graf at 2024-10-14T22:15:31-04:00
Desugaring, plus -Wincomplete-record-selectors
This commit does several related things:
* Major refactor of the handling of applications in the desugarer.
Now all applications are handled in `dsApp`, `ds_app` and related
functions. This dramatically simplifies the code and removes
complicated cruft that had accumulated. Hooray.
Fixes #25281.
* Improve the handling of -Wincomplete-record-selectors.
We now incorporate the result type of unsaturated record selector
applications as well as consider long-distance information in
getField applications.
Plus, the implmentation now builds the improved `dsApp` stuff
above, so it is much easier to understand.
Plus, incorporates improved error message wording suggested
by Adam Gundry in !12685.
Fixes #24824, #24891
See the long Note [Detecting incomplete record selectors]
* Add -Wincomplete-record-selectors to -Wall, as specified in
GHC Proposal 516.
To do this, I also had to add -Wno-incomplete-record-selectors
to the build flags for Cabal in GHC's CI. See
hadrian/src/Settings/Warnings.hs. We can remove this when
Cabal is updated so that it doesn't trigger the warning:
https://github.com/haskell/cabal/issues/10402
2.6% decrease in compile time allocation in RecordUpPerf
Metric Decrease:
RecordUpdPerf
- - - - -
ae7bc08e by Simon Peyton Jones at 2024-10-14T22:15:31-04:00
Elmininate incomplete record selectors
This patch is a pure refactor of GHC's source code, to avoid the use
of partial record selectors. It was provoked by adding
-Wincomplete-record-selectors to -Wall (as the GHC Proposal specified),
which in turn showed up lots of places where GHC was using incomplete
record selectors.
This patch does mostly-simple refactoring to make it clear to the pattern
match checker that there is in fact no partiality.
There is one externally-visible change: I changed the data type HoleFit
to split out the two cases
data HoleFit = TcHoleFit TcHoleFit | RawHoleFit SDoc
data TcHoleFit = HoleFit { ...lots of fields }
There are large swathes of code that just deal with `TcHoleFit`, and
having it as a separate data types makes it apparent that `RawHoleFit`
can't occur.
This makes it much better -- but the change is visible in the
HolePlugin interface. I decided that there are so few clients of this
API that it's worth the change.
I moved several functions from Language.Haskell.Syntax to GHC.Hs.
Reason, when instantiated at (GhcPass _), the extension data construtcor
is guaranteed unused, and that justifies omitted patterns in these
functions. By putting them in GHC.Hs.X I can specialise the type for
(GhcPass _) and thereby make the function total.
An interesting side-light is that there were a few local function
definitions without a type signature, like this one in GHC.Parser.Header
convImport (L _ i) = (ideclPkgQual i, reLoc $ ideclName i)
This is fully closed, and so is generalised; but that generalises
it to any old pass, not (GhcPass _), so GHC rightly complains about the
use of the selector `ideclPkgQual`. I added a type signature to `i`, thus
convImport (L _ (i::ImportDecl GhcPs))
= (ideclPkgQual i, reLoc $ ideclName i)
which specialised the function enough to make the record selector complete.
Quite a surprising consequence of local let-generalisation!
- - - - -
6a067226 by Simon Peyton Jones at 2024-10-14T22:15:31-04:00
Add -Werror=-Wno-error=incomplete-record-selectors to hadrian-multi
In the main MR, -Wall now includes -Wincomplete-record-selectors.
However `hadrian-multi` has many, many warnings about incomplete
record selectors, so this patch stops those warnings being treated
as errors. (See discussion on !13308.)
A better fix would be to remove the use of incomplete record
selectors, since each of them represents a potential crash.
- - - - -
edeafc14 by Ben Gamari at 2024-10-14T22:16:08-04:00
users-guide: Document field coalescence
- - - - -
55b83587 by ARATA Mizuki at 2024-10-14T22:16:49-04:00
LLVM backend: Use correct rounding for Float literals
Fixes #22033
- - - - -
e59fe5c6 by Hassan Al-Awwadi at 2024-10-15T08:25:33+00:00
Changed import from Ghc. module to L.H.S module
Progresses #21592
For some reason we still imported GHC.Types.Fixity when the definitino of Fixity and LexicalFixity have already been moved to Language.Haskell.Syntax.Basic. This fixes that for
- - - - -
ab1767d5 by Simon Peyton Jones at 2024-10-15T23:45:04-04:00
Add a release-notes entry for -Wincomplete-record-selectors
- - - - -
6f0a62db by ur4t at 2024-10-16T15:33:43+00:00
GHCi: fix improper location of ghci_history file
Fixes #24266
- - - - -
5f67db48 by Alan Zimmerman at 2024-10-17T05:18:43-04:00
EPA: Remove [AddEpAnn] commit 3
EPA: Remove [AddEpAnn] from HsDocTy
EPA: Remove [AddEpAnn] from HsBangTy
EPA: Remove [AddEpAnn] from HsExplicitListTy
EPA: Remove [AddEpAnn] from HsExplicitTupleTy
EPA: Remove [AddEpAnn] from HsTypedBracket
EPA: Remove [AddEpAnn] from HsUntypedBracket
EPA: Remove [AddEpAnn] from PatBuilderOpApp
EPA: break out 'EpToken "|"' from ClassDecl anns
EPA: Remove [AddEpAnn] from ClassDecl
EPA: Remove [AddEpAnn] from SynDecl
- - - - -
fbbbd010 by Daan Rijks at 2024-10-17T05:19:19-04:00
Expand the haddocks for Control.Category
- - - - -
076c1a10 by Andrew Lelechenko at 2024-10-17T05:19:19-04:00
documentation: more examples for Control.Category
- - - - -
da545574 by Apoorv Ingle at 2024-10-17T16:39:10-05:00
Make ApplicativeDo work with HsExpansions
testcase added: T24406
Issues Fixed: #24406, #16135
Code Changes:
- Remove `XStmtLR GhcTc` as `XStmtLR GhcRn` is now compiled to `HsExpr GhcTc`
- The expanded statements are guided by `GHC.Hs.Expr.TcFunInfo` which is used to decide
if the `XExpr GhcRn` is to be typechecked using `tcApp` or `tcExpr`
Note [Expanding HsDo with XXExprGhcRn] explains the change in more detail
- - - - -
ad024a7b by Apoorv Ingle at 2024-10-17T16:39:28-05:00
simplify data structures. remove doTcApp and applicative stmt fail blocks do not refer stmts
- - - - -
b9eaac97 by Simon Peyton Jones at 2024-10-17T16:39:29-05:00
Remove special cases
... to see what breaks
- - - - -
337e488c by Simon Peyton Jones at 2024-10-17T16:39:29-05:00
Don't use a user SrcSpan on a Stmt expansoin
- - - - -
06dec751 by Apoorv Ingle at 2024-10-18T10:32:19-05:00
make caller wrap the pop err ctxt
- - - - -
30 changed files:
- .gitlab-ci.yml
- compiler/GHC/CmmToAsm/Dwarf/Types.hs
- compiler/GHC/CmmToAsm/Reg/Graph/Stats.hs
- compiler/GHC/CmmToLlvm/CodeGen.hs
- compiler/GHC/CmmToLlvm/Data.hs
- compiler/GHC/Core.hs
- compiler/GHC/Core/Coercion.hs
- compiler/GHC/Core/ConLike.hs
- compiler/GHC/Core/FVs.hs
- compiler/GHC/Core/LateCC/OverloadedCalls.hs
- compiler/GHC/Core/Lint.hs
- compiler/GHC/Core/Opt/Arity.hs
- compiler/GHC/Core/Opt/CprAnal.hs
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/Simplify/Env.hs
- compiler/GHC/Core/Opt/Simplify/Utils.hs
- compiler/GHC/Core/Opt/SpecConstr.hs
- compiler/GHC/Core/Rules.hs
- compiler/GHC/Core/SimpleOpt.hs
- compiler/GHC/Core/Subst.hs
- compiler/GHC/Core/Type.hs
- compiler/GHC/Core/Utils.hs
- compiler/GHC/CoreToIface.hs
- compiler/GHC/Driver/Flags.hs
- compiler/GHC/Hs/Binds.hs
- compiler/GHC/Hs/Decls.hs
- compiler/GHC/Hs/Dump.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Hs/Extension.hs
- compiler/GHC/Hs/ImpExp.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/fb2a76c55fbead298474d442b6578cd2b83de316...06dec75140ca23f0df316c88ec2da93acb76d397
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/fb2a76c55fbead298474d442b6578cd2b83de316...06dec75140ca23f0df316c88ec2da93acb76d397
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20241018/fb4f372b/attachment-0001.html>
More information about the ghc-commits
mailing list