- 26 Oct, 2011 1 commit
-
-
Ian Lynagh authored
This reverts commit 4e2121f4.
-
- 25 Oct, 2011 3 commits
- 20 Oct, 2011 1 commit
-
-
Ian Lynagh authored
Now need to import constructors for Foreign.C.Types types
-
- 19 Oct, 2011 1 commit
-
-
Ian Lynagh authored
-
- 18 Oct, 2011 1 commit
-
-
dterei authored
-
- 17 Oct, 2011 3 commits
- 14 Oct, 2011 1 commit
-
-
Ian Lynagh authored
-
- 27 Sep, 2011 1 commit
-
-
Ian Lynagh authored
This allows the extension (which is on by default) to be turned off, which gets us a small step closer to replacing Haskell98 records with something better.
-
- 23 Sep, 2011 1 commit
-
-
Simon Peyton Jones authored
This addresses the rare cases where the simplifier diverges (see the above ticket). We were already counting how many simplifier steps were taking place, but with no limit. This patch adds a limit; at which point we halt compilation, and print out useful stats. The stats show what is begin inlined, and how often, which points you directly to the problem. The limit is set based on the size of the program. Instead of halting compilation, we could instead just inhibit inlining, which would let compilation of the module complete. This is a bit harder to implement, and it's likely to mean that you unrolled the function 1143 times and then ran out of ticks; you probably don't want to complete parsing on this highly-unrolled program. Flags: -dsimpl-tick-factor=N. Default is 100 (percent). A bigger number increases the allowed maximum tick count.
-
- 07 Sep, 2011 1 commit
-
-
Simon Peyton Jones authored
-
- 06 Sep, 2011 1 commit
-
-
batterseapower authored
Basically as documented in http://hackage.haskell.org/trac/ghc/wiki/KindFact, this patch adds a new kind Constraint such that: Show :: * -> Constraint (?x::Int) :: Constraint (Int ~ a) :: Constraint And you can write *any* type with kind Constraint to the left of (=>): even if that type is a type synonym, type variable, indexed type or so on. The following (somewhat related) changes are also made: 1. We now box equality evidence. This is required because we want to give (Int ~ a) the *lifted* kind Constraint 2. For similar reasons, implicit parameters can now only be of a lifted kind. (?x::Int#) => ty is now ruled out 3. Implicit parameter constraints are now allowed in superclasses and instance contexts (this just falls out as OK with the new constraint solver) Internally the following major changes were made: 1. There is now no PredTy in the Type data type. Instead GHC checks the kind of a type to figure out if it is a predicate 2. There is now no AClass TyThing: we represent classes as TyThings just as a ATyCon (classes had TyCons anyway) 3. What used to be (~) is now pretty-printed as (~#). The box constructor EqBox :: (a ~# b) -> (a ~ b) 4. The type LCoercion is used internally in the constraint solver and type checker to represent coercions with free variables of type (a ~ b) rather than (a ~# b)
-
- 01 Sep, 2011 1 commit
-
-
Ian Lynagh authored
Allows you to turn off loading/storing the GHCi command history from/to the ~/.ghc/ghci_history file.
-
- 25 Aug, 2011 1 commit
-
-
Simon Marlow authored
-
- 16 Aug, 2011 2 commits
-
-
-
Simon Peyton Jones authored
This patch makes a number of related improvements a) Implements the Haskell Prime semantics for pattern bindings (Trac #2357). That is, a pattern binding p = e is typed just as if it had been written t = e f = case t of p -> f g = case t of p -> g ... etc ... where f,g are the variables bound by p. In paricular it's ok to say (f,g) = (\x -> x, \y -> True) and f and g will get propertly inferred types f :: a -> a g :: a -> Int b) Eliminates the MonoPatBinds flag altogether. (For the moment it is deprecated and has no effect.) Pattern bindings are now generalised as per (a). Fixes Trac #2187 and #4940, in the way the users wanted! c) Improves the OutsideIn algorithm generalisation decision. Given a definition without a type signature (implying "infer the type"), the published algorithm rule is this: - generalise *top-level* functions, and - do not generalise *nested* functions The new rule is - generalise a binding whose free variables have Guaranteed Closed Types - do not generalise other bindings Generally, a top-level let-bound function has a Guaranteed Closed Type, and so does a nested function whose free vaiables are top-level functions, and so on. (However a top-level function that is bitten by the Monomorphism Restriction does not have a GCT.) Example: f x = let { foo y = y } in ... Here 'foo' has no free variables, so it is generalised despite being nested. d) When inferring a type f :: ty for a definition f = e, check that the compiler would accept f :: ty as a type signature for that same definition. The type is rejected precisely when the type is ambiguous. Example: class Wob a b where to :: a -> b from :: b -> a foo x = [x, to (from x)] GHC 7.0 would infer the ambiguous type foo :: forall a b. Wob a b => b -> [b] but that type would give an error whenever it is called; and GHC 7.0 would reject that signature if given by the programmer. The new type checker rejects it up front. Similarly, with the advent of type families, ambiguous types are easy to write by mistake. See Trac #1897 and linked tickets for many examples. Eg type family F a :: * f ::: F a -> Int f x = 3 This is rejected because (F a ~ F b) does not imply a~b. Previously GHC would *infer* the above type for f, but was unable to check it. Now even the inferred type is rejected -- correctly. The main implemenation mechanism is to generalise the abe_wrap field of ABExport (in HsBinds), from [TyVar] to HsWrapper. This beautiful generalisation turned out to make everything work nicely with minimal programming effort. All the work was fiddling around the edges; the core change was easy!
-
- 14 Jul, 2011 1 commit
-
-
Ian Lynagh authored
The -w flag wasn't turning off a few warnings (Opt_WarnMissingImportList, Opt_WarnMissingLocalSigs, Opt_WarnIdentities). Rather than just adding them, I've separated the Opt_Warn* contructors off into their own type, so -w now just sets the list of warning flags to [].
-
- 12 Jul, 2011 1 commit
-
-
dterei authored
-
- 11 Jul, 2011 1 commit
-
-
Ian Lynagh authored
-
- 03 Jul, 2011 5 commits
-
-
Ian Lynagh authored
It was already deprecated, and marked for removal in 7.2.
-
Ian Lynagh authored
We no longer advertise that we support the Generics extension, although we still do accept -XGenerics and -XNoGenerics flags (but warn that we are ignoring them). I also remove the even older -fgenerics and -fno-generics flags.
-
Ian Lynagh authored
-
Ian Lynagh authored
It used to take a whole DynFlags, but that meant we had to create a DynFlags with (panic "No settings") for settings, as we didn't have any real settings. Now we just pass the LogAction, which is all that it actually needed. The default is exported from DynFlags as defaultLogAction.
-
Ian Lynagh authored
-
- 02 Jul, 2011 1 commit
-
-
batterseapower authored
-
- 30 Jun, 2011 2 commits
-
-
batterseapower authored
-
dterei authored
-
- 29 Jun, 2011 1 commit
-
-
batterseapower authored
-
- 24 Jun, 2011 1 commit
-
-
dterei authored
-
- 18 Jun, 2011 8 commits
-
-
dterei authored
-
dterei authored
-
dterei authored
-
dterei authored
-
dterei authored
-
dterei authored
-
dterei authored
-
dterei authored
This was done as we originally planned for SafeHaskell to provide some compilation safety. We have dropped this though and instead intend for a new static flag, '--safecompile' that provides this instead in an orthogonal way to SafeHaskell.
-