- Ticket #1995: Unsoundness with newtypes - Ticket #2475: "Can't unify" error when stopped at an exception In addition this patch adds the following: - Unfailingness: RTTI cannot panic anymore. In case of failure, it recovers gracefully by returning the "I know nothing" type - A -ddump-rtti flag
This patch adds support for raw token streams, that contain more information than normal token streams (they contains comments at least). The "lexTokenStream" function brings this support to the Lexer module. In addition to that, functions have been added to the GHC module to make easier to recover of the token stream of a module ("getTokenStream"). Building on that, I added what could be called "rich token stream": token stream to which have been added the source string corresponding to each token, the function addSourceToToken takes a StringBuffer and a starting SrcLoc and a token stream and build this rich token stream. getRichTokenStream is a convenience function to get a module rich token stream. "showRichTokenStream" use the SrcLoc information in such a token stream to get a string similar to the original source (except unsignificant whitespaces). Thus "putStrLn . showRichTokenStream =<< getRichTokenStream s mod" should print a valid module source, the interesting part being to modify the token stream between the get and the show of course.
Now that the Cabal file is generated by configure, it would be nice if clean worked even if the cabal file is missing. So now we just rm -rf the dist directory.
This allows us to put the proper version number into them
…YB3) This bug has been hanging around for a long time, as you'll see by its number. The fix implements a feature that is really needed by SYB3, to allow an instance to (rather indirectly) refer to itself. The trickiness comes when solving the superclass constraints. The whoel issue is explained in Note [Recursive instances and superclases] in TcSimplify. In cracking this one I found I could remove the WantSCs argument to the ReduceMe flag, which is a worthwhile simplification. Good!
In the ext-core parser I guess I never tested: * existential type variable bindings in case alts * empty data declarations That'll learn me!
…lifier I was perplexed about why an arity-related WARN was tripping. It took me _day_ (sigh) to find that it was because SimplEnv.substExpr was taking a short cut when the substitution was empty, thereby not subsituting for Ids in scope, which must be done (CoreSubst Note [Extending the Subst]). The fix is a matter of deleting the "optimisation". Same with CoreSubst.substSpec, although I don't know if that actually caused a probem.
This warning tests that the arity of a function does not decrease. And that it's at least as great as the strictness signature. Failing this test isn't a disater, but it's distinctly odd and usually indicates that not enough information is getting propagated around, and hence you may get more simplifier iterations.
If you say -ddump-xx we effectively add -fforce-recomp, so that you see your dump output. But this works badly in --make mode, because you get the ddump output for every module, which is probably not what you want. This patch forces recompilation with -ddump-X only in one-shot mode. Of course, this only affects people using -ddump options.
It was calling openTempFile which uses a 600 permissions mask.
Rename function accordingly. The callback wasn't very flexible to begin with. There's pretty much no way around to calling 'compile' inside that callback since 'upsweep' depends on certain side effects of compile. It therefore makes more sense to restrict the callback to its intended use only, namely to log warnings and errors.