apt [Tue, 28 Aug 2001 08:34:29 +0000 (08:34 +0000)]
[project @ 2001-08-28 08:34:29 by apt]
fix problem with -fno-code
apt [Mon, 27 Aug 2001 15:16:30 +0000 (15:16 +0000)]
[project @ 2001-08-27 15:16:30 by apt]
shut up shortMeOut traces
apt [Mon, 27 Aug 2001 14:29:16 +0000 (14:29 +0000)]
[project @ 2001-08-27 14:29:16 by apt]
use qualified names to indicate external status of values
apt [Mon, 27 Aug 2001 14:27:23 +0000 (14:27 +0000)]
[project @ 2001-08-27 14:27:23 by apt]
document 31-bit core output option settings
simonmar [Mon, 27 Aug 2001 13:11:44 +0000 (13:11 +0000)]
[project @ 2001-08-27 13:11:44 by simonmar]
a couple of tweaks to the hc-file-bundle target:
- Add -r option to ${RM} to blow away an existing binary-dist
temporary directory if present.
- Fix bogons in the bundle building code.
simonmar [Mon, 27 Aug 2001 11:45:23 +0000 (11:45 +0000)]
[project @ 2001-08-27 11:45:23 by simonmar]
foldr is a good consumer (but not necessarily a good producer)
simonmar [Fri, 24 Aug 2001 14:41:09 +0000 (14:41 +0000)]
[project @ 2001-08-24 14:41:09 by simonmar]
correct off-by-one error in hGetStringBuffer
sewardj [Fri, 24 Aug 2001 13:50:03 +0000 (13:50 +0000)]
[project @ 2001-08-24 13:50:03 by sewardj]
Fill in details for 5.02.
simonpj [Fri, 24 Aug 2001 13:22:25 +0000 (13:22 +0000)]
[project @ 2001-08-24 13:22:25 by simonpj]
Make when comparing old and new strictness information,
we were being a bit too generous with the old case.
When a function has (say) arity 2, we can't use strictness
info like SSS, because that only applies if the fn is
applied to 3 args. So it's an unfair comparison.
This commit makes the old->new conversion function more
truthful in this regard, which should eliminate the
erroneously-claimed "worse" strictness results.
chak [Fri, 24 Aug 2001 13:13:59 +0000 (13:13 +0000)]
[project @ 2001-08-24 13:13:59 by chak]
wibble
simonpj [Fri, 24 Aug 2001 13:06:36 +0000 (13:06 +0000)]
[project @ 2001-08-24 13:06:36 by simonpj]
------------------------------
Another demand analyser glitch
------------------------------
This fixes, I hope, (in an unsatisfactory way) another demand-analyser
glitch, that resulted in a runtime "entered absent arg" error.
In DmdAnal.annotateLamIdBndr, we now have:
-- This gross hack is needed because otherwise we label
-- a lambda binder with demand 'B'. But in terms of calling
-- conventions that's Abs, because we don't pass it. But
-- when we do a w/w split we get
-- fw x = (\x y:B -> ...) x (error "oops")
-- And then the simplifier things the 'B' is a strict demand
-- and evaluates the (error "oops"). Sigh
The hack zaps 'B' to 'Abs', just like 'lazify' does.
Need to talk to John about what the principled reasons are.
simonpj [Fri, 24 Aug 2001 12:47:04 +0000 (12:47 +0000)]
[project @ 2001-08-24 12:47:04 by simonpj]
Improve error message for mis-matched contexts
simonpj [Fri, 24 Aug 2001 12:45:28 +0000 (12:45 +0000)]
[project @ 2001-08-24 12:45:28 by simonpj]
Fix an obscure but easy bug in SpecConstr
simonmar [Fri, 24 Aug 2001 11:39:49 +0000 (11:39 +0000)]
[project @ 2001-08-24 11:39:49 by simonmar]
- document :info
- bring up to date info about FFI support
rrt [Fri, 24 Aug 2001 09:41:27 +0000 (09:41 +0000)]
[project @ 2001-08-24 09:41:27 by rrt]
Remove unused import of DmdType
sewardj [Fri, 24 Aug 2001 09:33:14 +0000 (09:33 +0000)]
[project @ 2001-08-24 09:33:14 by sewardj]
First cut at new compiler + interpreter changes for 5.02. Also rearranged
the order of sections.
simonpj [Fri, 24 Aug 2001 09:02:39 +0000 (09:02 +0000)]
[project @ 2001-08-24 09:02:39 by simonpj]
Comment only
simonpj [Fri, 24 Aug 2001 07:58:29 +0000 (07:58 +0000)]
[project @ 2001-08-24 07:58:29 by simonpj]
Improve error message for nullary class
chak [Fri, 24 Aug 2001 06:17:56 +0000 (06:17 +0000)]
[project @ 2001-08-24 06:17:56 by chak]
* Added a brief outline of the handling of command line options
* Revised Reuben's explanation re -no-hs-main according to our email exchange
chak [Fri, 24 Aug 2001 04:00:33 +0000 (04:00 +0000)]
[project @ 2001-08-24 04:00:33 by chak]
Added SPJ's new -fmax-worker-args to the flag reference
gla [Thu, 23 Aug 2001 22:53:08 +0000 (22:53 +0000)]
[project @ 2001-08-23 22:53:08 by gla]
Correct typos and minor errors.
Reorganized most of the sections, and the interface subsection appears first in each section.
Made a small change to Figure 1, the overall architecture of the storage manager.
The description on the configuration of the nursery is now correct.
Added a short section on the state of the heap allocator.
qrczak [Thu, 23 Aug 2001 20:19:16 +0000 (20:19 +0000)]
[project @ 2001-08-23 20:19:16 by qrczak]
Don't say that GHC doesn't do fixity resolution on the left hand side
of a binding before deciding which symbol is the function symbol.
This has been fixed.
gla [Thu, 23 Aug 2001 18:23:46 +0000 (18:23 +0000)]
[project @ 2001-08-23 18:23:46 by gla]
Rephrased a few paragraphs.
Added a paragraph on the interface to retainerSet.
Added 'To do' paragraphs, which may be useful for maintenance.
simonpj [Thu, 23 Aug 2001 16:27:11 +0000 (16:27 +0000)]
[project @ 2001-08-23 16:27:11 by simonpj]
Fix representation finding for recursive newtypes
simonmar [Thu, 23 Aug 2001 15:34:49 +0000 (15:34 +0000)]
[project @ 2001-08-23 15:34:49 by simonmar]
Note that support for generics is currently broken.
simonpj [Thu, 23 Aug 2001 15:06:59 +0000 (15:06 +0000)]
[project @ 2001-08-23 15:06:59 by simonpj]
remove rnsource.hi-boot-5 (part of prev commit)
simonpj [Thu, 23 Aug 2001 15:05:53 +0000 (15:05 +0000)]
[project @ 2001-08-23 15:05:52 by simonpj]
More instance-gate fiddling. This must be one of the most
tiremsome bits of the entire compiler, and I appear to be
incapable of modifying it without getting it wrong at least
once.
Still, this commit does tidy things up a bit.
* The type renamers (rnHsType, etc) have moved from RnSource
into a new module RnTypes.
* This breaks a couple of loops, and lets us nuke RnSource.hi-boot.
Hurrah!
Simon
simonmar [Thu, 23 Aug 2001 14:44:43 +0000 (14:44 +0000)]
[project @ 2001-08-23 14:44:43 by simonmar]
Release notes updated with library changes since 5.00.2.
simonmar [Thu, 23 Aug 2001 14:41:36 +0000 (14:41 +0000)]
[project @ 2001-08-23 14:41:36 by simonmar]
include the 5.02 release notes
simonmar [Thu, 23 Aug 2001 14:39:02 +0000 (14:39 +0000)]
[project @ 2001-08-23 14:39:02 by simonmar]
document -fno-code.
rrt [Thu, 23 Aug 2001 14:38:31 +0000 (14:38 +0000)]
[project @ 2001-08-23 14:38:31 by rrt]
The new InstallShield for Windows Installer installer. I won't nuke the old
IS6 one for now, but expect it to go after the GHC 5.02 release.
The new installer uses the standard Windows Installer system, so should be
easier to migrate away from InstallShield to a more automated system in
future, though that will require the setup to be exported (the .ism format
is proprietary to InstallShield).
Also, the entire setup lives in one file rather than a zillion scattered
over a hierarchy with lots of empty directories and space-including
directory names, so it's rather easier to check out!
simonmar [Thu, 23 Aug 2001 14:38:23 +0000 (14:38 +0000)]
[project @ 2001-08-23 14:38:23 by simonmar]
Document -fno-code.
rrt [Thu, 23 Aug 2001 12:50:13 +0000 (12:50 +0000)]
[project @ 2001-08-23 12:50:13 by rrt]
On second thoughts, strip either a backslash or a slash, as if we read
an environment variable, we may well get a slash in the path; if we
get a result from GetTempPath, it'll probably have a backslash.
rrt [Thu, 23 Aug 2001 12:48:54 +0000 (12:48 +0000)]
[project @ 2001-08-23 12:48:54 by rrt]
Strip a backslash, not a slash.
simonmar [Thu, 23 Aug 2001 10:55:37 +0000 (10:55 +0000)]
[project @ 2001-08-23 10:55:37 by simonmar]
Remove no-longer-useful README. All that's left here now is the GHCi
tests, which aren't ready to be moved over to the new testsuite yet.
simonmar [Thu, 23 Aug 2001 10:53:48 +0000 (10:53 +0000)]
[project @ 2001-08-23 10:53:46 by simonmar]
remove unused tests.
simonmar [Thu, 23 Aug 2001 10:51:20 +0000 (10:51 +0000)]
[project @ 2001-08-23 10:51:19 by simonmar]
old tests, most of which seem to have been used during development
rather than as regression tests.
sewardj [Thu, 23 Aug 2001 10:36:50 +0000 (10:36 +0000)]
[project @ 2001-08-23 10:36:50 by sewardj]
Globally-uniquify the names of some _wrap functions so that the
previously-undetected global namespace clashes don't cause an
assertion failure in Hash.c when compiled -DDEBUG when starting GHCi
with various hslibs packages.
simonmar [Thu, 23 Aug 2001 10:33:36 +0000 (10:33 +0000)]
[project @ 2001-08-23 10:33:36 by simonmar]
Add a new section, documenting "GHC's take on behaviour that is left
undefined or implementation specific in Haskell 98", and in it
document the size of Int, the behaviour of fromIntegral, and the
behaviour of floating-point exceptions.
rrt [Thu, 23 Aug 2001 10:29:53 +0000 (10:29 +0000)]
[project @ 2001-08-23 10:29:53 by rrt]
reinstate some Windows-specific code I deleted by mistake.
rrt [Thu, 23 Aug 2001 10:06:04 +0000 (10:06 +0000)]
[project @ 2001-08-23 10:06:04 by rrt]
Remove spurious ;; from when the changed line was in a case.
simonmar [Thu, 23 Aug 2001 10:02:46 +0000 (10:02 +0000)]
[project @ 2001-08-23 10:02:46 by simonmar]
markup fixes
simonpj [Thu, 23 Aug 2001 09:54:46 +0000 (09:54 +0000)]
[project @ 2001-08-23 09:54:45 by simonpj]
--------------------------------------------------
Be a bit more liberal when slurping instance decls
--------------------------------------------------
Functional dependencies have (as usual) made things more complicated
Suppose an interface file contains
interface A where
class C a b | a->b where op :: a->b
instance C Foo Baz where ...
Now we are compiling
module B where
import A
t = op (v::Foo)
Should we slurp the instance decl, even though Baz is nowhere mentioned
in module B? YES! Because of the fundep, the (C Foo ?) part is enough to
select this instance decl, and the Baz part follows.
Rather than take fundeps into account "properly", we just slurp
if C is visible and *any one* of the Names in the types
This is a slightly brutal approximation, but most instance decls
are regular H98 ones and it's perfect for them.
Changes:
HscTypes:
generalise the types of GatedDecl a bit
RnHiFiles.loadInstDecl, RnHiFiles.loadRule, RnIfaces.selectGated:
the meat of the solution
RdrName, OccName etc:
some consequential wibbles
simonmar [Thu, 23 Aug 2001 08:54:45 +0000 (08:54 +0000)]
[project @ 2001-08-23 08:54:45 by simonmar]
Put a big flashing warning sign next to the description of -O2-for-C,
and don't endorse it by claiming that we actually use it (we don't).
rrt [Thu, 23 Aug 2001 08:45:50 +0000 (08:45 +0000)]
[project @ 2001-08-23 08:45:50 by rrt]
Remove dependency of win32 on greencard (because the latter is merged
into the former). This is a temporary hack until the greencard library
is added to the new libraries.
simonpj [Thu, 23 Aug 2001 08:43:30 +0000 (08:43 +0000)]
[project @ 2001-08-23 08:43:30 by simonpj]
-----------------------------------
Correct a horrible error in repType
-----------------------------------
repType is meant to give the underlying representation of a type.
But it wasn't taking account of the fact that *recursive* newtypes are
still represented by a TyConApp. (Non-recursive ones behave much more
like type synonyms now.)
As a result, if we have
newtype F = F (F->F)
then Bad Things happen if we try to seq x::F. We decide whether to
push an ordinary return address or a SEQ frame based on the type,
and repType didn't expose the fact that F is represented by a function type.
Aargh. codeGen/should_run/cg050 now tests for this.
simonpj [Thu, 23 Aug 2001 08:43:13 +0000 (08:43 +0000)]
[project @ 2001-08-23 08:43:13 by simonpj]
Add coment
rrt [Thu, 23 Aug 2001 08:36:11 +0000 (08:36 +0000)]
[project @ 2001-08-23 08:36:11 by rrt]
Remove kludgy hack that on mingwin appends C: to the result of gcc
-print-prog-name=ld, which doesn't work with the newest mingwin gcc
(which kindly adds C: for us).
simonpj [Thu, 23 Aug 2001 07:52:32 +0000 (07:52 +0000)]
[project @ 2001-08-23 07:52:32 by simonpj]
Use the unpack strategy!
simonpj [Thu, 23 Aug 2001 07:13:16 +0000 (07:13 +0000)]
[project @ 2001-08-23 07:13:16 by simonpj]
------------------------------
Improve the demand analyser [case]
------------------------------
1. In the Case case of dmdAnal, I dealt with the case binder in a way that
was both clumsy and pessimistic. This commit fixes that:
-- Figure out whether the demand on the case binder is used, and use
-- that to set the scrut_dmd. This is utterly essential.
-- Consider f x = case x of y { (a,b) -> k y a }
-- If we just take scrut_demand = U(L,A), then we won't pass x to the
-- worker, so the worker will rebuild
-- x = (a, absent-error)
-- and that'll crash.
-- So at one stage I had:
-- dead_case_bndr = isAbsentDmd (idNewDemandInfo case_bndr')
-- keepity | dead_case_bndr = Drop
-- | otherwise = Keep
--
-- But then consider
-- case x of y { (a,b) -> h y + a }
-- where h : U(LL) -> T
-- The above code would compute a Keep for x, since y is not Abs, which is silly
-- The insight is, of course, that a demand on y is a demand on the
-- scrutinee, so we need to `both` it with the scrut demand
scrut_dmd = Seq Drop Now [idNewDemandInfo b | b <- bndrs', isId b]
`both`
idNewDemandInfo case_bndr'
-- There used to be a special case for when
-- ty == TyVarTy tv
-- (a not-uncommon case) in which case the substitution was dropped.
-- But the type-tidier changes the print-name of a type variable without
-- changing the unique, and that led to a bug. Why? Pre-tidying, we had
-- a type {Foo t}, where Foo is a one-method class. So Foo is really a newtype.
-- And it happened that t was the type variable of the class. Post-tiding,
2. 'defer' can be simplified to 'lub Abs', reducing the number of places
where things can go wrong.
3. Add comments
rrt [Wed, 22 Aug 2001 15:59:35 +0000 (15:59 +0000)]
[project @ 2001-08-22 15:59:35 by rrt]
Say a bit about the horrors of linking.
simonpj [Wed, 22 Aug 2001 15:54:02 +0000 (15:54 +0000)]
[project @ 2001-08-22 15:54:02 by simonpj]
Test for only 4 words of args on SPARC foreign export dynamic
rrt [Wed, 22 Aug 2001 15:45:21 +0000 (15:45 +0000)]
[project @ 2001-08-22 15:45:21 by rrt]
Remove spurions masquerading as <p> tags.
rrt [Wed, 22 Aug 2001 15:44:15 +0000 (15:44 +0000)]
[project @ 2001-08-22 15:44:15 by rrt]
There's no such thing as a makesfile or a makfile.
rrt [Wed, 22 Aug 2001 15:39:30 +0000 (15:39 +0000)]
[project @ 2001-08-22 15:39:30 by rrt]
Remove spurious clarification. As far as the user is concerned, this
lot is right. However, I'll add a bit to the commentary about this
sorry mess.
simonpj [Wed, 22 Aug 2001 15:35:06 +0000 (15:35 +0000)]
[project @ 2001-08-22 15:35:06 by simonpj]
Fix bug in result type sigs, carelessly introduced by a recent change on my part
simonpj [Wed, 22 Aug 2001 15:27:08 +0000 (15:27 +0000)]
[project @ 2001-08-22 15:27:08 by simonpj]
Formatting only
sewardj [Wed, 22 Aug 2001 14:32:19 +0000 (14:32 +0000)]
[project @ 2001-08-22 14:32:19 by sewardj]
On sparc, create code to shuffle %i0 .. %i3 into %i2 .. %i5 before the
old code. This is a GHASTLY HACK which at least makes f-x-dynamic on
sparc work for callees with up to 16 bytes (4 words) of args.
simonmar [Wed, 22 Aug 2001 12:25:32 +0000 (12:25 +0000)]
[project @ 2001-08-22 12:24:41 by simonmar]
Remove old test suite (subsumed by fptools/testsuite).
sewardj [Wed, 22 Aug 2001 11:45:06 +0000 (11:45 +0000)]
[project @ 2001-08-22 11:45:06 by sewardj]
Count comparisons and bomb about after 100, to avoid infinite loop
due to buggy f-x-dynamic implementation on sparc-solaris.
rrt [Wed, 22 Aug 2001 11:13:19 +0000 (11:13 +0000)]
[project @ 2001-08-22 11:13:19 by rrt]
Clarify further.
rrt [Wed, 22 Aug 2001 11:10:45 +0000 (11:10 +0000)]
[project @ 2001-08-22 11:10:45 by rrt]
Clarify -no-hs-main use (basically, only has any effect when the RTS
is in a DLL).
gla [Wed, 22 Aug 2001 11:02:37 +0000 (11:02 +0000)]
[project @ 2001-08-22 11:02:37 by gla]
gla [Wed, 22 Aug 2001 11:01:23 +0000 (11:01 +0000)]
[project @ 2001-08-22 11:01:23 by gla]
Reference.
gla [Wed, 22 Aug 2001 10:57:54 +0000 (10:57 +0000)]
[project @ 2001-08-22 10:57:54 by gla]
A sample for retainer profiling. nofib/real/cacheprof/
gla [Wed, 22 Aug 2001 10:53:23 +0000 (10:53 +0000)]
[project @ 2001-08-22 10:53:23 by gla]
eepic files created from fig files.
gla [Wed, 22 Aug 2001 10:52:44 +0000 (10:52 +0000)]
[project @ 2001-08-22 10:52:44 by gla]
gla [Wed, 22 Aug 2001 10:51:57 +0000 (10:51 +0000)]
[project @ 2001-08-22 10:51:57 by gla]
A document on the implementation of retainer profiling.
Focuses on the major issues to be considered for the implemetation on the GHC
runtime system.
Also includes a brief user guide.
Gives the details on which files were modified for the implementation.
The idea of retainer profiling appears in the following paper:
`New dimensions in heap profiling'
Colin Runciman and Niklas Rojemo, 1994.
gla [Wed, 22 Aug 2001 10:48:51 +0000 (10:48 +0000)]
[project @ 2001-08-22 10:48:51 by gla]
A document on the implementation of Lag/Drag/Void/Use profiling.
Focuses on the major issues to be considered for the implementation.
Also includes a brief user guide.
Gives the details on which files were modified.
The idea is based upon the following paper:
`Lag, drag, void and use - heap profiling and space-efficeint compilation revisited'
Niklas Rojemo and Colin Runciman, ICFP '96.
gla [Wed, 22 Aug 2001 10:44:43 +0000 (10:44 +0000)]
[project @ 2001-08-22 10:44:43 by gla]
Reorganized all the sections and rewrote most of the contents.
Now describes the actual implementation, not the implementation strategy, which
was the case in the previous version.
Based on the GHC 5.01, and removed all obsolete parts.
Divides the storage manager into four parts: megablock allocator, block allocator,
heap allocator, and garbage collector.
Gives the details of the garbage collector, which should be sufficient for those
who want to analyze its implementation.
simonpj [Wed, 22 Aug 2001 10:00:51 +0000 (10:00 +0000)]
[project @ 2001-08-22 10:00:51 by simonpj]
-------------------------
Fix a demand-analyser bug
-------------------------
This bug led to "entered absent arg" errors.
The fix is in DmdAnal.dmdTransform
-- Important! If we Keep the constructor application, then
-- we need the demands the constructor places (usually lazy)
-- If not, we don't need to. For example:
-- f p@(x,y) = (p,y) -- S(AL)
-- g a b = f (a,b)
-- It's vital that we don't calculate Absent for a!
rrt [Wed, 22 Aug 2001 09:47:37 +0000 (09:47 +0000)]
[project @ 2001-08-22 09:47:37 by rrt]
Point out that -no-hs-main doesn't have any effect unless you're
building DLLs.
simonmar [Tue, 21 Aug 2001 16:18:35 +0000 (16:18 +0000)]
[project @ 2001-08-21 16:18:35 by simonmar]
Update output.
All these tests now work with the current sources, after exposing
several bugs. Tests are great.
simonmar [Tue, 21 Aug 2001 16:04:43 +0000 (16:04 +0000)]
[project @ 2001-08-21 16:04:43 by simonmar]
Oops, I bungled the -no-recomp fix. This probably had something to do
with the fact that -no-recomp is perhaps the worst-named option in the
history of compilers, and the internal variable used to store the
value of -no-recomp actually stores (not -no-recomp), perhaps in an
attempt to reverse the confusion generated by the obsurely named
option. In the end I figured I had a 50/50 chance of getting it
right...
simonmar [Tue, 21 Aug 2001 15:54:22 +0000 (15:54 +0000)]
[project @ 2001-08-21 15:54:22 by simonmar]
Look for the source file first, so we don't miss it if there's an hi
file in the current directory.
sewardj [Tue, 21 Aug 2001 15:22:09 +0000 (15:22 +0000)]
[project @ 2001-08-21 15:22:09 by sewardj]
Handle the R_SPARC_UA32 relocation type, as reported by Armin
Groesslinger.
/* According to the Sun documentation:
R_SPARC_UA32
This relocation type resembles R_SPARC_32, except it refers to an
unaligned word. That is, the word to be relocated must be treated
as four separate bytes with arbitrary alignment, not as a word
aligned according to the architecture requirements.
(JRS: which means that freeloading on the R_SPARC_32 case
is probably wrong, but hey ...)
*/
simonmar [Tue, 21 Aug 2001 14:45:13 +0000 (14:45 +0000)]
[project @ 2001-08-21 14:45:13 by simonmar]
update output
simonmar [Tue, 21 Aug 2001 14:44:42 +0000 (14:44 +0000)]
[project @ 2001-08-21 14:44:42 by simonmar]
Test various forms of :info
simonmar [Tue, 21 Aug 2001 14:44:22 +0000 (14:44 +0000)]
[project @ 2001-08-21 14:44:22 by simonmar]
Test that System.exitWith doesn't kill the interpreter
sewardj [Tue, 21 Aug 2001 14:38:04 +0000 (14:38 +0000)]
[project @ 2001-08-21 14:38:04 by sewardj]
Go back to using a relative path name for the config.h include.
This is for the same reason that we do so in ghc/compiler/*, which
is that saying -I$(GHC_INCLUDE_DIR) confuses 4.08 series compilers.
simonmar [Tue, 21 Aug 2001 14:35:37 +0000 (14:35 +0000)]
[project @ 2001-08-21 14:35:37 by simonmar]
Make local bindings work on the GHCi command line again.
simonmar [Tue, 21 Aug 2001 14:34:58 +0000 (14:34 +0000)]
[project @ 2001-08-21 14:34:58 by simonmar]
make -no-recomp work with --make
simonmar [Tue, 21 Aug 2001 14:34:25 +0000 (14:34 +0000)]
[project @ 2001-08-21 14:34:25 by simonmar]
comment reformatting only
simonpj [Tue, 21 Aug 2001 13:21:39 +0000 (13:21 +0000)]
[project @ 2001-08-21 13:21:39 by simonpj]
-----------------------
Fix a tyvar scoping bug
-----------------------
This program:
data T = forall a. T a (a->Int)
f :: T -> T
f (T (x::a) f) = T (undefined::a) f
gave the error
Inferred type is less polymorphic than expected
Quantified type variable `a' is unified with another quantified type variable `a'
When checking a pattern that binds f :: a -> Int
In the definition of `f': f (T (x :: a) f) = T (undefined :: a) f
This is of course bogus. The fix is in TcMatches.tcMatchPats, where the
in-scope tyvars should be un-extended before calling tcCheckExistentialPat.
simonmar [Tue, 21 Aug 2001 13:15:05 +0000 (13:15 +0000)]
[project @ 2001-08-21 13:15:05 by simonmar]
Use -ignore-dot-ghci for the GHCi tests.
rrt [Tue, 21 Aug 2001 13:14:51 +0000 (13:14 +0000)]
[project @ 2001-08-21 13:14:51 by rrt]
Fix include of config.h
simonpj [Tue, 21 Aug 2001 12:56:06 +0000 (12:56 +0000)]
[project @ 2001-08-21 12:56:05 by simonpj]
Further corrections to type validity checking
sewardj [Tue, 21 Aug 2001 10:12:02 +0000 (10:12 +0000)]
[project @ 2001-08-21 10:12:02 by sewardj]
Teach it about MUT_VAR.
simonmar [Tue, 21 Aug 2001 10:03:04 +0000 (10:03 +0000)]
[project @ 2001-08-21 10:03:04 by simonmar]
Another case of parenthesising operator names, this time in a ConDecl.
simonpj [Tue, 21 Aug 2001 10:00:22 +0000 (10:00 +0000)]
[project @ 2001-08-21 10:00:22 by simonpj]
wibbles
simonpj [Tue, 21 Aug 2001 09:59:33 +0000 (09:59 +0000)]
[project @ 2001-08-21 09:59:33 by simonpj]
Fix tycon assert failure
simonmar [Tue, 21 Aug 2001 09:36:15 +0000 (09:36 +0000)]
[project @ 2001-08-21 09:36:15 by simonmar]
document the requirement for source files in --make.
simonmar [Tue, 21 Aug 2001 09:32:26 +0000 (09:32 +0000)]
[project @ 2001-08-21 09:32:26 by simonmar]
document the requirement for source files in :load.
simonmar [Tue, 21 Aug 2001 09:25:48 +0000 (09:25 +0000)]
[project @ 2001-08-21 09:25:48 by simonmar]
Accept The Truth and disallow loading any home modules which don't
have a source file.
The reason is that the compilation manager can't figure out
dependencies unless it has the source file to browse through -
previously there was a half-hearted attempt to let you get away with
just an object + interface file, but it didn't work in general.
Better just to disallow it altogether.
Note that this applies to --make too.
rrt [Tue, 21 Aug 2001 09:04:22 +0000 (09:04 +0000)]
[project @ 2001-08-21 09:04:22 by rrt]
Remove unused function isSlash
rrt [Tue, 21 Aug 2001 09:03:32 +0000 (09:03 +0000)]
[project @ 2001-08-21 09:03:32 by rrt]
Fix ghc-pkg to find package.conf when installed on Windows
simonmar [Tue, 21 Aug 2001 08:59:41 +0000 (08:59 +0000)]
[project @ 2001-08-21 08:59:41 by simonmar]
Add a case so that tyConTheta works for tuples (made this change
earlier but forgot to commit it - it fixes the panic when you do :info
() in GHCi).
simonmar [Tue, 21 Aug 2001 08:53:22 +0000 (08:53 +0000)]
[project @ 2001-08-21 08:53:22 by simonmar]
Allow renameFile to rename dangling symlinks. We use lstat, but check
for HAVE_LSTAT first.
simonpj [Mon, 20 Aug 2001 16:50:13 +0000 (16:50 +0000)]
[project @ 2001-08-20 16:50:13 by simonpj]
-------------------------------------
Make NOINLINE zap the strictness info
-------------------------------------
Make a NOINLINE pragma zap strictness information.
Reasons given in the WorkWrap comment:
-- Furthermore, zap the strictess info in the Id. Why? Because
-- the NOINLINE says "don't expose any of the inner workings at the call
-- site" and the strictness is certainly an inner working.
--
-- More concretely, the demand analyser discovers the following strictness
-- for unsafePerformIO: C(U(AV))
-- But then consider
-- unsafePerformIO (\s -> let r = f x in
-- case writeIORef v r s of (# s1, _ #) ->
-- (# s1, r #)
-- The strictness analyser will find that the binding for r is strict,
-- (becuase of uPIO's strictness sig), and so it'll evaluate it before
-- doing the writeIORef. This actually makes tests/lib/should_run/memo002
-- get a deadlock!
--
-- Solution: don't expose the strictness of unsafePerformIO.
This fixes the memo002 deadlock.
simonpj [Mon, 20 Aug 2001 16:48:50 +0000 (16:48 +0000)]
[project @ 2001-08-20 16:48:50 by simonpj]
Add assertion