summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* testsuite: Use explicit -e in sed commandBen Gamari2018-12-111-1/+1
| | | | Otherwise Darwin's sed interprets the command as the suffix for -i.
* Fix #16008 with a pinch of addConsistencyConstraintsRyan Scott2018-12-114-9/+29
| | | | | | | | | | | | | | | | | | | | Summary: #16008 happened because we forgot to typecheck nullary associated type family instances in a way that's consistent with the type variables bound by the parent class. Oops. Easily fixed with a use of `checkConsistencyConstraints`. Test Plan: make test TEST=T16008 Reviewers: simonpj, goldfire, bgamari Reviewed By: goldfire Subscribers: rwbarton, carter GHC Trac Issues: #16008 Differential Revision: https://phabricator.haskell.org/D5435
* Fix minor mistake in comment about data decls.Richard Eisenberg2018-12-091-2/+2
| | | | Fixes #16024. [skip ci]
* hadrian: Drop nix build scriptBen Gamari2018-12-083-124/+45
| | | | | It's currently too out-of-date to build current hadrian and is arguably completely broken anyways (see #15794).
* testsuite: 32-bit expected output for T15460Ben Gamari2018-12-082-0/+3
|
* rts: Ensure that task->id is initializedBen Gamari2018-12-071-0/+1
| | | | | | | | | | Reviewers: erikd, simonmar Reviewed By: simonmar Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5325
* Use --no-as-needed with LLD tooSimon Marlow2018-12-071-1/+3
| | | | | | | | | | | | Test Plan: validate using LLD as the linker (TODO) Reviewers: bgamari, angerman, kavon, erikd Reviewed By: bgamari Subscribers: watashi, rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5336
* Add -fno-safe-haskell flagMatthew Pickering2018-12-077-5/+47
| | | | | | | | | | | | | | | | | This flag can be set to turn off the Safe Haskell checks. Whether a module is marked Safe/Unsafe/Trustworthy is ignored when this flag to set. Reviewers: bgamari, tdammers Reviewed By: tdammers Subscribers: rwbarton, carter GHC Trac Issues: #15920 Differential Revision: https://phabricator.haskell.org/D5360
* Fix StgLint bound id check, generalize StgLintÖmer Sinan Ağacan2018-12-075-60/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | StgLint was incorrectly using isLocalId for bound id check to see whether an id is imported (in which case we don't expect it to be bound) or local. The problem with isLocalId is that its semantics changes after Core, as explained in the note: (last line) Note [GlobalId/LocalId] ~~~~~~~~~~~~~~~~~~~~~~~ A GlobalId is * always a constant (top-level) * imported, or data constructor, or primop, or record selector * has a Unique that is globally unique across the whole GHC invocation (a single invocation may compile multiple modules) * never treated as a candidate by the free-variable finder; it's a constant! A LocalId is * bound within an expression (lambda, case, local let(rec)) * or defined at top level in the module being compiled * always treated as a candidate by the free-variable finder After CoreTidy, top-level LocalIds are turned into GlobalIds We now pass current module as a parameter to StgLint, which uses it to see if an id should be bound (defined in the current module) or not (imported). Other changes: - Generalized StgLint to make it work on both StgTopBinding and CgStgTopBinding. - Bring all top-level binders into scope before linting top-level bindings to allow uses before definitions. TODO: We should remove the binder from local vars when checking RHSs of non-recursive bindings. Test Plan: This validates. Reviewers: simonpj, bgamari, sgraf Reviewed By: simonpj, sgraf Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5370
* Fix #15369: GHCi doesn't honor :set +c when loading for a second timeRoland Senn2018-12-075-6/+41
| | | | | | | | | | | | | | | | | | | | | The decision to (re)collect the type info for a (re)loaded module is now taken only by comparing the file timestamps of the .hs file of the module. (Or form the .o file if the .hs file is missing). If the file timestamp changes, we (re)collect the type info. The timestamp of the processing time of the last collect is no longer used. Test Plan: make test TEST=T15369 Reviewers: alanz, hvr, monoidal, osa1, thomie, bgamari, tdammers Reviewed By: tdammers Subscribers: rwbarton, carter GHC Trac Issues: #15369 Differential Revision: https://phabricator.haskell.org/D5376
* Add haddock for Node in Digraph. [skip ci]klebinger.andreas@gmx.at2018-12-071-8/+16
| | | | | | | | | | | | Test Plan: make Reviewers: bgamari Reviewed By: bgamari Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5378
* Remove redundant include of Rts.h in EventLogWriter.hZejun Wu2018-12-071-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `EventLogWriter.h` doesn't use anything from `Rts.h`, the include is redundant. This include is ignored when we include ``` Rts.h -> RtsAPI.h -> rts/EventLogWriter.h -> Rts.h ``` but can can cause problem when we include `RtsApi.h` directly with errors like ``` In file included from /usr/lib/ghc-8.6.2/include/RtsAPI.h:20: In file included from /usr/lib/ghc-8.6.2/include/rts/EventLogWriter.h:14: In file included from /usr/lib/ghc-8.6.2/include/Rts.h:185: /usr/lib/ghc-8.6.2/include/rts/storage/GC.h:187:29: error: unknown type name 'Capability' StgPtr allocate ( Capability *cap, W_ n ); ``` Test Plan: ./validate Reviewers: simonmar, bgamari, afarmer, erikd, alexbiehl Reviewed By: bgamari, alexbiehl Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5395
* Rename "changed" to "no-change" in HscMainÖmer Sinan Ağacan2018-12-071-8/+8
| | | | | | | | | | | | | | | | | hscSimpleIface is returning a bool for whether there were _no changes_ in the iface file. The same bool is called "no_change_at_all" in mkIface_, and "no_change" in hscWriteIface and other functions. However it is called "changed" in HscMain.finish and hscMaybeWriteIface, which is confusing because "changed" and "no_change" have opposite meanings. This patch renames "changed" to "no_change" to fix this. Reviewers: simonpj, bgamari Reviewed By: bgamari Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5416
* Hadrian: fix dynamicGhcPrograms value for the quickest flavourAlp Mestanogullari2018-12-071-1/+2
| | | | | | | | | | | | | | | | | | | | Quickest does not build anything in a dynamic way, so that flavour should default to not building "ghc programs" dynamically. I ran into this problem by building the 'docs' target with quickest, which failed because at some point we run a haddock command in a context whose Way is sensitive to dynamicGhcPrograms, and it started looking for dyn interface files when it shouldn't have. Test Plan: hadrian/build.sh --flavour=quickest docs Reviewers: snowleopard, bgamari Reviewed By: snowleopard Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5419
* Mark SRT_1/SRT_2 as CONSTR_1_0/CONSTR_2_0Ömer Sinan Ağacan2018-12-071-2/+2
| | | | | | | | | | | | | | | Test Plan: Validated locally, but skipped perf tests as there's a framework-related error there. Reviewers: simonmar, bgamari, erikd Reviewed By: simonmar Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5421
* hadrian: eliminate most of the remaining big rule enumerationsAlp Mestanogullari2018-12-076-104/+213
| | | | | | | | | | | | | | | | | | | | | | | | | Following what was done to Rules.Library some time ago and to Rules.Compile recently (D5412), this patch moves more rules away from the "enumerate a lot of contexts and generate one rule for each" style and instead uses the "parse data from file path to recover context" approach. In fact, the only rules left to convert seem to be the ones from Rules.Generate. This effectively decreases the pauses described in #15938 further as well as the amount of allocations and GC that we do, unsurprisingly. Nowhere as drastically as D5412, though. Test Plan: perform full build and generate docs Reviewers: snowleopard, bgamari Reviewed By: snowleopard Subscribers: rwbarton, carter GHC Trac Issues: #15938 Differential Revision: https://phabricator.haskell.org/D5422
* Require 'libdw' for '--enable-dwarf-unwind'Alec Theriault2018-12-071-1/+3
| | | | | | | | | | | | | | | | | | | | This causes './configure --enable-dwarf-unwind' to exit with a helpful error message when 'libdw' cannot be found (compared to the previous behaviour of silently pretending the user hadn't requested DWARF support at all). Test Plan: ./configure --enable-dwarf-unwind # on systems with/without libdw Reviewers: bgamari, nh2 Reviewed By: nh2 Subscribers: nh2, rwbarton, erikd, carter GHC Trac Issues: #15968 Differential Revision: https://phabricator.haskell.org/D5424
* Mark broken tests on powerpc64le and skip ghci-extPeter Trommler2018-12-072-1/+3
| | | | | | | | | | | | | | | Mark tests with DWARF as broken Test way `ghci-ext` only where available Test Plan: validate Reviewers: bgamari, hvr, simonmar, erikd, Phyx Reviewed By: bgamari, Phyx Subscribers: Phyx, rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5297
* testsuite: Fix tests expecting 64-bit word sizeBen Gamari2018-12-076-0/+33
| | | | These were added in 75a8349b2a7d0142d3d687837caf5a95bbb4368d.
* Add missing space in report_summary outputAdam Sandberg Eriksson2018-12-071-1/+1
|
* Fixed plugin example to workabc2018-12-071-14/+14
|
* Fix typo in Foldable docsSimon Jakobi2018-12-071-1/+1
|
* Add some complexities to Data.List documentation (#15003)Sven Tennie2018-12-071-6/+8
| | | | | | | | | | Namely for: - head - uncons - tail - last - init - null
* CircleCI: Don't ignore gitlab/.* branchesBen Gamari2018-12-071-3/+0
| | | | | | | This was added (for good reasons) in b9260e925e998f715865ae043bdb9f779ab5f849 but it seems this field isn't allowed in this context. Sadly there doesn't appear to be an easy way to accomplish what we are after with CircleCI's rather restrictive configuration language. Sigh.
* testsuite: Fix use of stats_num_fieldBen Gamari2018-12-071-2/+1
| | | | This is now collect_stats.
* Fix #12102/#15872 by removing outdated users' guide proseRyan Scott2018-12-074-36/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: In the beginning, #12102 (and #15872, which is of a similar ilk) were caused by a poor, confused user trying to use code that looks like this (with a constraint in the kind of a data type): ```lang=haskell type family IsTypeLit a where IsTypeLit Nat = 'True IsTypeLit Symbol = 'True IsTypeLit a = 'False data T :: forall a. (IsTypeLit a ~ 'True) => a -> * where MkNat :: T 42 MkSymbol :: T "Don't panic!" ``` Many bizarre GHC quirks (documented in those tickets) arose from this sort of construction. Ultimately, the use of constraints in data type kinds like this has made a lot of people very confused and been widely regarded as a bad move. Commit 2257a86daa72db382eb927df12a718669d5491f8 finally put this feature out of its misery, so now the code above simply errors with `Illegal constraint in a kind`. As a result, the aforementioned tickets are moot, so this patch wraps a bow on the whole thing by: 1. Removing the (now outdated) section on constraints in data type kinds from the users' guide, and 2. Adding a test case to test this code path. Test Plan: make test TEST=T12102 Reviewers: goldfire, simonpj, bgamari, tdammers Reviewed By: tdammers Subscribers: tdammers, rwbarton, carter GHC Trac Issues: #12102, #15872 Differential Revision: https://phabricator.haskell.org/D5397
* Careful tweaking to exprOkForSpeculationSimon Peyton Jones2018-12-076-111/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch does several things: * Make exprOkForSpeculation ignore evaluatedness of variables See the Note [exprOkForSpeculation and evaluated variables] This means that the binder-swap transformation no longer invaliates the let/app invariant. * Make exprOkForSpeculation return False for DataToTagOp and SeqOp. See Note [exprOkForSpeculation and SeqOp/DataToTagOp] * Remove the 'can_fail' property from dataToTag#; it was always a hack (described in the old Note [dataToTag#] in primops.txt.pp), and now its not necessary because of the fixes above. * Make SetLevels use exprIsHNF, /not/ exprOkForSpeculation, when floating single-alternative cases. See SetLevels Note [Floating single-alternative cases] * Fix a buglet in FloatIn; probably never bites in practice See Note [Dead bindings] Collectively, these changes finally fix Trac #15696.
* Wibble to Taming the Kind Inference MonsterSimon Peyton Jones2018-12-0738-130/+205
| | | | | | | | | | | | | | | | | | | I had allowed rename/should_fail/T15828 (Trac #15828) to regress a bit. The main payload of this patch is to fix that problem, at the cost of more contortions in checkConsistentFamInst. Oh well, at least they are highly localised. I also update the -ddump-types code in TcRnDriver to print out some more expicit information about each type constructor, thus instead of DF{3} :: forall k. * -> k -> * we get data family DF{3} :: forall k. * -> k -> * Remember, this is debug-printing only. This change is the reason that so many .stderr files change.
* hadrian: optimise Rules.CompileAlp Mestanogullari2018-12-075-134/+349
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, as reported in #15938, resuming a build "in the middle", e.g when building _build/stage1/libraries/base/, hadrian would take up to a whole minute to get started doing actual work, building code. This was mostly due to a big enumeration that we do in Rules.hs, to generate all the possible patterns for object files for 1) all ways, 2) all packages and 3) all stages. Since rule enumeration is always performed, whatever the target, we were always paying this cost, which seemed to grow bigger the farther in the build we stopped and were resuming from. Instead, this patch borrows the approach that we took for Rules.Library in https://github.com/snowleopard/hadrian/pull/571, which exposes all the relevant object files under as few catch-all rules as possible (8 here), and parses all the information we need out of the object's path. The concrete effect of this patch that I have observed is to reduce the 45-60 seconds pause to <5 seconds. Along with the Shake performance improvements that Neil mentions in #15938, most of the pause should effectively disappear. Reviewers: snowleopard, bgamari, goldfire Reviewed By: snowleopard Subscribers: rwbarton, carter GHC Trac Issues: #15938 Differential Revision: https://phabricator.haskell.org/D5412
* Add fusion rules for the zipWith functions in base (#15263)Tobias Decking2018-12-066-0/+247
| | | | | | | | | | | | | | | | | | | | | This patch will allow `zip3` and `zipWith3` in `GHC.List` as well as `zipWith4`, `zipWith5`, `zipWith6` and `zipWith7` in `Data.OldList` to fuse. These rules are kept in a similar style as the rules for `zip` and `zipWith`. Added a corresponding test case. Test Plan: validate Reviewers: hvr, bgamari, simonpj Reviewed By: simonpj Subscribers: simonpj, rockbmb, rwbarton, carter GHC Trac Issues: #15263 Differential Revision: https://phabricator.haskell.org/D5241
* Windows: Use the "big" PE object format on amd64Ben Gamari2018-12-061-1/+37
| | | | | | | | | | | | | | Test Plan: Do full build on Windows. Reviewers: AndreasK, Phyx Reviewed By: AndreasK Subscribers: rwbarton, erikd, carter GHC Trac Issues: #15934 Differential Revision: https://phabricator.haskell.org/D5383
* Don't use a generic apply thunk for known callsSebastian Graf2018-12-061-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Currently, an AP thunk like `sat = f a b c` will not have its own entry point and info pointer and will instead reuse a generic apply thunk like `stg_ap_4_upd`. That's great from a code size perspective, but if `f` is a known function, a specialised entry point with a plain call can be much faster than figuring out the arity and doing dynamic dispatch. This looks at `f`s arity to figure out if it is a known function and if so, it will not lower it to a generic apply function. Benchmark results are encouraging: No changes to allocation, but 0.2% less counted instructions. Test Plan: Validates locally Reviewers: simonmar, osa1, simonpj, bgamari Reviewed By: simonpj Subscribers: rwbarton, carter GHC Trac Issues: #16005 Differential Revision: https://phabricator.haskell.org/D5414
* Remove a tcTraceSimon Peyton Jones2018-12-061-1/+2
| | | | | | This tcTrace, in tcTyFamInstEqn, caused a knot-tying loop, because it was printing a type after zonking-to-Type. Easy solution: don't do that.
* Tests Trac #14847Simon Peyton Jones2018-12-062-0/+18
|
* Remove explicit recursion in retainer profiling (fixes #14758)Alexander Vershilov2018-12-051-77/+146
| | | | | | | | | | | | | | | | | | | | | | | Retainer profiling contained a recursion that under certain circumstances could lead to the stack overflow in C code. The idea of the improvement is to keep an explicit stack for the object, more precise to reuse existing stack, but allow new type of objects to be stored there. There is no reliable reproducer that is not a big program but in some cases foldr (+) 0 [1..10000000] can work. Reviewers: bgamari, simonmar, erikd, osa1 Reviewed By: bgamari, osa1 Subscribers: osa1, rwbarton, carter GHC Trac Issues: #14758 Differential Revision: https://phabricator.haskell.org/D5351
* Remove duplicates in -ddump-minimial-importsSimon Peyton Jones2018-12-055-18/+38
| | | | | | | | | | | | | | | | | | | | | This fixes Trac #15994. Previously RdrName.gresToAvailInfo assumed that the input list of GREs had no duplicates. I accidentally broke this precondition in this refactoring: commit 6353efc7694ba8ec86c091918e02595662169ae2 Date: Thu Nov 22 14:48:05 2018 -0500 Fix unused-import warnings This patch fixes a fairly long-standing bug (dating back to 2015) in RdrName.bestImport, namely (There was an ASSERT, but it's usually switched off in stage2. It tripped when I switched stage2 assertions on.) The fix is straightforward: account for dups in gresToAvailInfo.
* linker: store entire link map and use it.Tamar Christina2018-12-0410-20/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This fixes a corner case in which we have seen the symbol multiple times in different static libraries, but due to a depencency we end up loading the symbol from a library other than the first one. Previously the runtime linker would only track symbols from the first library and did not store the full link map. In this case it was unable to find the address for the symbols in the second library during delay loading. This change stores the address of all symbols seen so a full link map is generated, such that when we make a different decision later than what was expected we're able to still correctly load the library. Test Plan: ./validate, new testcase T15894 Reviewers: angerman, bgamari, erikd, simonmar Reviewed By: bgamari Subscribers: rwbarton, carter GHC Trac Issues: #15894 Differential Revision: https://phabricator.haskell.org/D5353
* Hadrian: include 'findPtr' via find-ptr cabal flagAlec Theriault2018-12-043-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This is the latest in the 'findPtr' saga. See * 900c47f88784b91517c00be3e1087322e62f698e * 561748cb507505bd5b7bd76bdc57796d896b62a2 for the previous attempts. The problem with re-using the 'debug' cabal flag for the purpose of forcing inclusion of 'findPtr' occurs when 'debug' is one of the RTS ways, but RTS is not being compiled with '-DDEBUG': * the 'debug' flag gets passed to cabal, signalling to build 'rts' with the debug flavour, but also forcing inclusion of the 'findPtr'/'_findPtr' symbol * since '-DDEBUG' isn't enabled, that symbol doesn't show up in the libraries, so executable that depend on 'rts' (everything) will end up always requiring 'findPtr'/'_findPtr' but 'rts' won'y provide it! The fix is simple: create a a new 'find-ptr' cabal-flag whose only purpose is forcing '-Wl,-u,findPtr'/'-Wl,-u,_findPtr'. Then, enable that flag when the RTS is being compiled with '-DDEBUG' Test Plan: ./hadrian/build.sh -c # on mac Reviewers: alpmestan, snowleopard, bgamari, erikd, simonmar, Phyx Reviewed By: alpmestan, snowleopard, Phyx Subscribers: Phyx, rwbarton, carter GHC Trac Issues: #15956 Differential Revision: https://phabricator.haskell.org/D5404
* Improve test T14452 for WindowsRoland Senn2018-12-041-1/+2
| | | | | | | | | | | | | | | | | | Summary: Under Windows all parameters to gcc are enclosed in quotes, opposite to Linux, where the quotes are missing. Therefore in the test, we remove all quotes in the stdout file with sed. Test Plan: make test TEST=T14452 Reviewers: osa1, hvr, bgamari, monoidal, Phyx, simonpj Reviewed By: Phyx Subscribers: rwbarton, carter GHC Trac Issues: #14452 Differential Revision: https://phabricator.haskell.org/D5398
* Bump nofib submoduleklebinger.andreas@gmx.at2018-12-031-0/+0
| | | | | | | | | | | | Test Plan: run nofib Reviewers: bgamari, tdammers Reviewed By: tdammers Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5396
* Fix link name to a noteArnaud Spiwack2018-12-031-1/+1
| | | | | | | | | | Reviewers: goldfire, bgamari, tdammers Reviewed By: tdammers Subscribers: rwbarton, carter Differential Revision: https://phabricator.haskell.org/D5399
* Add test cases for #7503, #14451Ryan Scott2018-12-033-0/+48
| | | | | | | | | At some point between 8.4 and 8.6, two things were fixed: * The entirety of #14451. * One of the test cases in #7503. I've added this as T7503a. The other test case from that ticket still does /not/ work, so we'll have to add T7503b some other day.
* Comments onlySimon Peyton Jones2018-12-032-5/+22
|
* Introduce tcTypeKind, and use itSimon Peyton Jones2018-12-0327-313/+304
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the type checker Constraint and * are distinct; and the function that takes the kind of a type should respect that distinction (Trac #15971). This patch implements the change: * Introduce Type.tcTypeKind, and use it throughout the type inference engine * Add new Note [Kinding rules for types] for the kinding rules, especially for foralls. * Redefine isPredTy ty = tcIsConstraintKind (tcTypeKind ty) (it had a much more complicated definition before) Some miscellaneous refactoring * Get rid of TyCoRep.isTYPE, Kind.isTYPEApp, in favour of TyCoRep.kindRep, kindRep_maybe * Rename Type.getRuntimeRepFromKind_maybe to getRuntimeRep_maybe I did some spot-checks on compiler perf, and it really doesn't budge (as expected).
* Fix embarrassing infinite loop in pprParendTypeRyan Scott2018-12-033-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: `pprParendType` was missing an explicit case for `EqualityT`, which caused it to fall through to a catch-all case that invokes `ppr`. But `ppr` itself does not have a case for a partial application of `EqualityT`, so //it// falls back to `pprParendType`, resulting in an infinite loop! The fix is simple: add a case for `EqualityT` in `pprParendType`. While I was in the neighborhood, I removed the catch-call case in `pprParendType` to make this sort of mistake less likely to happen in the future. Test Plan: make test TEST=T15985 Reviewers: bgamari, monoidal, simonpj Reviewed By: monoidal, simonpj Subscribers: rwbarton, carter GHC Trac Issues: #15985 Differential Revision: https://phabricator.haskell.org/D5403
* Fix #15954 by rejigging check_type's orderRyan Scott2018-12-0310-25/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Previously, `check_type` (which catches illegal uses of unsaturated type synonyms without enabling `LiberalTypeSynonyms`, among other things) always checks for uses of polytypes before anything else. There is a problem with this plan, however: checking for polytypes requires decomposing `forall`s and other invisible arguments, an action which itself expands type synonyms! Therefore, if we have something like: ```lang=haskell type A a = Int type B (a :: Type -> Type) = forall x. x -> x type C = B A ``` Then when checking `B A`, `A` will get expanded to `forall x. x -> x` before `check_type` has an opportunity to realize that `A` is an unsaturated type synonym! This is the root cause of #15954. This patch fixes the issue by moving the case of `check_type` that detects polytypes to be //after// the case that checks for `TyConApp`s. That way, the `TyConApp` case will properly flag things like the unsaturated use of `A` in the example above before we ever attempt to check for polytypes. Test Plan: make test TEST=T15954 Reviewers: simonpj, bgamari, goldfire Reviewed By: simonpj Subscribers: rwbarton, carter GHC Trac Issues: #15954 Differential Revision: https://phabricator.haskell.org/D5402
* Warn on all out-of-range literals in pats/exprsAlec Theriault2018-12-0319-99/+315
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: These changes were motivated by #13256. While poking around, I realized we weren't very consistent in our "-Woverflowed-literals" warnings. This patch fixes that by: * warning earlier on in the pipeline (ie. before we've desugared 'Int' patterns into 'I# Int#') * handling 'HsLit' as well as 'HsOverLit' (this covers unboxed literals) * covering more pattern / expression forms 4/6 of the warnings in the 'Overflow' test are due to this patch. The other two are mostly for completeness. Also fixed a missing empty-enumeration warning for 'Natural'. This warnings were tripped up by the 'Bounded Word' instance (see #9505), but the fix was obvious and simple: use unboxed word literals. Test Plan: make TEST=Overflow && make TEST=T10930 Reviewers: hvr, bgamari, RyanGlScott Reviewed By: RyanGlScott Subscribers: RyanGlScott, rwbarton, carter GHC Trac Issues: #13256, #10930 Differential Revision: https://phabricator.haskell.org/D5181
* update (CicleCI) CI script to work with ghc-ciAlp Mestanogullari2018-12-022-53/+21
| | | | | | | | | | ghc-ci is a tiny webservice that acts as an intermediate between our CircleCI jobs on Gitlab and the actual builds running on CircleCI, so that the build script doesn't need to rely on any secret, which makes the whole setup fork-friendly. The concrete effect of this patch is to allow any fork of GHC on Gitlab to run CircleCI jobs.
* Hadrian: Print all testsuite output to stdoutAndrey Mokhov2018-12-011-1/+4
| | | See https://ghc.haskell.org/trac/ghc/ticket/15951
* testsuite: Don't use git status to determine whether we are inside a repoBen Gamari2018-12-012-7/+8
| | | | | Git status is extremely expensive for this task. We instead use `git rev-parse HEAD` and throw away the output to ensure we don't spam the user.