- 23 Jun, 2016 1 commit
-
-
eir@cis.upenn.edu authored
Test cases: typecheck/should_compile/T11974 typecheck/should_fail/T11974b
-
- 22 Jun, 2016 1 commit
-
-
Simon Peyton Jones authored
This patch fixes Trac #12175, another delicate corner case of Note [Instance and Given overlap] in TcInteract. In #12175 we were not expanding given superclasses eagerly enough. It was easy to fix, and is actually rather neater than before. See Note [Eagerly expand given superclasses] in TcCanonical. The main change is to move the eager expansion of given superclasses to canClassNC.
-
- 21 Jun, 2016 1 commit
-
-
Simon Peyton Jones authored
Richard: in a previous commit I combined the two case for decideQuantification This commit just deletes the old code. I'm afraid it'll leave you with a merge conflict though, with your stuff on generalisation.
-
- 13 Jun, 2016 1 commit
-
-
Simon Peyton Jones authored
This major commit was initially triggered by #11339, but it spiraled into a major review of the way in which type signatures for bindings are handled, especially partial type signatures. On the way I fixed a number of other bugs, namely #12069 #12033 #11700 #11339 #11670 The main change is that I completely reorganised the way in which type signatures in bindings are handled. The new story is in TcSigs Note [Overview of type signatures]. Some specific: * Changes in the data types for signatures in TcRnTypes: TcIdSigInfo and new TcIdSigInst * New module TcSigs deals with typechecking type signatures and pragmas. It contains code mostly moved from TcBinds, which is already too big * HsTypes: I swapped the nesting of HsWildCardBndrs and HsImplicitBndsrs, so that the wildcards are on the oustide not the insidde in a LHsSigWcType. This is just a matter of convenient, nothing deep. There are a host of other changes as knock-on effects, and it all took FAR longer than I anticipated :-). But it is a significant improvement, I think. Lots of error messages changed slightly, some just variants but some modest improvements. New tests * typecheck/should_compile * SigTyVars: a scoped-tyvar test * ExPat, ExPatFail: existential pattern bindings * T12069 * T11700 * T11339 * partial-sigs/should_compile * T12033 * T11339a * T11670 One thing to check: * Small change to output from ghc-api/landmines. Need to check with Alan Zimmerman
-
- 07 Jun, 2016 1 commit
-
-
niteria authored
This eradicates varSetElems from the codebase. This function used to introduce nondeterminism. I've also documented benign nondeterminism in three places. GHC Trac: #4012
-
- 24 May, 2016 1 commit
-
-
niteria authored
I've changed the functions to their nonDet equivalents and explained why they're OK there. This allowed me to remove foldNameSet, foldVarEnv, foldVarEnv_Directly, foldVarSet and foldUFM_Directly. Test Plan: ./validate, there should be no change in behavior Reviewers: simonpj, simonmar, austin, goldfire, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2244 GHC Trac Issues: #4012
-
- 10 May, 2016 2 commits
-
-
Simon Peyton Jones authored
In TcSimplify.simplifyInfer, use the context of a partial type signature as 'givens' when simplifying the inferred constraints of the group. This way we get maximum benefit from them. See Note [Add signature contexts as givens]. This (finally) fixes test EqualityConstraints in Trac #9478. And it's a nice tidy-up.
-
Simon Peyton Jones authored
There's a messy bit of tcSimplifyInfer which concerns how quantify when partial type signatures are involved. This patch tidies it up a lot. Notice that decideQuantification and quantify_tvs get much simpler. And previously the inferred type of a function could be cluttered with phantom variables that were relevant only to the error messgas. See Note [Quantification and partial signatures].
-
- 29 Apr, 2016 1 commit
-
-
niteria authored
-
- 26 Apr, 2016 2 commits
-
-
niteria authored
`varSetElems` introduces unnecessary nondeterminism and we can do the same thing deterministically for the same price. Test Plan: ./validate Reviewers: goldfire, austin, simonmar, bgamari, simonpj Reviewed By: simonpj Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2143 GHC Trac Issues: #4012
-
niteria authored
varSetElemsWellScoped introduces unnecessary non-determinism in inferred type signatures. Removing this instance required changing the representation of TcDepVars to use deterministic sets. This is the last occurence of varSetElemsWellScoped, allowing me to finally remove it. Test Plan: ./validate I will update the expected outputs when commiting, some reordering of type variables in types is expected. Reviewers: goldfire, simonpj, austin, bgamari Reviewed By: simonpj Subscribers: thomie, simonmar Differential Revision: https://phabricator.haskell.org/D2135 GHC Trac Issues: #4012
-
- 22 Apr, 2016 2 commits
-
-
niteria authored
-
Simon Peyton Jones authored
This fixes Trac #11947. See TcSimplify Note [No defaulting in the ambiguity check]
-
- 20 Apr, 2016 1 commit
-
-
Simon Peyton Jones authored
These are corner cases in 17eb2419 Refactor computing dependent type vars and I couldn't even come up with a test case * In TcSimplify.simplifyInfer, in the promotion step, be sure to promote kind variables as well as type variables. * In TcType.spiltDepVarsOfTypes, the CoercionTy case, be sure to get the free coercion variables too.
-
- 19 Apr, 2016 1 commit
-
-
Simon Peyton Jones authored
There should be no change in behaviour here * Move splitDepVarsOfType(s) from Type to TcType * Define data type TcType.TcDepVars, document what it means, and use it where appropriate, notably in splitDepVarsOfType(s) * Use it in TcMType.quantifyTyVars and friends
-
- 15 Apr, 2016 1 commit
-
-
niteria authored
When you do `varSetElems (tyCoVarsOfType x)` it's equivalent to `tyCoVarsOfTypeList x`. Why? If you look at the implementation: ``` tyCoVarsOfTypeList ty = runFVList $ tyCoVarsOfTypeAcc ty tyCoVarsOfType ty = runFVSet $ tyCoVarsOfTypeAcc ty ``` they use the same helper function. The helper function returns a deterministically ordered list and a set. The only difference between the two is which part of the result they take. It is redundant to take the set and then immediately convert it to a list. This helps with determinism and we eventually want to replace the uses of `varSetElems` with functions that don't leak the values of uniques. This change gets rid of some instances that are easy to kill. I chose not to annotate every place where I got rid of `varSetElems` with a comment about non-determinism, because once we get rid of `varSetElems` it will not be possible to do the wrong thing. Test Plan: ./validate Reviewers: goldfire, austin, simonmar, bgamari, simonpj Reviewed By: simonpj Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2115 GHC Trac Issues: #4012
-
- 04 Apr, 2016 1 commit
-
-
Eric Seidel authored
We originally wanted CallStacks to be opt-in, but dealing with let binders complicated things, forcing us to infer CallStacks. It turns out that the inference is actually unnecessary though, we can let the wanted CallStacks bubble up to the outer context by refusing to quantify over them. Eventually they'll be solved from a given CallStack or defaulted to the empty CallStack if they reach the top. So this patch prevents GHC from quantifying over CallStacks, getting us back to the original plan. There's a small ugliness to do with PartialTypeSignatures, if the partial theta contains a CallStack constraint, we *do* want to quantify over the CallStack; the user asked us to! Note that this means that foo :: _ => CallStack foo = getCallStack callStack will be an *empty* CallStack, since we won't infer a CallStack for the hole in the theta. I think this is the right move though, since we want CallStacks to be opt-in. One can always write foo :: (HasCallStack, _) => CallStack foo = getCallStack callStack to get the CallStack and still have GHC infer the rest of the theta. Test Plan: ./validate Reviewers: goldfire, simonpj, austin, hvr, bgamari Reviewed By: simonpj, bgamari Subscribers: bitemyapp, thomie Projects: #ghc Differential Revision: https://phabricator.haskell.org/D1912 GHC Trac Issues: #11573
-
- 31 Mar, 2016 1 commit
-
-
Simon Peyton Jones authored
-
- 24 Mar, 2016 1 commit
-
-
Rik Steenkamp authored
As the type of a pattern synonym cannot in general be represented by a value of type Type, we cannot use a value `SigSkol (PatSynCtxt n) (Check ty)` to represent the signature of a pattern synonym (this causes incorrect signatures to be printed in error messages). Therefore we now represent it by a value `PatSynSigSkol n` (instead of incorrect signatures we simply print no explicit signature). Furthermore, we rename `PatSynCtxt` to `PatSynBuilderCtxt`, and use `SigSkol (PatSynBuilderCtxt n) (Check ty)` to represent the type of a bidirectional pattern synonym when used in an expression context. Before, this type was represented by a value `SigSkol (PatSynCtxt n) (Check ty)`, which caused incorrect error messages. Also, in `mk_dict_err` of `typecheck\TcErrors.hs` we now distinguish between all enclosing implications and "useful" enclosing implications, for better error messages concerning pattern synonyms. See `Note [Useful implications]`. See the Phabricator page for examples. Reviewers: mpickering, goldfire, simonpj, austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D1967 GHC Trac Issues: #11667
-
- 21 Mar, 2016 1 commit
-
-
eir@cis.upenn.edu authored
It was Utterly Wrong before. Note to self: Never, ever take the free vars of an unzonked type.
-
- 17 Mar, 2016 1 commit
-
-
eir@cis.upenn.edu authored
There were two bugs here, both simple: we need to filter out covars before calling isMetaTyVar in the solver, and TcPat had a tcSubType the wrong way round. test case: dependent/should_compile/T11711
-
- 25 Feb, 2016 1 commit
-
-
barrucadu authored
Both gcc and clang tell which warning flag a reported warning can be controlled with, this patch makes ghc do the same. More generally, this allows for annotated compiler output, where an optional annotation is displayed in brackets after the severity. This also adds a new flag `-f(no-)show-warning-groups` to control whether to show which warning-group (such as `-Wall` or `-Wcompat`) a warning belongs to. This flag is on by default. This implements #10752 Reviewed By: quchen, bgamari, hvr Differential Revision: https://phabricator.haskell.org/D1943
-
- 24 Feb, 2016 1 commit
-
-
eir@cis.upenn.edu authored
See Note [TYPE] in TysPrim. There are still some outstanding pieces in #11471 though, so this doesn't actually nail the bug. This commit also contains a few performance improvements: * Short-cut equality checking of nullary type syns * Compare types before kinds in eqType * INLINE coreViewOneStarKind * Store tycon binders separately from kinds. This resulted in a ~10% performance improvement in compiling the Cabal package. No change in functionality other than performance. (This affects the interface file format, though.) This commit updates the haddock submodule.
-
- 15 Feb, 2016 1 commit
-
-
Simon Peyton Jones authored
-
- 10 Feb, 2016 1 commit
-
-
Simon Peyton Jones authored
This simple change fixes Trac #11563, #11520, #11516, #11399. See esp the comments in #11520. See Note [Fail fast on kind errors] in TcSimplify Merge to 8.0 branch
-
- 08 Feb, 2016 3 commits
-
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
This is a small refactoring, no change in behaviour.
-
Simon Peyton Jones authored
If we fail to typecheck by blowing the constraint simplifier iteration limit, we want to see the limit-blowing meessage. Previously it was being suppressed by the type /error/, which suppress the iteration-limit /warning/. Solution: make the iteration-limit message into an error.
-
- 25 Jan, 2016 1 commit
-
-
Simon Peyton Jones authored
This issue came up in Trac #11480, and is documented in Note [When superclasses help] in TcRnTypes. We were getting a spurious warning T11480.hs:1:1: warning: solveWanteds: too many iterations (limit = 4) The fix is easy. A bit of refactoring along the way. The original bug report in Trac #11480 appears to work fine in HEAD and the 8.0 branch but I added a regression test in this commit as well.
-
- 22 Jan, 2016 1 commit
-
-
Eric Seidel authored
Test Plan: `make test TEST=T11462` Reviewers: austin, bgamari, simonpj Reviewed By: simonpj Subscribers: thomie Projects: #ghc Differential Revision: https://phabricator.haskell.org/D1804 GHC Trac Issues: #11462
-
- 21 Jan, 2016 1 commit
-
-
Simon Peyton Jones authored
-
- 18 Jan, 2016 3 commits
-
-
Jan Stolarek authored
Summary: In the past the canonical way for constructing an SDoc string literal was the composition `ptext . sLit`. But for some time now we have function `text` that does the same. Plus it has some rules that optimize its runtime behaviour. This patch takes all uses of `ptext . sLit` in the compiler and replaces them with calls to `text`. The main benefits of this patch are clener (shorter) code and less dependencies between module, because many modules now do not need to import `FastString`. I don't expect any performance benefits - we mostly use SDocs to report errors and it seems there is little to be gained here. Test Plan: ./validate Reviewers: bgamari, austin, goldfire, hvr, alanz Subscribers: goldfire, thomie, mpickering Differential Revision: https://phabricator.haskell.org/D1784
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
Previously tcMatchTys took a set of "template type variables" to bind. But all the calls are top-level, and we always want to bind all variables in the template. So I simplified the API by omitting that argument. There should be no change in behaviour. Feel free to merge to 8.0 if it helps in merging other patches
-
- 07 Jan, 2016 2 commits
-
-
Simon Peyton Jones authored
simpl_top was being polluted with Safe Haskell stuff which was only used in one of its four calls. This moves the Safe Haskell stuff to the place it is actually used
-
Simon Peyton Jones authored
It was only called in one place; easier to inline it
-
- 31 Dec, 2015 1 commit
-
-
Herbert Valerio Riedel authored
Since GHC 8.1/8.2 only needs to be bootstrap-able by GHC 7.10 and GHC 8.0 (and GHC 8.2), we can now finally drop all that pre-AMP compatibility CPP-mess for good! Reviewers: austin, goldfire, bgamari Subscribers: goldfire, thomie, erikd Differential Revision: https://phabricator.haskell.org/D1724
-
- 18 Dec, 2015 1 commit
-
-
Simon Peyton Jones authored
In the pattern-match check we are looking for a proof of *unsatisfiablity* among a bunch of givens. The unsat-ness might be hidden in the superclasses, so we must expand them. But in the common case where the constraints are satisfiable, we don't want to expand a recursive superclass forever. This is all a bit arbitrary, but then the whole question is undecidable anyway. The bug in Trac #10592 comment:12 was that I expanded superclasses forever. This patch fixes it.
-
- 16 Dec, 2015 1 commit
-
-
quchen authored
This also updates the user's guide to refer to the `-W`-based warning flags by default. Quoting the release note entry: | Warnings can now be controlled with `-W(no-)...` flags in addition to | the old `-f(no-)warn...` ones. This was done as the first part of a | rewrite of the warning system to provide better control over warnings, | better warning messages, and more common syntax compared to other | compilers. The old `-fwarn...`-based warning flags will remain | functional for the forseeable future. This is part of https://ghc.haskell.org/wiki/Design/Warnings and addresses #11218 Reviewed By: hvr, bgamari Differential Revision: https://phabricator.haskell.org/D1613
-
- 15 Dec, 2015 1 commit
-
-
Ben Gamari authored
This exposes `template-haskell` functions for querying the language extensions which are enabled when compiling a module, - an `isExtEnabled` function to check whether an extension is enabled - an `extsEnabled` function to obtain a full list of enabled extensions To avoid code duplication this adds a `GHC.LanguageExtensions` module to `ghc-boot` and moves `DynFlags.ExtensionFlag` into it. A happy consequence of this is that the ungainly `DynFlags` lost around 500 lines. Moreover, flags corresponding to language extensions are now clearly distinguished from other flags due to the `LangExt.*` prefix. Updates haddock submodule. This fixes #10820. Test Plan: validate Reviewers: austin, spinda, hvr, goldfire, alanz Reviewed By: goldfire Subscribers: mpickering, RyanGlScott, hvr, simonpj, thomie Differential Revision: https://phabricator.haskell.org/D1200 GHC Trac Issues: #10820
-