Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
-
a72ff58f
by mangoiv at 2026-06-25T05:53:07-04:00
27 changed files:
- + changelog.d/unused-type
- compiler/GHC/Builtin/Names.hs
- compiler/GHC/Builtin/Types.hs
- compiler/GHC/HsToCore/Expr.hs
- compiler/GHC/Iface/Type.hs
- compiler/GHC/Tc/Types.hs
- compiler/GHC/Tc/Utils/Monad.hs
- compiler/GHC/Tc/Utils/TcType.hs
- compiler/GHC/Tc/Zonk/Type.hs
- libraries/base/src/GHC/Base.hs
- libraries/base/src/GHC/Exts.hs
- libraries/ghc-experimental/src/GHC/PrimOps.hs
- libraries/ghc-internal/src/GHC/Internal/Types.hs
- testsuite/tests/interface-stability/ghc-prim-exports.stdout
- testsuite/tests/interface-stability/ghc-prim-exports.stdout-mingw32
- testsuite/tests/perf/compiler/T11068.stdout
- testsuite/tests/pmcheck/should_compile/T12957.stderr
- testsuite/tests/profiling/should_run/staticcallstack002.stdout
- testsuite/tests/simplCore/should_compile/Makefile
- testsuite/tests/simplCore/should_compile/T13156.stdout
- testsuite/tests/simplCore/should_compile/T26615.stderr
- testsuite/tests/typecheck/should_fail/T13292.stderr
- + testsuite/tests/typecheck/should_fail/T27390-explicit-kinds.stderr
- + testsuite/tests/typecheck/should_fail/T27390.hs
- + testsuite/tests/typecheck/should_fail/T27390.stderr
- + testsuite/tests/typecheck/should_fail/T27390a.hs
- testsuite/tests/typecheck/should_fail/all.T
Changes:
| 1 | +section: compiler
|
|
| 2 | +synopsis: Rename ZonkAny to UnusedType and add pretty printing logic for it.
|
|
| 3 | +issues: #27390
|
|
| 4 | +mrs: !16212
|
|
| 5 | + |
|
| 6 | +description: {
|
|
| 7 | + After unification, GHC fills in unconstrained type variables such as ``alpha`` in
|
|
| 8 | + ``(length :: [alpha] -> Int) ([] :: List alpha) :: Int`` with a fixed type.
|
|
| 9 | + This type was, confusingly to the user, called ``ZonkAny``.
|
|
| 10 | + This type is now renamed ``UnusedType``, with special pretty-printing logic to make
|
|
| 11 | + it display like an ordinary metavariable.
|
|
| 12 | +} |
| ... | ... | @@ -1904,8 +1904,8 @@ unsatisfiableClassNameKey = mkPreludeTyConUnique 170 |
| 1904 | 1904 | anyTyConKey :: Unique
|
| 1905 | 1905 | anyTyConKey = mkPreludeTyConUnique 171
|
| 1906 | 1906 | |
| 1907 | -zonkAnyTyConKey :: Unique
|
|
| 1908 | -zonkAnyTyConKey = mkPreludeTyConUnique 172
|
|
| 1907 | +unusedTypeTyConKey :: Unique
|
|
| 1908 | +unusedTypeTyConKey = mkPreludeTyConUnique 172
|
|
| 1909 | 1909 | |
| 1910 | 1910 | -- Custom user type-errors
|
| 1911 | 1911 | errorMessageTypeErrorFamKey :: Unique
|
| ... | ... | @@ -93,7 +93,7 @@ module GHC.Builtin.Types ( |
| 93 | 93 | cTupleSelId, cTupleSelIdName,
|
| 94 | 94 | |
| 95 | 95 | -- * Any
|
| 96 | - anyTyCon, anyTy, anyTypeOfKind, zonkAnyTyCon,
|
|
| 96 | + anyTyCon, anyTy, anyTypeOfKind, unusedTypeTyCon,
|
|
| 97 | 97 | |
| 98 | 98 | -- * Recovery TyCon
|
| 99 | 99 | makeRecoveryTyCon,
|
| ... | ... | @@ -300,7 +300,7 @@ wiredInTyCons :: [TyCon] |
| 300 | 300 | |
| 301 | 301 | wiredInTyCons = map (dataConTyCon . snd) boxingDataCons
|
| 302 | 302 | ++ [ anyTyCon
|
| 303 | - , zonkAnyTyCon
|
|
| 303 | + , unusedTypeTyCon
|
|
| 304 | 304 | , boolTyCon
|
| 305 | 305 | , charTyCon
|
| 306 | 306 | , stringTyCon
|
| ... | ... | @@ -410,58 +410,89 @@ doubleDataConName = mkWiredInDataConName UserSyntax gHC_TYPES (fsLit "D#") |
| 410 | 410 | -- Any
|
| 411 | 411 | |
| 412 | 412 | {-
|
| 413 | -Note [Any types]
|
|
| 414 | -~~~~~~~~~~~~~~~~
|
|
| 415 | -The type constructors `Any` and `ZonkAny` are closed type families declared thus:
|
|
| 413 | +Note [The types Any and UnusedType]
|
|
| 414 | +~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
|
|
| 415 | +The type constructors `Any` and `UnusedType` are closed type families declared as:
|
|
| 416 | 416 | |
| 417 | - type family Any :: forall k. k where { }
|
|
| 418 | - type family ZonkAny :: forall k. Nat -> k where { }
|
|
| 417 | + type family Any :: forall k. k where { }
|
|
| 418 | + type family UnusedType :: forall k. Symbol -> k where { }
|
|
| 419 | 419 | |
| 420 | 420 | They are used when we want a type of a particular kind, but we don't really care
|
| 421 | -what that type is. The leading example is this: `ZonkAny` is used to instantiate
|
|
| 422 | -un-constrained type variables after type checking. For example, consider the
|
|
| 423 | -term (length [] :: Int), where
|
|
| 421 | +what that type is. The leading example that is relevant for GHC itself is this:
|
|
| 424 | 422 | |
| 425 | - length :: forall a. [a] -> Int
|
|
| 426 | - [] :: forall a. [a]
|
|
| 423 | + `UnusedType` is used to instantiate unconstrained type variables after type
|
|
| 424 | + checking. For example, consider the term (length [] :: Int), where
|
|
| 427 | 425 | |
| 428 | -We must type-apply `length` and `[]`, but to what type? It doesn't matter!
|
|
| 429 | -The typechecker will end up with
|
|
| 426 | + length :: forall a. [a] -> Int
|
|
| 427 | + [] :: forall a. [a]
|
|
| 430 | 428 | |
| 431 | - length @alpha ([] @alpha)
|
|
| 429 | + We must type-apply `length` and `[]`, but to what type? It doesn't matter!
|
|
| 430 | + The typechecker will end up with
|
|
| 432 | 431 | |
| 433 | -where `alpha` is an un-constrained unification variable. The "zonking" process zaps
|
|
| 434 | -that unconstrained `alpha` to an arbitrary type (ZonkAny @Type 3), where the `3` is
|
|
| 435 | -arbitrary (see wrinkle (Any5) below). This is done in `GHC.Tc.Zonk.Type.commitFlexi`.
|
|
| 436 | -So we end up with
|
|
| 432 | + length @alpha ([] @alpha)
|
|
| 437 | 433 | |
| 438 | - length @(ZonkAny @Type 3) ([] @(ZonkAny @Type 3))
|
|
| 434 | + where `alpha` is an unconstrained unification variable. The "zonking" process
|
|
| 435 | + zaps that unconstrained `alpha` to an arbitrary type (UnusedType @Type "a_3"),
|
|
| 436 | + where the `3` is arbitrary (see wrinkle (Any3) below) and "a" is the name string
|
|
| 437 | + of the meta variable. This is done in `GHC.Tc.Zonk.Type.commitFlexi`.
|
|
| 438 | + So we end up with
|
|
| 439 | 439 | |
| 440 | -`Any` and `ZonkAny` differ only in the presence of the `Nat` argument; see
|
|
| 441 | -wrinkle (Any4).
|
|
| 440 | + length @(UnusedType @Type "a_3") ([] @(UnusedType @Type "a_3"))
|
|
| 442 | 441 | |
| 443 | -Wrinkles:
|
|
| 442 | +`Any` and `UnusedType` differ only in the presence of the `Symbol` argument; see (Any6).
|
|
| 444 | 443 | |
| 445 | -(Any1) `Any` and `ZonkAny` are kind polymorphic since in some program we may
|
|
| 446 | - need to use `ZonkAny` to fill in a type variable of some kind other than *
|
|
| 447 | - (see #959 for examples).
|
|
| 448 | - |
|
| 449 | -(Any2) They are /closed/ type families, with no instances. For example, suppose that
|
|
| 444 | +(Any1) They are /closed/ type families, with no instances. For example, suppose that
|
|
| 450 | 445 | with alpha :: '(k1, k2) we add a given coercion
|
| 451 | 446 | g :: alpha ~ (Fst alpha, Snd alpha)
|
| 452 | - and we zonked alpha = ZonkAny @(k1,k2) n. Then, if `ZonkAny` was a /data/ type,
|
|
| 453 | - we'd get inconsistency because we'd have a Given equality with `ZonkAny` on one
|
|
| 447 | + and we zonked alpha = UnusedType @(k1,k2) n. Then, if `UnusedType` was a /data/ type,
|
|
| 448 | + we'd get inconsistency because we'd have a Given equality with `UnusedType` on one
|
|
| 454 | 449 | side and '(,) on the other. See also #9097 and #9636.
|
| 455 | 450 | |
| 456 | - See #25244 for a suggestion that we instead use an /open/ type family for which
|
|
| 457 | - you cannot provide instances. Probably the difference is not very important.
|
|
| 451 | + They are not /data/ types, and that's important for the code generator,
|
|
| 452 | + because the code gen may enter a data value.
|
|
| 453 | + |
|
| 454 | + A closed type family with no equations behaves differently than an open type
|
|
| 455 | + family with no equations due to Note [Insoluble fundeps] IFD0 in
|
|
| 456 | + GHC.Tc.Solver.FunDeps, so it was argued in #25244 that perhaps 'Any' should
|
|
| 457 | + rather be an open type family for which new equations cannot be written.
|
|
| 458 | + |
|
| 459 | +(Any2) `Any` and `UnusedType` are kind polymorphic since in some programs we may
|
|
| 460 | + need to use `UnusedType` to fill in a type variable of some kind other than Type
|
|
| 461 | + e.g. TYPE r for some r, or types of the form _ -> Type.
|
|
| 462 | + |
|
| 463 | +(Any3) `Any` and `UnusedType` are wired-in so we can easily refer to them where we
|
|
| 464 | + don't have a name environment.
|
|
| 465 | + |
|
| 466 | +(Any4) User facing aspects of the types Any and UnusedType:
|
|
| 467 | + |
|
| 468 | + `Any` is defined in ghc-internal:GHC.Internal.Types, and exported. `Any`
|
|
| 469 | + is available to users because it is a useful type in userspace and is thus
|
|
| 470 | + re-exported from base:GHC.Exts.
|
|
| 471 | + |
|
| 472 | + `UnusedType` is exported mainly for documentation in case a user stumbles over
|
|
| 473 | + it in debug output of GHC.
|
|
| 474 | + |
|
| 475 | + The key property of 'Any' is that it is safe to coerce a type to 'Any' as long
|
|
| 476 | + as the representation is unchanged. That is, it is OK to use 'unsafeCoerce#' to
|
|
| 477 | + go from 'ty :: TYPE r' to 'Any :: TYPE r' and back.
|
|
| 478 | + This can be useful when e.g. implementing dependent maps or similar typed
|
|
| 479 | + container types, storing values of type `Any`.
|
|
| 480 | + |
|
| 481 | +(Any5) Warnings about unused bindings of type `Any` and `UnusedType` are suppressed,
|
|
| 482 | + following the same rationale of supressing warning about the unit type.
|
|
| 483 | + |
|
| 484 | + For example, consider (#25895):
|
|
| 485 | + |
|
| 486 | + do { forever (return ()); blah }
|
|
| 458 | 487 | |
| 459 | -(Any3) They do not claim to be /data/ types, and that's important for
|
|
| 460 | - the code generator, because the code gen may /enter/ a data value
|
|
| 461 | - but never enters a function value.
|
|
| 488 | + where forever :: forall a b. IO a -> IO b
|
|
| 489 | + Nothing constrains `b`, so it will be instantiated with `Any` or `UnusedType`.
|
|
| 490 | + But we certainly don't want to complain about a discarded do-binding.
|
|
| 462 | 491 | |
| 463 | -(Any4) `ZonkAny` takes a `Nat` argument so that we can readily make up /distinct/
|
|
| 464 | - types (#24817). Consider
|
|
| 492 | +(Any6) Wrinkle - Pattern match checking.
|
|
| 493 | + |
|
| 494 | + The first reason why `UnusedType` takes a `Symbol` argument is that
|
|
| 495 | + we can readily make up /distinct/ types (#24817) for the Pmc. Consider
|
|
| 465 | 496 | |
| 466 | 497 | data SBool a where { STrue :: SBool True; SFalse :: SBool False }
|
| 467 | 498 | |
| ... | ... | @@ -475,53 +506,33 @@ Wrinkles: |
| 475 | 506 | Now, what are `alpha` and `beta`? If we zonk both of them to the same type
|
| 476 | 507 | `Any @Type`, the pattern-match checker will (wrongly) report that the first
|
| 477 | 508 | branch is inaccessible. So we zonk them to two /different/ types:
|
| 478 | - alpha := ZonkAny @Type 4 and beta := ZonkAny @Type k 5
|
|
| 509 | + alpha := UnusedType @Type "a_4" and beta := UnusedType @Type k "b_5"
|
|
| 479 | 510 | (The actual numbers are arbitrary; they just need to differ.)
|
| 480 | 511 | |
| 481 | 512 | The unique-name generation comes from field `tcg_zany_n` of `TcGblEnv`; and
|
| 482 | - `GHC.Tc.Zonk.Type.commitFlexi` calls `GHC.Tc.Utils.Monad.newZonkAnyType` to
|
|
| 513 | + `GHC.Tc.Zonk.Type.commitFlexi` calls `GHC.Tc.Utils.Monad.newUnusedTypeType` to
|
|
| 483 | 514 | make up a fresh type.
|
| 484 | 515 | |
| 485 | 516 | If this example seems unconvincing (e.g. in this case foo must be bottom)
|
| 486 | 517 | see #24817 for larger but more compelling examples.
|
| 487 | 518 | |
| 488 | -(Any5) `Any` and `ZonkAny` are wired-in so we can easily refer to it where we
|
|
| 489 | - don't have a name environment (e.g. see Rules.matchRule for one example)
|
|
| 490 | - |
|
| 491 | -(Any6) `Any` is defined in library module ghc-prim:GHC.Types, and exported so that
|
|
| 492 | - it is available to users. For this reason it's treated like any other
|
|
| 493 | - wired-in type:
|
|
| 494 | - - has a fixed unique, anyTyConKey,
|
|
| 495 | - - lives in the global name cache
|
|
| 496 | - Currently `ZonkAny` is not available to users; but it could easily be.
|
|
| 519 | +(Any7) Wrinkle - Error reporting.
|
|
| 497 | 520 | |
| 498 | -(Any7) Properties of `Any`:
|
|
| 499 | - * When `Any` is instantiated at a lifted type it is inhabited by at least one value,
|
|
| 500 | - namely bottom.
|
|
| 521 | + There's a second reason why `UnusedType` takes a `Symbol` argument, which is that
|
|
| 522 | + we use it to neatly display zonked unfilled metavariables without leaking
|
|
| 523 | + implementation details of code generation.
|
|
| 501 | 524 | |
| 502 | - * You can safely coerce any /lifted/ type to `Any` and back with `unsafeCoerce`.
|
|
| 525 | + `UnusedType` is handled specially in the pretty-printer to avoid confusing
|
|
| 526 | + compiler output. For example, `UnusedType "foo_3" :: Type` is displayed as `foo_3`.
|
|
| 503 | 527 | |
| 504 | - * You can safely coerce any /unlifted/ type to `Any` and back with `unsafeCoerceUnlifted`.
|
|
| 528 | + That special handling is implemented in GHC.Iface.Type.pprTyTcApp and more
|
|
| 529 | + specifically ppr_iface_unused_ty_tycon.
|
|
| 505 | 530 | |
| 506 | - * You can coerce /any/ type to `Any` and back with `unsafeCoerce#`, but it's only safe when
|
|
| 507 | - the kinds of both the type and `Any` match.
|
|
| 531 | + See testcase T27390 for an example of the pretty-printing in action.
|
|
| 508 | 532 | |
| 509 | - * For lifted/unlifted types `unsafeCoerce[Unlifted]` should be preferred over
|
|
| 510 | - `unsafeCoerce#` as they prevent accidentally coercing between types with kinds
|
|
| 511 | - that don't match.
|
|
| 512 | - |
|
| 513 | - See examples in ghc-prim:GHC.Types
|
|
| 514 | - |
|
| 515 | -(Any8) Warning about unused bindings of type `Any` and `ZonkAny` are suppressed,
|
|
| 516 | - following the same rationale of supressing warning about the unit type.
|
|
| 517 | - |
|
| 518 | - For example, consider (#25895):
|
|
| 519 | - |
|
| 520 | - do { forever (return ()); blah }
|
|
| 521 | - |
|
| 522 | - where forever :: forall a b. IO a -> IO b
|
|
| 523 | - Nothing constrains `b`, so it will be instantiates with `Any` or `ZonkAny`.
|
|
| 524 | - But we certainly don't want to complain about a discarded do-binding.
|
|
| 533 | + Historical note: in the past, `UnusedType` was called `ZonkAny` (or `Any` before that).
|
|
| 534 | + We renamed it to `UnusedType` and added this special treatment in the pretty-printer to avoid
|
|
| 535 | + confusing mentions of zonking.
|
|
| 525 | 536 | |
| 526 | 537 | The Any tycon used to be quite magic, but we have since been able to
|
| 527 | 538 | implement it merely with an empty kind polymorphic type family. See #10886 for a
|
| ... | ... | @@ -534,7 +545,7 @@ anyTyConName = |
| 534 | 545 | mkWiredInTyConName UserSyntax gHC_TYPES (fsLit "Any") anyTyConKey anyTyCon
|
| 535 | 546 | |
| 536 | 547 | anyTyCon :: TyCon
|
| 537 | --- See Note [Any types]
|
|
| 548 | +-- See Note [The types Any and UnusedType]
|
|
| 538 | 549 | anyTyCon = mkFamilyTyCon anyTyConName kind binders 0 res_kind Nothing
|
| 539 | 550 | (ClosedSynFamilyTyCon Nothing)
|
| 540 | 551 | Nothing
|
| ... | ... | @@ -550,22 +561,22 @@ anyTy = mkTyConTy anyTyCon |
| 550 | 561 | anyTypeOfKind :: Kind -> Type
|
| 551 | 562 | anyTypeOfKind kind = mkTyConApp anyTyCon [kind]
|
| 552 | 563 | |
| 553 | -zonkAnyTyConName :: Name
|
|
| 554 | -zonkAnyTyConName =
|
|
| 555 | - mkWiredInTyConName UserSyntax gHC_TYPES (fsLit "ZonkAny") zonkAnyTyConKey zonkAnyTyCon
|
|
| 564 | +unusedTypeTyConName :: Name
|
|
| 565 | +unusedTypeTyConName =
|
|
| 566 | + mkWiredInTyConName UserSyntax gHC_TYPES (fsLit "UnusedType") unusedTypeTyConKey unusedTypeTyCon
|
|
| 556 | 567 | |
| 557 | -zonkAnyTyCon :: TyCon
|
|
| 558 | --- ZonkAnyTyCon :: forall k. Nat -> k
|
|
| 559 | --- See Note [Any types]
|
|
| 560 | -zonkAnyTyCon = mkFamilyTyCon zonkAnyTyConName kind bndrs 0 res_kind
|
|
| 568 | +unusedTypeTyCon :: TyCon
|
|
| 569 | +-- unusedTypeTyCon :: forall k. Symbol -> k
|
|
| 570 | +-- See Note [The types Any and UnusedType]
|
|
| 571 | +unusedTypeTyCon = mkFamilyTyCon unusedTypeTyConName kind bndrs 0 res_kind
|
|
| 561 | 572 | Nothing
|
| 562 | 573 | (ClosedSynFamilyTyCon Nothing)
|
| 563 | 574 | Nothing
|
| 564 | 575 | NotInjective
|
| 565 | 576 | where
|
| 566 | - [kv,nat_kv] = mkTemplateKindVars [liftedTypeKind, naturalTy]
|
|
| 577 | + [kv,sym_kv] = mkTemplateKindVars [liftedTypeKind, typeSymbolKind]
|
|
| 567 | 578 | bndrs = [ mkNamedTyConBinder Specified kv
|
| 568 | - , mkAnonTyConBinder nat_kv ]
|
|
| 579 | + , mkAnonTyConBinder sym_kv ]
|
|
| 569 | 580 | res_kind = mkTyVarTy kv
|
| 570 | 581 | kind = mkTyConKind bndrs res_kind
|
| 571 | 582 |
| ... | ... | @@ -1281,11 +1281,11 @@ warnDiscardedDoBindings rhs@(L rhs_loc _) m_ty elt_ty |
| 1281 | 1281 | do { fam_inst_envs <- dsGetFamInstEnvs
|
| 1282 | 1282 | ; let norm_elt_ty = topNormaliseType fam_inst_envs elt_ty
|
| 1283 | 1283 | supressible_ty =
|
| 1284 | - isUnitTy norm_elt_ty || isAnyTy norm_elt_ty || isZonkAnyTy norm_elt_ty
|
|
| 1284 | + isUnitTy norm_elt_ty || isAnyTy norm_elt_ty || isUnusedTypeTy norm_elt_ty
|
|
| 1285 | 1285 | -- Warn about discarding things in 'monadic' binding,
|
| 1286 | 1286 | -- however few types are excluded:
|
| 1287 | 1287 | -- * Unit type `()`
|
| 1288 | - -- * `ZonkAny` or `Any` type see (Any8) of Note [Any types]
|
|
| 1288 | + -- * `UnusedType` or `Any` type see (Any5) of Note [The types Any and UnusedType]
|
|
| 1289 | 1289 | ; if warn_unused && not supressible_ty
|
| 1290 | 1290 | then diagnosticDs (DsUnusedDoBind rhs elt_ty)
|
| 1291 | 1291 | else
|
| ... | ... | @@ -7,7 +7,7 @@ This module defines interface types and binders |
| 7 | 7 | -}
|
| 8 | 8 | |
| 9 | 9 | |
| 10 | -{-# LANGUAGE MultiWayIf #-}
|
|
| 10 | +{-# LANGUAGE MultiWayIf, OverloadedRecordDot #-}
|
|
| 11 | 11 | module GHC.Iface.Type (
|
| 12 | 12 | IfExtName,
|
| 13 | 13 | IfLclName(..), mkIfLclName, ifLclNameFS,
|
| ... | ... | @@ -1740,6 +1740,7 @@ pprTyTcApp ctxt_prec tc tys = |
| 1740 | 1740 | sdocOption sdocPrintExplicitKinds $ \print_kinds ->
|
| 1741 | 1741 | sdocOption sdocPrintTypeAbbreviations $ \print_type_abbreviations ->
|
| 1742 | 1742 | getPprDebug $ \debug ->
|
| 1743 | + getPprStyle $ \style ->
|
|
| 1743 | 1744 | |
| 1744 | 1745 | if | ifaceTyConName tc `hasKey` ipClassKey
|
| 1745 | 1746 | , IA_Arg (IfaceLitTy (IfaceStrTyLit n))
|
| ... | ... | @@ -1791,6 +1792,14 @@ pprTyTcApp ctxt_prec tc tys = |
| 1791 | 1792 | | Just doc <- ppr_equality ctxt_prec tc (appArgsIfaceTypes tys)
|
| 1792 | 1793 | -> doc
|
| 1793 | 1794 | |
| 1795 | + -- See Note [The types Any and UnusedType], specifically (Any6) and (Any7)
|
|
| 1796 | + | ifaceTyConName tc `hasKey` unusedTypeTyConKey
|
|
| 1797 | + , ((arg_k, _) : (IfaceLitTy (IfaceStrTyLit arg_nm), _) : args_usr)
|
|
| 1798 | + <- appArgsIfaceTypesForAllTyFlags tys
|
|
| 1799 | + -- if arg_k is a kind with more than 0 arguments, then _ might not be [] here
|
|
| 1800 | + , userStyle style
|
|
| 1801 | + -> ppr_iface_unused_ty_tycon ctxt_prec arg_k arg_nm args_usr
|
|
| 1802 | + |
|
| 1794 | 1803 | | otherwise
|
| 1795 | 1804 | -> ppr_iface_tc_app ppr_app_arg ctxt_prec tc $
|
| 1796 | 1805 | appArgsIfaceTypesForAllTyFlags $ stripInvisArgs (PrintExplicitKinds print_kinds) tys
|
| ... | ... | @@ -1802,6 +1811,23 @@ ppr_kind_type ctxt_prec = sdocOption sdocStarIsType $ \case |
| 1802 | 1811 | False -> pprPrefixOcc liftedTypeKindTyConName
|
| 1803 | 1812 | True -> maybeParen ctxt_prec starPrec starLit
|
| 1804 | 1813 | |
| 1814 | +-- | user-style printer that pretty-prints an 'UnusedType @k "foo_3" to foo_3.
|
|
| 1815 | +-- If -fprint-explicit-kinds or -fprint-explicit-runtime-reps are set, instead
|
|
| 1816 | +-- prints them to (foo3 :: k).
|
|
| 1817 | +-- See Note [The types Any and UnusedType], specifically (Any6) and (Any7) for why this is useful.
|
|
| 1818 | +ppr_iface_unused_ty_tycon :: PprPrec -> IfaceType -> LexicalFastString -> [(IfaceType, ForAllTyFlag)] -> SDoc
|
|
| 1819 | +ppr_iface_unused_ty_tycon ctxt_prec arg_k arg_nm args_usr
|
|
| 1820 | + = sdocOption sdocPrintExplicitKinds $ \print_kinds ->
|
|
| 1821 | + sdocOption sdocPrintExplicitRuntimeReps $ \print_reps ->
|
|
| 1822 | + if print_kinds || print_reps
|
|
| 1823 | + then prettyMeta $ \nm ->
|
|
| 1824 | + maybeParen sig_prec sigPrec $ nm <+> text "::" <+> pprIfaceType arg_k
|
|
| 1825 | + else prettyMeta id
|
|
| 1826 | + where sig_prec = if null args_usr then ctxt_prec else appPrec
|
|
| 1827 | + prettyMeta add_ty
|
|
| 1828 | + = pprIfacePrefixApp ctxt_prec (add_ty $ ppr arg_nm)
|
|
| 1829 | + $ map (ppr_app_arg appPrec) args_usr
|
|
| 1830 | + |
|
| 1805 | 1831 | -- | Pretty-print a type-level equality.
|
| 1806 | 1832 | -- Returns (Just doc) if the argument is a /saturated/ application
|
| 1807 | 1833 | -- of eqTyCon (~)
|
| ... | ... | @@ -2190,7 +2216,8 @@ instance Binary IfaceTyConSort where |
| 2190 | 2216 | 0 -> return IfaceNormalTyCon
|
| 2191 | 2217 | 1 -> IfaceTupleTyCon <$> get bh <*> get bh
|
| 2192 | 2218 | 2 -> IfaceSumTyCon <$> get bh
|
| 2193 | - _ -> return IfaceEqualityTyCon
|
|
| 2219 | + 3 -> return IfaceEqualityTyCon
|
|
| 2220 | + _ -> panic "get IfaceTyConSort"
|
|
| 2194 | 2221 | |
| 2195 | 2222 | instance Binary IfaceTyConInfo where
|
| 2196 | 2223 | put_ bh (IfaceTyConInfo i s) = put_ bh i >> put_ bh s
|
| ... | ... | @@ -582,8 +582,8 @@ data TcGblEnv |
| 582 | 582 | -- ^ Allows us to choose unique DFun names.
|
| 583 | 583 | |
| 584 | 584 | tcg_zany_n :: TcRef Integer,
|
| 585 | - -- ^ A source of unique identities for ZonkAny instances
|
|
| 586 | - -- See Note [Any types] in GHC.Builtin.Types, wrinkle (Any4)
|
|
| 585 | + -- ^ A source of unique identities for UnusedType instances
|
|
| 586 | + -- See Note [The types Any and UnusedType] in GHC.Builtin.Types, wrinkle (Any6)
|
|
| 587 | 587 | |
| 588 | 588 | tcg_merged :: [(Module, Fingerprint)],
|
| 589 | 589 | -- ^ The requirements we merged with; we always have to recompile
|
| ... | ... | @@ -154,7 +154,7 @@ module GHC.Tc.Utils.Monad( |
| 154 | 154 | getCCIndexM, getCCIndexTcM,
|
| 155 | 155 | |
| 156 | 156 | -- * Zonking
|
| 157 | - liftZonkM, newZonkAnyType,
|
|
| 157 | + liftZonkM, newUnusedType,
|
|
| 158 | 158 | |
| 159 | 159 | -- * Complete matches
|
| 160 | 160 | localAndImportedCompleteMatches, getCompleteMatchesTcM,
|
| ... | ... | @@ -168,7 +168,7 @@ import GHC.Prelude |
| 168 | 168 | |
| 169 | 169 | |
| 170 | 170 | import GHC.Builtin.Names
|
| 171 | -import GHC.Builtin.Types( zonkAnyTyCon )
|
|
| 171 | +import GHC.Builtin.Types( unusedTypeTyCon )
|
|
| 172 | 172 | |
| 173 | 173 | import GHC.Tc.Errors.Types
|
| 174 | 174 | import GHC.Tc.Errors.Hole.Plugin ( HoleFitPlugin, HoleFitPluginR (..) )
|
| ... | ... | @@ -197,7 +197,7 @@ import GHC.Core.Coercion ( isReflCo ) |
| 197 | 197 | import GHC.Core.Multiplicity
|
| 198 | 198 | import GHC.Core.InstEnv
|
| 199 | 199 | import GHC.Core.FamInstEnv
|
| 200 | -import GHC.Core.Type( mkNumLitTy )
|
|
| 200 | +import GHC.Core.Type( mkStrLitTy )
|
|
| 201 | 201 | import GHC.Core.TyCo.Rep( CoercionHole(..) )
|
| 202 | 202 | import GHC.Core.TyCo.FVs( coVarsOfCo )
|
| 203 | 203 | import GHC.Core.TyCon ( TyCon )
|
| ... | ... | @@ -2258,17 +2258,24 @@ chooseUniqueOccTc fn = |
| 2258 | 2258 | ; writeTcRef dfun_n_var (extendOccSet set occ)
|
| 2259 | 2259 | ; return occ }
|
| 2260 | 2260 | |
| 2261 | -newZonkAnyType :: Kind -> TcM Type
|
|
| 2262 | --- Return a type (ZonkAny @k n), where n is fresh
|
|
| 2263 | --- Recall ZonkAny :: forall k. Natural -> k
|
|
| 2264 | --- See Note [Any types] in GHC.Builtin.Types, wrinkle (Any4)
|
|
| 2265 | -newZonkAnyType kind
|
|
| 2261 | +newUnusedType :: Name -> Kind -> TcM Type
|
|
| 2262 | +-- Return a type (UnusedType @k sym_n), where sym
|
|
| 2263 | +-- is a name and n is a fresh Integer.
|
|
| 2264 | +-- Recall UnusedType :: forall k. Symbol -> k
|
|
| 2265 | +-- See Note [The types Any and UnusedType] in GHC.Builtin.Types, wrinkle (Any6)
|
|
| 2266 | +newUnusedType name kind
|
|
| 2266 | 2267 | = do { env <- getGblEnv
|
| 2267 | 2268 | ; let zany_n_var = tcg_zany_n env
|
| 2268 | 2269 | ; i <- readTcRef zany_n_var
|
| 2269 | 2270 | ; let !i2 = i+1
|
| 2270 | 2271 | ; writeTcRef zany_n_var i2
|
| 2271 | - ; return (mkTyConApp zonkAnyTyCon [kind, mkNumLitTy i]) }
|
|
| 2272 | + -- Mind that the "_" here is load-bearing:
|
|
| 2273 | + -- name foo1 with zany_n_var = 1 musn't be equal to
|
|
| 2274 | + -- name foo with zany_n_var = 11 b/c that way the Pmc
|
|
| 2275 | + -- would consider them equal. Using "_" suffices because
|
|
| 2276 | + -- numbers never start with _ and so (legal) identfiers like
|
|
| 2277 | + -- foo_ would become foo__1 which is distinct from e.g. foo_1
|
|
| 2278 | + ; return (mkTyConApp unusedTypeTyCon [kind, mkStrLitTy $ getOccFS name `appendFS` fsLit "_" `appendFS` fsLit (show i) ]) }
|
|
| 2272 | 2279 | |
| 2273 | 2280 | getConstraintVar :: TcM (TcRef WantedConstraints)
|
| 2274 | 2281 | getConstraintVar = do { env <- getLclEnv; return (tcl_lie env) }
|
| ... | ... | @@ -85,7 +85,7 @@ module GHC.Tc.Utils.TcType ( |
| 85 | 85 | isSigmaTy, isRhoTy, isRhoExpTy, isOverloadedTy,
|
| 86 | 86 | isFloatingPrimTy, isDoubleTy, isFloatTy, isIntTy, isWordTy, isStringTy,
|
| 87 | 87 | isIntegerTy, isNaturalTy,
|
| 88 | - isBoolTy, isUnitTy, isAnyTy, isZonkAnyTy, isCharTy,
|
|
| 88 | + isBoolTy, isUnitTy, isAnyTy, isUnusedTypeTy, isCharTy,
|
|
| 89 | 89 | isTauTy, isTauTyCon, tcIsTyVarTy,
|
| 90 | 90 | isPredTy, isSimplePredTy, isTyVarClassPred,
|
| 91 | 91 | checkValidClsArgs, hasTyVarHead,
|
| ... | ... | @@ -2057,7 +2057,7 @@ isFloatTy, isDoubleTy, |
| 2057 | 2057 | isFloatPrimTy, isDoublePrimTy,
|
| 2058 | 2058 | isIntegerTy, isNaturalTy,
|
| 2059 | 2059 | isIntTy, isWordTy, isBoolTy,
|
| 2060 | - isUnitTy, isAnyTy, isZonkAnyTy, isCharTy :: Type -> Bool
|
|
| 2060 | + isUnitTy, isAnyTy, isUnusedTypeTy, isCharTy :: Type -> Bool
|
|
| 2061 | 2061 | isFloatTy = is_tc floatTyConKey
|
| 2062 | 2062 | isDoubleTy = is_tc doubleTyConKey
|
| 2063 | 2063 | isFloatPrimTy = is_tc floatPrimTyConKey
|
| ... | ... | @@ -2069,7 +2069,7 @@ isWordTy = is_tc wordTyConKey |
| 2069 | 2069 | isBoolTy = is_tc boolTyConKey
|
| 2070 | 2070 | isUnitTy = is_tc unitTyConKey
|
| 2071 | 2071 | isAnyTy = is_tc anyTyConKey
|
| 2072 | -isZonkAnyTy = is_tc zonkAnyTyConKey
|
|
| 2072 | +isUnusedTypeTy = is_tc unusedTypeTyConKey
|
|
| 2073 | 2073 | isCharTy = is_tc charTyConKey
|
| 2074 | 2074 | |
| 2075 | 2075 | -- | Check whether the type is of the form @Any :: k@,
|
| 1 | +{-# LANGUAGE OverloadedRecordDot #-}
|
|
| 1 | 2 | {-
|
| 2 | 3 | (c) The University of Glasgow 2006
|
| 3 | 4 | (c) The AQUA Project, Glasgow University, 1996-1998
|
| ... | ... | @@ -43,7 +44,7 @@ import GHC.Tc.Types.TcRef |
| 43 | 44 | import GHC.Tc.TyCl.Build ( TcMethInfo, MethInfo )
|
| 44 | 45 | import GHC.Tc.Utils.Env ( tcLookupGlobalOnly )
|
| 45 | 46 | import GHC.Tc.Utils.TcType
|
| 46 | -import GHC.Tc.Utils.Monad ( newZonkAnyType, setSrcSpanA, liftZonkM, traceTc, addErr )
|
|
| 47 | +import GHC.Tc.Utils.Monad ( newUnusedType, setSrcSpanA, liftZonkM, traceTc, addErr )
|
|
| 47 | 48 | import GHC.Tc.Types.Evidence
|
| 48 | 49 | import GHC.Tc.Errors.Types
|
| 49 | 50 | import GHC.Tc.Zonk.Env
|
| ... | ... | @@ -470,11 +471,11 @@ commitFlexi DefaultFlexi tv zonked_kind |
| 470 | 471 | ; return manyDataConTy }
|
| 471 | 472 | | Just (ConcreteFRR origin) <- isConcreteTyVar_maybe tv
|
| 472 | 473 | = do { addErr $ TcRnZonkerMessage (ZonkerCannotDefaultConcrete origin)
|
| 473 | - ; newZonkAnyType zonked_kind }
|
|
| 474 | + ; newUnusedType tv.varName zonked_kind }
|
|
| 474 | 475 | | otherwise
|
| 475 | - = do { traceTc "Defaulting flexi tyvar to ZonkAny:" (pprTyVar tv)
|
|
| 476 | - -- See Note [Any types] in GHC.Builtin.Types, esp wrinkle (Any4)
|
|
| 477 | - ; newZonkAnyType zonked_kind }
|
|
| 476 | + = do { traceTc "Defaulting flexi tyvar to UnusedType:" (pprTyVar tv)
|
|
| 477 | + -- See Note [The types Any and UnusedType] in GHC.Builtin.Types, esp wrinkle (Any6)
|
|
| 478 | + ; newUnusedType tv.varName zonked_kind }
|
|
| 478 | 479 | |
| 479 | 480 | zonkCoVarOcc :: CoVar -> ZonkTcM Coercion
|
| 480 | 481 | zonkCoVarOcc cv
|
| ... | ... | @@ -535,4 +535,5 @@ import GHC.Types hiding ( |
| 535 | 535 | Sum62#,
|
| 536 | 536 | Sum63#,
|
| 537 | 537 | Sum64#,
|
| 538 | + UnusedType,
|
|
| 538 | 539 | ) |
| ... | ... | @@ -374,6 +374,7 @@ import GHC.Types hiding ( |
| 374 | 374 | Type, -- Exported from "Data.Kind"
|
| 375 | 375 | -- GHC's internal representation of 'TyCon's, for 'Typeable'
|
| 376 | 376 | Module, TrName, TyCon, TypeLitSort, KindRep, KindBndr,
|
| 377 | + UnusedType,
|
|
| 377 | 378 | Unit#,
|
| 378 | 379 | Solo#(..),
|
| 379 | 380 | Tuple0#,
|
| ... | ... | @@ -29,5 +29,5 @@ module GHC.PrimOps |
| 29 | 29 | module GHC.Internal.Exts,
|
| 30 | 30 | ) where
|
| 31 | 31 | |
| 32 | -import GHC.Internal.Exts
|
|
| 32 | +import GHC.Internal.Exts hiding (UnusedType)
|
|
| 33 | 33 |
| ... | ... | @@ -35,6 +35,7 @@ module GHC.Internal.Types ( |
| 35 | 35 | SPEC(..),
|
| 36 | 36 | Symbol,
|
| 37 | 37 | Any,
|
| 38 | + UnusedType,
|
|
| 38 | 39 | |
| 39 | 40 | -- * Type equality
|
| 40 | 41 | type (~), type (~~), Coercible,
|
| ... | ... | @@ -284,48 +285,53 @@ data Symbol |
| 284 | 285 | * *
|
| 285 | 286 | ********************************************************************* -}
|
| 286 | 287 | |
| 287 | --- | The type constructor @Any :: forall k. k@ is a type to which you can unsafely coerce any type, and back.
|
|
| 288 | +-- | The type constructor @Any :: forall k. k@ allows creating an arbitrary type
|
|
| 289 | +-- of the given kind.
|
|
| 288 | 290 | --
|
| 289 | --- For @unsafeCoerce@ this means for all lifted types @t@ that
|
|
| 290 | --- @unsafeCoerce (unsafeCoerce x :: Any) :: t@ is equivalent to @x@ and safe.
|
|
| 291 | +-- It can be used to create a placeholder type when you only have a kind in hand.
|
|
| 291 | 292 | --
|
| 292 | --- The same is true for *all* types when using
|
|
| 293 | --- @
|
|
| 294 | --- unsafeCoerce# :: forall (r1 :: RuntimeRep) (r2 :: RuntimeRep)
|
|
| 295 | --- (a :: TYPE r1) (b :: TYPE r2).
|
|
| 296 | --- a -> b
|
|
| 297 | --- @
|
|
| 298 | --- but /only/ if you instantiate @r1@ and @r2@ to the /same/ runtime representation.
|
|
| 299 | --- For example using @(unsafeCoerce# :: forall (a :: TYPE IntRep) (b :: TYPE IntRep). a -> b) x@
|
|
| 300 | --- is fine, but @(unsafeCoerce# :: forall (a :: TYPE IntRep) (b :: TYPE FloatRep). a -> b)@
|
|
| 301 | --- will likely cause seg-faults or worse.
|
|
| 302 | --- For this resason, users should always prefer unsafeCoerce over unsafeCoerce# when possible.
|
|
| 293 | +-- You can use 'unsafeCoerce#' to unsafely coerce a value from @ty :: k@ to @Any \@k@
|
|
| 294 | +-- and back. As per the documentation of 'unsafeCoerce#', this is only sound if both
|
|
| 295 | +-- sides have the __exact same__runtime representation. Some examples:
|
|
| 303 | 296 | --
|
| 304 | --- Here are some more examples:
|
|
| 305 | 297 | -- @
|
| 306 | --- bad_a1 :: Any @(TYPE 'IntRep)
|
|
| 307 | --- bad_a1 = unsafeCoerce# True
|
|
| 308 | ---
|
|
| 309 | --- bad_a2 :: Any @(TYPE ('BoxedRep 'UnliftedRep))
|
|
| 310 | --- bad_a2 = unsafeCoerce# True
|
|
| 298 | +-- unsafeCoerce# True :: (Any :: Type) -- OK
|
|
| 299 | +-- unsafeCoerce# (1# :: Int#) :: (Any :: TYPE IntRep) -- OK
|
|
| 300 | +-- unsafeCoerce# True :: (Any :: Type IntRep) -- INVALID
|
|
| 301 | +-- unsafeCoerce True :: (Any :: UnliftedType) -- INVALID
|
|
| 302 | +-- unsafeCoerce (ba :: ByteArray#) :: (Any :: Type) -- INVALID
|
|
| 311 | 303 | -- @
|
| 312 | --- Here @bad_a1@ is bad because we started with @True :: (Bool :: Type)@, represented by a boxed heap pointer,
|
|
| 313 | --- and coerced it to @a1 :: Any @(TYPE 'IntRep)@, whose representation is a non-pointer integer.
|
|
| 314 | --- That's why we had to use `unsafeCoerce#`; it is really unsafe because it can change representations.
|
|
| 315 | --- Similarly @bad_a2@ is bad because although both @True@ and @bad_a2@ are represented by a heap pointer,
|
|
| 316 | --- @True@ is lifted but @bad_a2@ is not; bugs here may be rather subtle.
|
|
| 317 | 304 | --
|
| 318 | --- If you must use unsafeCoerce# to cast to `Any`, type annotations are recommended
|
|
| 319 | --- to make sure that @Any@ has the correct kind. As casting between different runtimereps is
|
|
| 320 | --- unsound. For example to cast a @ByteArray#@ to @Any@ you might use:
|
|
| 321 | --- @
|
|
| 322 | --- unsafeCoerce# b :: (Any :: TYPE ('BoxedRep 'Unlifted))
|
|
| 323 | --- @
|
|
| 305 | +-- To avoid accidentally unsafe-coercing between different representations,
|
|
| 306 | +-- it is recommended to:
|
|
| 307 | +-- - use explicit type annotations or type applications at every use-site
|
|
| 308 | +-- of 'unsafeCoerce#'
|
|
| 309 | +-- - use representation-monomorphic variants such as 'unsafeCoerce' or
|
|
| 310 | +-- 'unsafeCoerceUnlifted'.
|
|
| 311 | +--
|
|
| 312 | +-- In particular, this also implies it is safe to round-trip unsafe-coercion via 'Any',
|
|
| 313 | +-- as long as the kinds line up e.g. @unsafeCoerce (unsafeCoerce (val :: a) :: 'Any') :: a@
|
|
| 314 | +-- is safe in that way.
|
|
| 324 | 315 | type family Any :: k where { }
|
| 325 | --- See Note [Any types] in GHC.Builtin.Types. Also, for a bit of history on Any see
|
|
| 316 | +-- See Note [The types Any and UnusedType] in GHC.Builtin.Types. Also, for a bit of history on Any see
|
|
| 326 | 317 | -- #10886. Note that this must be a *closed* type family: we need to ensure
|
| 327 | 318 | -- that this can't reduce to a `data` type for the results discussed in
|
| 328 | --- Note [Any types].
|
|
| 319 | +-- Note [The types Any and UnusedType].
|
|
| 320 | +--
|
|
| 321 | + |
|
| 322 | +-- | @UnusedType \@k "foo"@ denotes an arbitrary type of kind
|
|
| 323 | +-- @k@ and is pretty-printed as @foo@ .
|
|
| 324 | +--
|
|
| 325 | +-- This type is used internally by GHC to fill in otherwise
|
|
| 326 | +-- unconstrained type variables, such as @a@ in @length \@a []@.
|
|
| 327 | +-- It is exported purely for documentation purposes.
|
|
| 328 | +--
|
|
| 329 | +-- You shouldn't ever see this type in the compiler's output if
|
|
| 330 | +-- you don't specifically ask for it, for instance when viewing
|
|
| 331 | +-- core, since the compiler will try hard to output a given
|
|
| 332 | +-- @'UnusedType' "m_0"@ simply as @m_0@.
|
|
| 333 | +type family UnusedType :: Symbol -> k where { }
|
|
| 334 | +-- See Note [The types Any and UnusedType] in GHC.Builtin.Types.
|
|
| 329 | 335 | |
| 330 | 336 | {- *********************************************************************
|
| 331 | 337 | * *
|
| ... | ... | @@ -6975,6 +6975,8 @@ module GHC.Types where |
| 6975 | 6975 | type UnliftedRep = BoxedRep Unlifted
|
| 6976 | 6976 | type UnliftedType :: *
|
| 6977 | 6977 | type UnliftedType = TYPE UnliftedRep
|
| 6978 | + type UnusedType :: forall k0. Symbol -> k0
|
|
| 6979 | + type family UnusedType k1 where
|
|
| 6978 | 6980 | type VecCount :: *
|
| 6979 | 6981 | data VecCount = Vec2 | Vec4 | Vec8 | Vec16 | Vec32 | Vec64
|
| 6980 | 6982 | type VecElem :: *
|
| ... | ... | @@ -6978,6 +6978,8 @@ module GHC.Types where |
| 6978 | 6978 | type UnliftedRep = BoxedRep Unlifted
|
| 6979 | 6979 | type UnliftedType :: *
|
| 6980 | 6980 | type UnliftedType = TYPE UnliftedRep
|
| 6981 | + type UnusedType :: forall k0. Symbol -> k0
|
|
| 6982 | + type family UnusedType k1 where
|
|
| 6981 | 6983 | type VecCount :: *
|
| 6982 | 6984 | data VecCount = Vec2 | Vec4 | Vec8 | Vec16 | Vec32 | Vec64
|
| 6983 | 6985 | type VecElem :: *
|
| ... | ... | @@ -23,137 +23,137 @@ |
| 23 | 23 | `cast` (GHC.Internal.Generics.N:M1
|
| 24 | 24 | `cast` (GHC.Internal.Generics.N:M1
|
| 25 | 25 | = GHC.Internal.Generics.L1
|
| 26 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 26 | + ((GHC.Internal.Generics.U1
|
|
| 27 | 27 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 28 | 28 | = GHC.Internal.Generics.L1
|
| 29 | 29 | = GHC.Internal.Generics.L1
|
| 30 | 30 | = GHC.Internal.Generics.L1
|
| 31 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 31 | + ((GHC.Internal.Generics.U1
|
|
| 32 | 32 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 33 | 33 | = GHC.Internal.Generics.R1
|
| 34 | 34 | = GHC.Internal.Generics.L1
|
| 35 | 35 | = GHC.Internal.Generics.L1
|
| 36 | 36 | = GHC.Internal.Generics.R1
|
| 37 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 37 | + ((GHC.Internal.Generics.U1
|
|
| 38 | 38 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 39 | 39 | = GHC.Internal.Generics.R1
|
| 40 | 40 | = GHC.Internal.Generics.L1
|
| 41 | 41 | = GHC.Internal.Generics.L1
|
| 42 | 42 | = GHC.Internal.Generics.L1
|
| 43 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 43 | + ((GHC.Internal.Generics.U1
|
|
| 44 | 44 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 45 | 45 | = GHC.Internal.Generics.R1
|
| 46 | 46 | = GHC.Internal.Generics.L1
|
| 47 | 47 | = GHC.Internal.Generics.L1
|
| 48 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 48 | + ((GHC.Internal.Generics.U1
|
|
| 49 | 49 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 50 | 50 | = GHC.Internal.Generics.R1
|
| 51 | 51 | = GHC.Internal.Generics.R1
|
| 52 | 52 | = GHC.Internal.Generics.L1
|
| 53 | 53 | = GHC.Internal.Generics.R1
|
| 54 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 54 | + ((GHC.Internal.Generics.U1
|
|
| 55 | 55 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 56 | 56 | = GHC.Internal.Generics.R1
|
| 57 | 57 | = GHC.Internal.Generics.R1
|
| 58 | 58 | = GHC.Internal.Generics.L1
|
| 59 | 59 | = GHC.Internal.Generics.L1
|
| 60 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 60 | + ((GHC.Internal.Generics.U1
|
|
| 61 | 61 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 62 | 62 | = GHC.Internal.Generics.L1
|
| 63 | 63 | = GHC.Internal.Generics.R1
|
| 64 | 64 | = GHC.Internal.Generics.L1
|
| 65 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 65 | + ((GHC.Internal.Generics.U1
|
|
| 66 | 66 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 67 | 67 | = GHC.Internal.Generics.R1
|
| 68 | 68 | = GHC.Internal.Generics.L1
|
| 69 | 69 | = GHC.Internal.Generics.R1
|
| 70 | 70 | = GHC.Internal.Generics.R1
|
| 71 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 71 | + ((GHC.Internal.Generics.U1
|
|
| 72 | 72 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 73 | 73 | = GHC.Internal.Generics.R1
|
| 74 | 74 | = GHC.Internal.Generics.L1
|
| 75 | 75 | = GHC.Internal.Generics.R1
|
| 76 | 76 | = GHC.Internal.Generics.L1
|
| 77 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 77 | + ((GHC.Internal.Generics.U1
|
|
| 78 | 78 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 79 | 79 | = GHC.Internal.Generics.R1
|
| 80 | 80 | = GHC.Internal.Generics.R1
|
| 81 | 81 | = GHC.Internal.Generics.L1
|
| 82 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 82 | + ((GHC.Internal.Generics.U1
|
|
| 83 | 83 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 84 | 84 | = GHC.Internal.Generics.R1
|
| 85 | 85 | = GHC.Internal.Generics.R1
|
| 86 | 86 | = GHC.Internal.Generics.R1
|
| 87 | 87 | = GHC.Internal.Generics.R1
|
| 88 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 88 | + ((GHC.Internal.Generics.U1
|
|
| 89 | 89 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 90 | 90 | = GHC.Internal.Generics.R1
|
| 91 | 91 | = GHC.Internal.Generics.R1
|
| 92 | 92 | = GHC.Internal.Generics.R1
|
| 93 | 93 | = GHC.Internal.Generics.L1
|
| 94 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 94 | + ((GHC.Internal.Generics.U1
|
|
| 95 | 95 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 96 | 96 | = GHC.Internal.Generics.L1
|
| 97 | 97 | = GHC.Internal.Generics.L1
|
| 98 | 98 | = GHC.Internal.Generics.L1
|
| 99 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 99 | + ((GHC.Internal.Generics.U1
|
|
| 100 | 100 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 101 | 101 | = GHC.Internal.Generics.R1
|
| 102 | 102 | = GHC.Internal.Generics.L1
|
| 103 | 103 | = GHC.Internal.Generics.L1
|
| 104 | 104 | = GHC.Internal.Generics.R1
|
| 105 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 105 | + ((GHC.Internal.Generics.U1
|
|
| 106 | 106 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 107 | 107 | = GHC.Internal.Generics.R1
|
| 108 | 108 | = GHC.Internal.Generics.L1
|
| 109 | 109 | = GHC.Internal.Generics.L1
|
| 110 | 110 | = GHC.Internal.Generics.L1
|
| 111 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 111 | + ((GHC.Internal.Generics.U1
|
|
| 112 | 112 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 113 | 113 | = GHC.Internal.Generics.R1
|
| 114 | 114 | = GHC.Internal.Generics.L1
|
| 115 | 115 | = GHC.Internal.Generics.L1
|
| 116 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 116 | + ((GHC.Internal.Generics.U1
|
|
| 117 | 117 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 118 | 118 | = GHC.Internal.Generics.R1
|
| 119 | 119 | = GHC.Internal.Generics.R1
|
| 120 | 120 | = GHC.Internal.Generics.L1
|
| 121 | 121 | = GHC.Internal.Generics.R1
|
| 122 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 122 | + ((GHC.Internal.Generics.U1
|
|
| 123 | 123 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 124 | 124 | = GHC.Internal.Generics.R1
|
| 125 | 125 | = GHC.Internal.Generics.R1
|
| 126 | 126 | = GHC.Internal.Generics.L1
|
| 127 | 127 | = GHC.Internal.Generics.L1
|
| 128 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 128 | + ((GHC.Internal.Generics.U1
|
|
| 129 | 129 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 130 | 130 | = GHC.Internal.Generics.L1
|
| 131 | 131 | = GHC.Internal.Generics.R1
|
| 132 | 132 | = GHC.Internal.Generics.L1
|
| 133 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 133 | + ((GHC.Internal.Generics.U1
|
|
| 134 | 134 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 135 | 135 | = GHC.Internal.Generics.R1
|
| 136 | 136 | = GHC.Internal.Generics.L1
|
| 137 | 137 | = GHC.Internal.Generics.R1
|
| 138 | 138 | = GHC.Internal.Generics.R1
|
| 139 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 139 | + ((GHC.Internal.Generics.U1
|
|
| 140 | 140 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 141 | 141 | = GHC.Internal.Generics.R1
|
| 142 | 142 | = GHC.Internal.Generics.L1
|
| 143 | 143 | = GHC.Internal.Generics.R1
|
| 144 | 144 | = GHC.Internal.Generics.L1
|
| 145 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 145 | + ((GHC.Internal.Generics.U1
|
|
| 146 | 146 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 147 | 147 | = GHC.Internal.Generics.R1
|
| 148 | 148 | = GHC.Internal.Generics.R1
|
| 149 | 149 | = GHC.Internal.Generics.L1
|
| 150 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 150 | + ((GHC.Internal.Generics.U1
|
|
| 151 | 151 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 152 | 152 | = GHC.Internal.Generics.R1
|
| 153 | 153 | = GHC.Internal.Generics.R1
|
| 154 | 154 | = GHC.Internal.Generics.R1
|
| 155 | 155 | = GHC.Internal.Generics.R1
|
| 156 | - ((GHC.Internal.Generics.U1 @(*) @(GHC.Internal.Types.ZonkAny 0))
|
|
| 156 | + ((GHC.Internal.Generics.U1
|
|
| 157 | 157 | `cast` (Sym (GHC.Internal.Generics.N:M1
|
| 158 | 158 | = GHC.Internal.Generics.R1
|
| 159 | 159 | = GHC.Internal.Generics.R1
|
| 1 | 1 | T12957.hs:4:5: warning: [GHC-62161] [-Wincomplete-patterns (in -Wextra)]
|
| 2 | 2 | Pattern match(es) are non-exhaustive
|
| 3 | - In a case alternative:
|
|
| 4 | - Patterns of type ‘[GHC.Internal.Types.ZonkAny 0]’ not matched: []
|
|
| 3 | + In a case alternative: Patterns of type ‘[a_0]’ not matched: []
|
|
| 5 | 4 | |
| 6 | 5 | T12957.hs:4:16: warning: [GHC-53633] [-Woverlapping-patterns (in -Wdefault)]
|
| 7 | 6 | Pattern match is redundant
|
| 1 | -Just (InfoProv {ipName = "sat_s1Rh_info", ipDesc = THUNK, ipTyDesc = "ZonkAny 0", ipLabel = "main", ipUnitId = "main", ipMod = "Main", ipSrcFile = "staticcallstack002.hs", ipSrcSpan = "10:23-39"})
|
|
| 2 | -Just (InfoProv {ipName = "sat_s1RB_info", ipDesc = THUNK, ipTyDesc = "ZonkAny 1", ipLabel = "main", ipUnitId = "main", ipMod = "Main", ipSrcFile = "staticcallstack002.hs", ipSrcSpan = "11:23-42"})
|
|
| 3 | -Just (InfoProv {ipName = "sat_s1RV_info", ipDesc = THUNK, ipTyDesc = "ZonkAny 2", ipLabel = "main", ipUnitId = "main", ipMod = "Main", ipSrcFile = "staticcallstack002.hs", ipSrcSpan = "12:23-46"})
|
|
| 4 | -Just (InfoProv {ipName = "sat_s1Sf_info", ipDesc = THUNK, ipTyDesc = "ZonkAny 3", ipLabel = "main", ipUnitId = "main", ipMod = "Main", ipSrcFile = "staticcallstack002.hs", ipSrcSpan = "13:23-44"}) |
|
| 1 | +Just (InfoProv {ipName = "main_sat_t2fs_info", ipDesc = THUNK, ipTyDesc = "UnusedType \"a_0\"", ipLabel = "main", ipUnitId = "main", ipMod = "Main", ipSrcFile = "staticcallstack002.hs", ipSrcSpan = "10:23-39"})
|
|
| 2 | +Just (InfoProv {ipName = "main_sat_t2fJ_info", ipDesc = THUNK, ipTyDesc = "UnusedType \"a_1\"", ipLabel = "main", ipUnitId = "main", ipMod = "Main", ipSrcFile = "staticcallstack002.hs", ipSrcSpan = "11:23-42"})
|
|
| 3 | +Just (InfoProv {ipName = "main_sat_t2g0_info", ipDesc = THUNK, ipTyDesc = "UnusedType \"a_2\"", ipLabel = "main", ipUnitId = "main", ipMod = "Main", ipSrcFile = "staticcallstack002.hs", ipSrcSpan = "12:23-46"})
|
|
| 4 | +Just (InfoProv {ipName = "main_sat_t2gh_info", ipDesc = THUNK, ipTyDesc = "UnusedType \"a_3\"", ipLabel = "main", ipUnitId = "main", ipMod = "Main", ipSrcFile = "staticcallstack002.hs", ipSrcSpan = "13:23-44"}) |
| ... | ... | @@ -188,7 +188,7 @@ T13155: |
| 188 | 188 | |
| 189 | 189 | T13156:
|
| 190 | 190 | $(RM) -f T13156.hi T13156.o
|
| 191 | - '$(TEST_HC)' $(TEST_HC_OPTS) -c T13156.hs -O -ddump-prep -dsuppress-uniques | grep "case.*Any"
|
|
| 191 | + '$(TEST_HC)' $(TEST_HC_OPTS) -c T13156.hs -O -ddump-prep -dsuppress-uniques | grep "case.*UnusedType"
|
|
| 192 | 192 | # There should be a single 'case r @ GHC.Types.Any'
|
| 193 | 193 | |
| 194 | 194 | .PHONY: T4138
|
| 1 | - case r @(GHC.Internal.Types.ZonkAny 0) of { __DEFAULT ->
|
|
| 2 | - case r @(GHC.Internal.Types.ZonkAny 1) of { __DEFAULT -> r @a } |
|
| 1 | + case r @(GHC.Internal.Types.UnusedType "a_0") of { __DEFAULT ->
|
|
| 2 | + case r @(GHC.Internal.Types.UnusedType "a_1") of { __DEFAULT -> |
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | |
| 3 | 3 | ==================== Tidy Core ====================
|
| 4 | 4 | Result size of Tidy Core
|
| 5 | - = {terms: 1,209, types: 1,139, coercions: 18, joins: 17/29}
|
|
| 5 | + = {terms: 1,209, types: 1,155, coercions: 18, joins: 17/29}
|
|
| 6 | 6 | |
| 7 | 7 | -- RHS size: {terms: 6, types: 8, coercions: 0, joins: 0/0}
|
| 8 | 8 | unArray :: forall a. Array a -> SmallArray# a
|
| ... | ... | @@ -15,45 +15,29 @@ unArray :: forall a. Array a -> SmallArray# a |
| 15 | 15 | unArray = \ (@a) (ds :: Array a) -> case ds of { Array ds1 -> ds1 }
|
| 16 | 16 | |
| 17 | 17 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 18 | -T26615a.$trModule4 :: Addr#
|
|
| 19 | -[GblId,
|
|
| 20 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 21 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 22 | - Guidance=IF_ARGS [] 20 0}]
|
|
| 23 | -T26615a.$trModule4 = "main"#
|
|
| 18 | +$trModule1 :: Addr#
|
|
| 19 | +[GblId, Unf=OtherCon []]
|
|
| 20 | +$trModule1 = "main"#
|
|
| 24 | 21 | |
| 25 | 22 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 26 | -T26615a.$trModule3 :: GHC.Internal.Types.TrName
|
|
| 27 | -[GblId,
|
|
| 28 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 29 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 30 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 31 | -T26615a.$trModule3 = GHC.Internal.Types.TrNameS T26615a.$trModule4
|
|
| 23 | +$trModule2 :: GHC.Internal.Types.TrName
|
|
| 24 | +[GblId, Unf=OtherCon []]
|
|
| 25 | +$trModule2 = GHC.Internal.Types.TrNameS $trModule1
|
|
| 32 | 26 | |
| 33 | 27 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 34 | -T26615a.$trModule2 :: Addr#
|
|
| 35 | -[GblId,
|
|
| 36 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 37 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 38 | - Guidance=IF_ARGS [] 30 0}]
|
|
| 39 | -T26615a.$trModule2 = "T26615a"#
|
|
| 28 | +$trModule3 :: Addr#
|
|
| 29 | +[GblId, Unf=OtherCon []]
|
|
| 30 | +$trModule3 = "T26615a"#
|
|
| 40 | 31 | |
| 41 | 32 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 42 | -T26615a.$trModule1 :: GHC.Internal.Types.TrName
|
|
| 43 | -[GblId,
|
|
| 44 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 45 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 46 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 47 | -T26615a.$trModule1 = GHC.Internal.Types.TrNameS T26615a.$trModule2
|
|
| 33 | +$trModule4 :: GHC.Internal.Types.TrName
|
|
| 34 | +[GblId, Unf=OtherCon []]
|
|
| 35 | +$trModule4 = GHC.Internal.Types.TrNameS $trModule3
|
|
| 48 | 36 | |
| 49 | 37 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 50 | -T26615a.$trModule :: GHC.Internal.Types.Module
|
|
| 51 | -[GblId,
|
|
| 52 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 53 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 54 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 55 | -T26615a.$trModule
|
|
| 56 | - = GHC.Internal.Types.Module T26615a.$trModule3 T26615a.$trModule1
|
|
| 38 | +T26615a.$trModule [InlPrag=[~]] :: GHC.Internal.Types.Module
|
|
| 39 | +[GblId, Unf=OtherCon []]
|
|
| 40 | +T26615a.$trModule = GHC.Internal.Types.Module $trModule2 $trModule4
|
|
| 57 | 41 | |
| 58 | 42 | -- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0}
|
| 59 | 43 | $krep :: GHC.Internal.Types.KindRep
|
| ... | ... | @@ -104,33 +88,24 @@ $krep6 |
| 104 | 88 | GHC.Internal.Types.$tcSmallArray# $krep5
|
| 105 | 89 | |
| 106 | 90 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 107 | -T26615a.$tcLeaf2 :: Addr#
|
|
| 108 | -[GblId,
|
|
| 109 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 110 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 111 | - Guidance=IF_ARGS [] 20 0}]
|
|
| 112 | -T26615a.$tcLeaf2 = "Leaf"#
|
|
| 91 | +$tcLeaf1 :: Addr#
|
|
| 92 | +[GblId, Unf=OtherCon []]
|
|
| 93 | +$tcLeaf1 = "Leaf"#
|
|
| 113 | 94 | |
| 114 | 95 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 115 | -T26615a.$tcLeaf1 :: GHC.Internal.Types.TrName
|
|
| 116 | -[GblId,
|
|
| 117 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 118 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 119 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 120 | -T26615a.$tcLeaf1 = GHC.Internal.Types.TrNameS T26615a.$tcLeaf2
|
|
| 96 | +$tcLeaf2 :: GHC.Internal.Types.TrName
|
|
| 97 | +[GblId, Unf=OtherCon []]
|
|
| 98 | +$tcLeaf2 = GHC.Internal.Types.TrNameS $tcLeaf1
|
|
| 121 | 99 | |
| 122 | 100 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 123 | -T26615a.$tcLeaf :: GHC.Internal.Types.TyCon
|
|
| 124 | -[GblId,
|
|
| 125 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 126 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 127 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 101 | +T26615a.$tcLeaf [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 102 | +[GblId, Unf=OtherCon []]
|
|
| 128 | 103 | T26615a.$tcLeaf
|
| 129 | 104 | = GHC.Internal.Types.TyCon
|
| 130 | 105 | 13798714324392902582#Word64
|
| 131 | 106 | 3237499036029031497#Word64
|
| 132 | 107 | T26615a.$trModule
|
| 133 | - T26615a.$tcLeaf1
|
|
| 108 | + $tcLeaf2
|
|
| 134 | 109 | 0#
|
| 135 | 110 | GHC.Internal.Types.krep$*->*->*
|
| 136 | 111 | |
| ... | ... | @@ -160,372 +135,284 @@ $krep10 :: GHC.Internal.Types.KindRep |
| 160 | 135 | $krep10 = GHC.Internal.Types.KindRepFun $krep2 $krep9
|
| 161 | 136 | |
| 162 | 137 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 163 | -T26615a.$tc'L1 [InlPrag=[~]] :: GHC.Internal.Types.KindRep
|
|
| 138 | +$krep11 :: GHC.Internal.Types.KindRep
|
|
| 164 | 139 | [GblId, Unf=OtherCon []]
|
| 165 | -T26615a.$tc'L1 = GHC.Internal.Types.KindRepFun $krep3 $krep10
|
|
| 140 | +$krep11 = GHC.Internal.Types.KindRepFun $krep3 $krep10
|
|
| 166 | 141 | |
| 167 | 142 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 168 | -T26615a.$tc'L3 :: Addr#
|
|
| 169 | -[GblId,
|
|
| 170 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 171 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 172 | - Guidance=IF_ARGS [] 20 0}]
|
|
| 173 | -T26615a.$tc'L3 = "'L"#
|
|
| 143 | +$tc'L1 :: Addr#
|
|
| 144 | +[GblId, Unf=OtherCon []]
|
|
| 145 | +$tc'L1 = "'L"#
|
|
| 174 | 146 | |
| 175 | 147 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 176 | -T26615a.$tc'L2 :: GHC.Internal.Types.TrName
|
|
| 177 | -[GblId,
|
|
| 178 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 179 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 180 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 181 | -T26615a.$tc'L2 = GHC.Internal.Types.TrNameS T26615a.$tc'L3
|
|
| 148 | +$tc'L2 :: GHC.Internal.Types.TrName
|
|
| 149 | +[GblId, Unf=OtherCon []]
|
|
| 150 | +$tc'L2 = GHC.Internal.Types.TrNameS $tc'L1
|
|
| 182 | 151 | |
| 183 | 152 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 184 | -T26615a.$tc'L :: GHC.Internal.Types.TyCon
|
|
| 185 | -[GblId,
|
|
| 186 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 187 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 188 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 153 | +T26615a.$tc'L [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 154 | +[GblId, Unf=OtherCon []]
|
|
| 189 | 155 | T26615a.$tc'L
|
| 190 | 156 | = GHC.Internal.Types.TyCon
|
| 191 | 157 | 8570419491837374712#Word64
|
| 192 | 158 | 2090006989092642392#Word64
|
| 193 | 159 | T26615a.$trModule
|
| 194 | - T26615a.$tc'L2
|
|
| 160 | + $tc'L2
|
|
| 195 | 161 | 2#
|
| 196 | - T26615a.$tc'L1
|
|
| 162 | + $krep11
|
|
| 197 | 163 | |
| 198 | 164 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 199 | -T26615a.$tcArray2 :: Addr#
|
|
| 200 | -[GblId,
|
|
| 201 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 202 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 203 | - Guidance=IF_ARGS [] 30 0}]
|
|
| 204 | -T26615a.$tcArray2 = "Array"#
|
|
| 165 | +$tcArray1 :: Addr#
|
|
| 166 | +[GblId, Unf=OtherCon []]
|
|
| 167 | +$tcArray1 = "Array"#
|
|
| 205 | 168 | |
| 206 | 169 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 207 | -T26615a.$tcArray1 :: GHC.Internal.Types.TrName
|
|
| 208 | -[GblId,
|
|
| 209 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 210 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 211 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 212 | -T26615a.$tcArray1 = GHC.Internal.Types.TrNameS T26615a.$tcArray2
|
|
| 170 | +$tcArray2 :: GHC.Internal.Types.TrName
|
|
| 171 | +[GblId, Unf=OtherCon []]
|
|
| 172 | +$tcArray2 = GHC.Internal.Types.TrNameS $tcArray1
|
|
| 213 | 173 | |
| 214 | 174 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 215 | -T26615a.$tcArray :: GHC.Internal.Types.TyCon
|
|
| 216 | -[GblId,
|
|
| 217 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 218 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 219 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 175 | +T26615a.$tcArray [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 176 | +[GblId, Unf=OtherCon []]
|
|
| 220 | 177 | T26615a.$tcArray
|
| 221 | 178 | = GHC.Internal.Types.TyCon
|
| 222 | 179 | 10495761415291712389#Word64
|
| 223 | 180 | 7580086293698619153#Word64
|
| 224 | 181 | T26615a.$trModule
|
| 225 | - T26615a.$tcArray1
|
|
| 182 | + $tcArray2
|
|
| 226 | 183 | 0#
|
| 227 | 184 | GHC.Internal.Types.krep$*Arr*
|
| 228 | 185 | |
| 229 | 186 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 230 | -$krep11 :: GHC.Internal.Types.KindRep
|
|
| 187 | +$krep12 :: GHC.Internal.Types.KindRep
|
|
| 231 | 188 | [GblId, Unf=OtherCon []]
|
| 232 | -$krep11
|
|
| 189 | +$krep12
|
|
| 233 | 190 | = GHC.Internal.Types.KindRepTyConApp T26615a.$tcArray $krep4
|
| 234 | 191 | |
| 235 | 192 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 236 | -T26615a.$tc'Array1 [InlPrag=[~]] :: GHC.Internal.Types.KindRep
|
|
| 193 | +$krep13 :: GHC.Internal.Types.KindRep
|
|
| 237 | 194 | [GblId, Unf=OtherCon []]
|
| 238 | -T26615a.$tc'Array1 = GHC.Internal.Types.KindRepFun $krep6 $krep11
|
|
| 195 | +$krep13 = GHC.Internal.Types.KindRepFun $krep6 $krep12
|
|
| 239 | 196 | |
| 240 | 197 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 241 | -T26615a.$tc'Array3 :: Addr#
|
|
| 242 | -[GblId,
|
|
| 243 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 244 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 245 | - Guidance=IF_ARGS [] 30 0}]
|
|
| 246 | -T26615a.$tc'Array3 = "'Array"#
|
|
| 198 | +$tc'Array1 :: Addr#
|
|
| 199 | +[GblId, Unf=OtherCon []]
|
|
| 200 | +$tc'Array1 = "'Array"#
|
|
| 247 | 201 | |
| 248 | 202 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 249 | -T26615a.$tc'Array2 :: GHC.Internal.Types.TrName
|
|
| 250 | -[GblId,
|
|
| 251 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 252 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 253 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 254 | -T26615a.$tc'Array2 = GHC.Internal.Types.TrNameS T26615a.$tc'Array3
|
|
| 203 | +$tc'Array2 :: GHC.Internal.Types.TrName
|
|
| 204 | +[GblId, Unf=OtherCon []]
|
|
| 205 | +$tc'Array2 = GHC.Internal.Types.TrNameS $tc'Array1
|
|
| 255 | 206 | |
| 256 | 207 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 257 | -T26615a.$tc'Array :: GHC.Internal.Types.TyCon
|
|
| 258 | -[GblId,
|
|
| 259 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 260 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 261 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 208 | +T26615a.$tc'Array [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 209 | +[GblId, Unf=OtherCon []]
|
|
| 262 | 210 | T26615a.$tc'Array
|
| 263 | 211 | = GHC.Internal.Types.TyCon
|
| 264 | 212 | 12424115309881832159#Word64
|
| 265 | 213 | 15542868641947707803#Word64
|
| 266 | 214 | T26615a.$trModule
|
| 267 | - T26615a.$tc'Array2
|
|
| 215 | + $tc'Array2
|
|
| 268 | 216 | 1#
|
| 269 | - T26615a.$tc'Array1
|
|
| 217 | + $krep13
|
|
| 270 | 218 | |
| 271 | 219 | -- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
|
| 272 | -$krep12 :: [GHC.Internal.Types.KindRep]
|
|
| 220 | +$krep14 :: [GHC.Internal.Types.KindRep]
|
|
| 273 | 221 | [GblId, Unf=OtherCon []]
|
| 274 | -$krep12
|
|
| 222 | +$krep14
|
|
| 275 | 223 | = GHC.Internal.Types.:
|
| 276 | 224 | @GHC.Internal.Types.KindRep
|
| 277 | 225 | $krep9
|
| 278 | 226 | (GHC.Internal.Types.[] @GHC.Internal.Types.KindRep)
|
| 279 | 227 | |
| 280 | 228 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 281 | -$krep13 :: GHC.Internal.Types.KindRep
|
|
| 229 | +$krep15 :: GHC.Internal.Types.KindRep
|
|
| 282 | 230 | [GblId, Unf=OtherCon []]
|
| 283 | -$krep13
|
|
| 284 | - = GHC.Internal.Types.KindRepTyConApp T26615a.$tcArray $krep12
|
|
| 231 | +$krep15
|
|
| 232 | + = GHC.Internal.Types.KindRepTyConApp T26615a.$tcArray $krep14
|
|
| 285 | 233 | |
| 286 | 234 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 287 | -T26615a.$tcHashMap2 :: Addr#
|
|
| 288 | -[GblId,
|
|
| 289 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 290 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 291 | - Guidance=IF_ARGS [] 30 0}]
|
|
| 292 | -T26615a.$tcHashMap2 = "HashMap"#
|
|
| 235 | +$tcHashMap1 :: Addr#
|
|
| 236 | +[GblId, Unf=OtherCon []]
|
|
| 237 | +$tcHashMap1 = "HashMap"#
|
|
| 293 | 238 | |
| 294 | 239 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 295 | -T26615a.$tcHashMap1 :: GHC.Internal.Types.TrName
|
|
| 296 | -[GblId,
|
|
| 297 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 298 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 299 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 300 | -T26615a.$tcHashMap1
|
|
| 301 | - = GHC.Internal.Types.TrNameS T26615a.$tcHashMap2
|
|
| 240 | +$tcHashMap2 :: GHC.Internal.Types.TrName
|
|
| 241 | +[GblId, Unf=OtherCon []]
|
|
| 242 | +$tcHashMap2 = GHC.Internal.Types.TrNameS $tcHashMap1
|
|
| 302 | 243 | |
| 303 | 244 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 304 | -T26615a.$tcHashMap :: GHC.Internal.Types.TyCon
|
|
| 305 | -[GblId,
|
|
| 306 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 307 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 308 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 245 | +T26615a.$tcHashMap [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 246 | +[GblId, Unf=OtherCon []]
|
|
| 309 | 247 | T26615a.$tcHashMap
|
| 310 | 248 | = GHC.Internal.Types.TyCon
|
| 311 | 249 | 2021755758654901686#Word64
|
| 312 | 250 | 8209241086311595496#Word64
|
| 313 | 251 | T26615a.$trModule
|
| 314 | - T26615a.$tcHashMap1
|
|
| 252 | + $tcHashMap2
|
|
| 315 | 253 | 0#
|
| 316 | 254 | GHC.Internal.Types.krep$*->*->*
|
| 317 | 255 | |
| 318 | 256 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 319 | -T26615a.$tc'Empty1 [InlPrag=[~]] :: GHC.Internal.Types.KindRep
|
|
| 257 | +$krep16 :: GHC.Internal.Types.KindRep
|
|
| 320 | 258 | [GblId, Unf=OtherCon []]
|
| 321 | -T26615a.$tc'Empty1
|
|
| 259 | +$krep16
|
|
| 322 | 260 | = GHC.Internal.Types.KindRepTyConApp T26615a.$tcHashMap $krep8
|
| 323 | 261 | |
| 324 | 262 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 325 | -T26615a.$tc'Empty3 :: Addr#
|
|
| 326 | -[GblId,
|
|
| 327 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 328 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 329 | - Guidance=IF_ARGS [] 30 0}]
|
|
| 330 | -T26615a.$tc'Empty3 = "'Empty"#
|
|
| 263 | +$tc'Empty1 :: Addr#
|
|
| 264 | +[GblId, Unf=OtherCon []]
|
|
| 265 | +$tc'Empty1 = "'Empty"#
|
|
| 331 | 266 | |
| 332 | 267 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 333 | -T26615a.$tc'Empty2 :: GHC.Internal.Types.TrName
|
|
| 334 | -[GblId,
|
|
| 335 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 336 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 337 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 338 | -T26615a.$tc'Empty2 = GHC.Internal.Types.TrNameS T26615a.$tc'Empty3
|
|
| 268 | +$tc'Empty2 :: GHC.Internal.Types.TrName
|
|
| 269 | +[GblId, Unf=OtherCon []]
|
|
| 270 | +$tc'Empty2 = GHC.Internal.Types.TrNameS $tc'Empty1
|
|
| 339 | 271 | |
| 340 | 272 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 341 | -T26615a.$tc'Empty :: GHC.Internal.Types.TyCon
|
|
| 342 | -[GblId,
|
|
| 343 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 344 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 345 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 273 | +T26615a.$tc'Empty [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 274 | +[GblId, Unf=OtherCon []]
|
|
| 346 | 275 | T26615a.$tc'Empty
|
| 347 | 276 | = GHC.Internal.Types.TyCon
|
| 348 | 277 | 2520556399233147460#Word64
|
| 349 | 278 | 17224648764450205443#Word64
|
| 350 | 279 | T26615a.$trModule
|
| 351 | - T26615a.$tc'Empty2
|
|
| 280 | + $tc'Empty2
|
|
| 352 | 281 | 2#
|
| 353 | - T26615a.$tc'Empty1
|
|
| 282 | + $krep16
|
|
| 354 | 283 | |
| 355 | 284 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 356 | -$krep14 :: GHC.Internal.Types.KindRep
|
|
| 285 | +$krep17 :: GHC.Internal.Types.KindRep
|
|
| 357 | 286 | [GblId, Unf=OtherCon []]
|
| 358 | -$krep14 = GHC.Internal.Types.KindRepFun $krep9 T26615a.$tc'Empty1
|
|
| 287 | +$krep17 = GHC.Internal.Types.KindRepFun $krep9 $krep16
|
|
| 359 | 288 | |
| 360 | 289 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 361 | -T26615a.$tc'Leaf1 [InlPrag=[~]] :: GHC.Internal.Types.KindRep
|
|
| 290 | +$krep18 :: GHC.Internal.Types.KindRep
|
|
| 362 | 291 | [GblId, Unf=OtherCon []]
|
| 363 | -T26615a.$tc'Leaf1 = GHC.Internal.Types.KindRepFun $krep1 $krep14
|
|
| 292 | +$krep18 = GHC.Internal.Types.KindRepFun $krep1 $krep17
|
|
| 364 | 293 | |
| 365 | 294 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 366 | -T26615a.$tc'Leaf3 :: Addr#
|
|
| 367 | -[GblId,
|
|
| 368 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 369 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 370 | - Guidance=IF_ARGS [] 30 0}]
|
|
| 371 | -T26615a.$tc'Leaf3 = "'Leaf"#
|
|
| 295 | +$tc'Leaf1 :: Addr#
|
|
| 296 | +[GblId, Unf=OtherCon []]
|
|
| 297 | +$tc'Leaf1 = "'Leaf"#
|
|
| 372 | 298 | |
| 373 | 299 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 374 | -T26615a.$tc'Leaf2 :: GHC.Internal.Types.TrName
|
|
| 375 | -[GblId,
|
|
| 376 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 377 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 378 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 379 | -T26615a.$tc'Leaf2 = GHC.Internal.Types.TrNameS T26615a.$tc'Leaf3
|
|
| 300 | +$tc'Leaf2 :: GHC.Internal.Types.TrName
|
|
| 301 | +[GblId, Unf=OtherCon []]
|
|
| 302 | +$tc'Leaf2 = GHC.Internal.Types.TrNameS $tc'Leaf1
|
|
| 380 | 303 | |
| 381 | 304 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 382 | -T26615a.$tc'Leaf :: GHC.Internal.Types.TyCon
|
|
| 383 | -[GblId,
|
|
| 384 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 385 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 386 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 305 | +T26615a.$tc'Leaf [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 306 | +[GblId, Unf=OtherCon []]
|
|
| 387 | 307 | T26615a.$tc'Leaf
|
| 388 | 308 | = GHC.Internal.Types.TyCon
|
| 389 | 309 | 5773656560257991946#Word64
|
| 390 | 310 | 17028074687139582545#Word64
|
| 391 | 311 | T26615a.$trModule
|
| 392 | - T26615a.$tc'Leaf2
|
|
| 312 | + $tc'Leaf2
|
|
| 393 | 313 | 2#
|
| 394 | - T26615a.$tc'Leaf1
|
|
| 314 | + $krep18
|
|
| 395 | 315 | |
| 396 | 316 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 397 | -$krep15 :: GHC.Internal.Types.KindRep
|
|
| 317 | +$krep19 :: GHC.Internal.Types.KindRep
|
|
| 398 | 318 | [GblId, Unf=OtherCon []]
|
| 399 | -$krep15 = GHC.Internal.Types.KindRepFun $krep13 T26615a.$tc'Empty1
|
|
| 319 | +$krep19 = GHC.Internal.Types.KindRepFun $krep15 $krep16
|
|
| 400 | 320 | |
| 401 | 321 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 402 | -T26615a.$tc'Collision1 [InlPrag=[~]] :: GHC.Internal.Types.KindRep
|
|
| 322 | +$krep20 :: GHC.Internal.Types.KindRep
|
|
| 403 | 323 | [GblId, Unf=OtherCon []]
|
| 404 | -T26615a.$tc'Collision1
|
|
| 405 | - = GHC.Internal.Types.KindRepFun $krep1 $krep15
|
|
| 324 | +$krep20 = GHC.Internal.Types.KindRepFun $krep1 $krep19
|
|
| 406 | 325 | |
| 407 | 326 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 408 | -T26615a.$tc'Collision3 :: Addr#
|
|
| 409 | -[GblId,
|
|
| 410 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 411 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 412 | - Guidance=IF_ARGS [] 40 0}]
|
|
| 413 | -T26615a.$tc'Collision3 = "'Collision"#
|
|
| 327 | +$tc'Collision1 :: Addr#
|
|
| 328 | +[GblId, Unf=OtherCon []]
|
|
| 329 | +$tc'Collision1 = "'Collision"#
|
|
| 414 | 330 | |
| 415 | 331 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 416 | -T26615a.$tc'Collision2 :: GHC.Internal.Types.TrName
|
|
| 417 | -[GblId,
|
|
| 418 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 419 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 420 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 421 | -T26615a.$tc'Collision2
|
|
| 422 | - = GHC.Internal.Types.TrNameS T26615a.$tc'Collision3
|
|
| 332 | +$tc'Collision2 :: GHC.Internal.Types.TrName
|
|
| 333 | +[GblId, Unf=OtherCon []]
|
|
| 334 | +$tc'Collision2 = GHC.Internal.Types.TrNameS $tc'Collision1
|
|
| 423 | 335 | |
| 424 | 336 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 425 | -T26615a.$tc'Collision :: GHC.Internal.Types.TyCon
|
|
| 426 | -[GblId,
|
|
| 427 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 428 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 429 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 337 | +T26615a.$tc'Collision [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 338 | +[GblId, Unf=OtherCon []]
|
|
| 430 | 339 | T26615a.$tc'Collision
|
| 431 | 340 | = GHC.Internal.Types.TyCon
|
| 432 | 341 | 18175105753528304021#Word64
|
| 433 | 342 | 13986842878006680511#Word64
|
| 434 | 343 | T26615a.$trModule
|
| 435 | - T26615a.$tc'Collision2
|
|
| 344 | + $tc'Collision2
|
|
| 436 | 345 | 2#
|
| 437 | - T26615a.$tc'Collision1
|
|
| 346 | + $krep20
|
|
| 438 | 347 | |
| 439 | 348 | -- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
|
| 440 | -$krep16 :: [GHC.Internal.Types.KindRep]
|
|
| 349 | +$krep21 :: [GHC.Internal.Types.KindRep]
|
|
| 441 | 350 | [GblId, Unf=OtherCon []]
|
| 442 | -$krep16
|
|
| 351 | +$krep21
|
|
| 443 | 352 | = GHC.Internal.Types.:
|
| 444 | 353 | @GHC.Internal.Types.KindRep
|
| 445 | - T26615a.$tc'Empty1
|
|
| 354 | + $krep16
|
|
| 446 | 355 | (GHC.Internal.Types.[] @GHC.Internal.Types.KindRep)
|
| 447 | 356 | |
| 448 | 357 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 449 | -$krep17 :: GHC.Internal.Types.KindRep
|
|
| 358 | +$krep22 :: GHC.Internal.Types.KindRep
|
|
| 450 | 359 | [GblId, Unf=OtherCon []]
|
| 451 | -$krep17
|
|
| 452 | - = GHC.Internal.Types.KindRepTyConApp T26615a.$tcArray $krep16
|
|
| 360 | +$krep22
|
|
| 361 | + = GHC.Internal.Types.KindRepTyConApp T26615a.$tcArray $krep21
|
|
| 453 | 362 | |
| 454 | 363 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 455 | -T26615a.$tc'Full1 [InlPrag=[~]] :: GHC.Internal.Types.KindRep
|
|
| 364 | +$krep23 :: GHC.Internal.Types.KindRep
|
|
| 456 | 365 | [GblId, Unf=OtherCon []]
|
| 457 | -T26615a.$tc'Full1
|
|
| 458 | - = GHC.Internal.Types.KindRepFun $krep17 T26615a.$tc'Empty1
|
|
| 366 | +$krep23 = GHC.Internal.Types.KindRepFun $krep22 $krep16
|
|
| 459 | 367 | |
| 460 | 368 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 461 | -T26615a.$tc'Full3 :: Addr#
|
|
| 462 | -[GblId,
|
|
| 463 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 464 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 465 | - Guidance=IF_ARGS [] 30 0}]
|
|
| 466 | -T26615a.$tc'Full3 = "'Full"#
|
|
| 369 | +$tc'Full1 :: Addr#
|
|
| 370 | +[GblId, Unf=OtherCon []]
|
|
| 371 | +$tc'Full1 = "'Full"#
|
|
| 467 | 372 | |
| 468 | 373 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 469 | -T26615a.$tc'Full2 :: GHC.Internal.Types.TrName
|
|
| 470 | -[GblId,
|
|
| 471 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 472 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 473 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 474 | -T26615a.$tc'Full2 = GHC.Internal.Types.TrNameS T26615a.$tc'Full3
|
|
| 374 | +$tc'Full2 :: GHC.Internal.Types.TrName
|
|
| 375 | +[GblId, Unf=OtherCon []]
|
|
| 376 | +$tc'Full2 = GHC.Internal.Types.TrNameS $tc'Full1
|
|
| 475 | 377 | |
| 476 | 378 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 477 | -T26615a.$tc'Full :: GHC.Internal.Types.TyCon
|
|
| 478 | -[GblId,
|
|
| 479 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 480 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 481 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 379 | +T26615a.$tc'Full [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 380 | +[GblId, Unf=OtherCon []]
|
|
| 482 | 381 | T26615a.$tc'Full
|
| 483 | 382 | = GHC.Internal.Types.TyCon
|
| 484 | 383 | 12008762105994325570#Word64
|
| 485 | 384 | 13514145886440831186#Word64
|
| 486 | 385 | T26615a.$trModule
|
| 487 | - T26615a.$tc'Full2
|
|
| 386 | + $tc'Full2
|
|
| 488 | 387 | 2#
|
| 489 | - T26615a.$tc'Full1
|
|
| 388 | + $krep23
|
|
| 490 | 389 | |
| 491 | 390 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 492 | -T26615a.$tc'BitmapIndexed1 [InlPrag=[~]]
|
|
| 493 | - :: GHC.Internal.Types.KindRep
|
|
| 391 | +$krep24 :: GHC.Internal.Types.KindRep
|
|
| 494 | 392 | [GblId, Unf=OtherCon []]
|
| 495 | -T26615a.$tc'BitmapIndexed1
|
|
| 496 | - = GHC.Internal.Types.KindRepFun $krep1 T26615a.$tc'Full1
|
|
| 393 | +$krep24 = GHC.Internal.Types.KindRepFun $krep1 $krep23
|
|
| 497 | 394 | |
| 498 | 395 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 499 | -T26615a.$tc'BitmapIndexed3 :: Addr#
|
|
| 500 | -[GblId,
|
|
| 501 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 502 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 503 | - Guidance=IF_ARGS [] 50 0}]
|
|
| 504 | -T26615a.$tc'BitmapIndexed3 = "'BitmapIndexed"#
|
|
| 396 | +$tc'BitmapIndexed1 :: Addr#
|
|
| 397 | +[GblId, Unf=OtherCon []]
|
|
| 398 | +$tc'BitmapIndexed1 = "'BitmapIndexed"#
|
|
| 505 | 399 | |
| 506 | 400 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 507 | -T26615a.$tc'BitmapIndexed2 :: GHC.Internal.Types.TrName
|
|
| 508 | -[GblId,
|
|
| 509 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 510 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 511 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 512 | -T26615a.$tc'BitmapIndexed2
|
|
| 513 | - = GHC.Internal.Types.TrNameS T26615a.$tc'BitmapIndexed3
|
|
| 401 | +$tc'BitmapIndexed2 :: GHC.Internal.Types.TrName
|
|
| 402 | +[GblId, Unf=OtherCon []]
|
|
| 403 | +$tc'BitmapIndexed2 = GHC.Internal.Types.TrNameS $tc'BitmapIndexed1
|
|
| 514 | 404 | |
| 515 | 405 | -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
|
| 516 | -T26615a.$tc'BitmapIndexed :: GHC.Internal.Types.TyCon
|
|
| 517 | -[GblId,
|
|
| 518 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 519 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 520 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 406 | +T26615a.$tc'BitmapIndexed [InlPrag=[~]] :: GHC.Internal.Types.TyCon
|
|
| 407 | +[GblId, Unf=OtherCon []]
|
|
| 521 | 408 | T26615a.$tc'BitmapIndexed
|
| 522 | 409 | = GHC.Internal.Types.TyCon
|
| 523 | 410 | 15226751910432948177#Word64
|
| 524 | 411 | 957331387129868915#Word64
|
| 525 | 412 | T26615a.$trModule
|
| 526 | - T26615a.$tc'BitmapIndexed2
|
|
| 413 | + $tc'BitmapIndexed2
|
|
| 527 | 414 | 2#
|
| 528 | - T26615a.$tc'BitmapIndexed1
|
|
| 415 | + $krep24
|
|
| 529 | 416 | |
| 530 | 417 | -- RHS size: {terms: 98, types: 109, coercions: 0, joins: 3/4}
|
| 531 | 418 | T26615a.$wdisjointCollisions [InlPrag=INLINABLE[2]]
|
| ... | ... | @@ -538,7 +425,7 @@ T26615a.$wdisjointCollisions [InlPrag=INLINABLE[2]] |
| 538 | 425 | Str=<LP(SC(S,C(1,L)),A)><L><1L><L><L>,
|
| 539 | 426 | Unf=Unf{Src=StableUser, TopLvl=True,
|
| 540 | 427 | Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
| 541 | - Guidance=IF_ARGS [30 0 20 0 0] 406 10
|
|
| 428 | + Guidance=IF_ARGS [90 0 20 0 0] 406 10
|
|
| 542 | 429 | Tmpl= \ (@k)
|
| 543 | 430 | (@a)
|
| 544 | 431 | (@b)
|
| ... | ... | @@ -586,7 +473,7 @@ T26615a.$wdisjointCollisions [InlPrag=INLINABLE[2]] |
| 586 | 473 | Arity=5,
|
| 587 | 474 | Str=<L><L><L><L><L>,
|
| 588 | 475 | Unf=OtherCon []]
|
| 589 | - lookupInArrayCont_ _ [Occ=Dead]
|
|
| 476 | + lookupInArrayCont_ ($dEq1 [Occ=Dead] :: Eq k)
|
|
| 590 | 477 | (k1 [Occ=Once1] :: k)
|
| 591 | 478 | (ary1 [Occ=Once1!] :: Array (Leaf k b))
|
| 592 | 479 | (i1 [Occ=Once1!] :: Int)
|
| ... | ... | @@ -654,24 +541,23 @@ T26615a.$wdisjointCollisions |
| 654 | 541 | $s$wfoldr_ [InlPrag=[2],
|
| 655 | 542 | Occ=LoopBreaker,
|
| 656 | 543 | Dmd=SC(S,C(1,C(1,C(1,L))))]
|
| 657 | - :: Bool -> Int# -> Int# -> SmallArray# (Leaf k a) -> Bool
|
|
| 544 | + :: SmallArray# (Leaf k a) -> Int# -> Int# -> Bool -> Bool
|
|
| 658 | 545 | [LclId[JoinId(4)(Nothing)],
|
| 659 | 546 | Arity=4,
|
| 660 | 547 | Str=<L><L><L><L>,
|
| 661 | 548 | Unf=OtherCon []]
|
| 662 | - $s$wfoldr_ (sc :: Bool)
|
|
| 549 | + $s$wfoldr_ (sc :: SmallArray# (Leaf k a))
|
|
| 663 | 550 | (sc1 :: Int#)
|
| 664 | 551 | (sc2 :: Int#)
|
| 665 | - (sc3 :: SmallArray# (Leaf k a))
|
|
| 666 | - = case >=# sc1 sc2 of {
|
|
| 552 | + (sc3 :: Bool)
|
|
| 553 | + = case >=# sc2 sc1 of {
|
|
| 667 | 554 | __DEFAULT ->
|
| 668 | - case indexSmallArray# @Lifted @(Leaf k a) sc3 sc1 of
|
|
| 669 | - { (# ipv1 #) ->
|
|
| 555 | + case indexSmallArray# @Lifted @(Leaf k a) sc sc2 of { (# ipv1 #) ->
|
|
| 670 | 556 | case ipv1 of { L kA ds1 ->
|
| 671 | 557 | join {
|
| 672 | 558 | $j :: Bool
|
| 673 | 559 | [LclId[JoinId(0)(Nothing)]]
|
| 674 | - $j = jump $s$wfoldr_ sc (+# sc1 1#) sc2 sc3 } in
|
|
| 560 | + $j = jump $s$wfoldr_ sc sc1 (+# sc2 1#) sc3 } in
|
|
| 675 | 561 | joinrec {
|
| 676 | 562 | $wlookupInArrayCont_ [InlPrag=[2],
|
| 677 | 563 | Occ=LoopBreaker,
|
| ... | ... | @@ -703,13 +589,13 @@ T26615a.$wdisjointCollisions |
| 703 | 589 | jump $wlookupInArrayCont_ kA ww2 0# lvl2
|
| 704 | 590 | }
|
| 705 | 591 | };
|
| 706 | - 1# -> sc
|
|
| 592 | + 1# -> sc3
|
|
| 707 | 593 | }; } in
|
| 708 | 594 | jump $s$wfoldr_
|
| 709 | - GHC.Internal.Types.True
|
|
| 710 | - 0#
|
|
| 711 | - (sizeofSmallArray# @Lifted @(Leaf k a) ipv)
|
|
| 712 | 595 | ipv
|
| 596 | + (sizeofSmallArray# @Lifted @(Leaf k a) ipv)
|
|
| 597 | + 0#
|
|
| 598 | + GHC.Internal.Types.True
|
|
| 713 | 599 | }
|
| 714 | 600 | }
|
| 715 | 601 | |
| ... | ... | @@ -728,28 +614,28 @@ Rec { |
| 728 | 614 | -- RHS size: {terms: 133, types: 126, coercions: 0, joins: 1/2}
|
| 729 | 615 | T26615a.disjointSubtrees_$s$wdisjointSubtrees [InlPrag=INLINABLE[2],
|
| 730 | 616 | Occ=LoopBreaker]
|
| 731 | - :: forall b a k.
|
|
| 732 | - Word#
|
|
| 733 | - -> SmallArray# (Leaf k a) -> Int# -> Eq k => HashMap k b -> Bool
|
|
| 617 | + :: forall k a b.
|
|
| 618 | + Eq k =>
|
|
| 619 | + Int# -> Word# -> SmallArray# (Leaf k a) -> HashMap k b -> Bool
|
|
| 734 | 620 | [GblId[StrictWorker([~, ~, ~, ~, !])],
|
| 735 | 621 | Arity=5,
|
| 736 | - Str=<L><L><L><LP(SC(S,C(1,L)),A)><1L>,
|
|
| 622 | + Str=<LP(SC(S,C(1,L)),A)><L><L><L><1L>,
|
|
| 737 | 623 | Unf=OtherCon []]
|
| 738 | 624 | T26615a.disjointSubtrees_$s$wdisjointSubtrees
|
| 739 | - = \ (@b)
|
|
| 625 | + = \ (@k)
|
|
| 740 | 626 | (@a)
|
| 741 | - (@k)
|
|
| 742 | - (sc :: Word#)
|
|
| 743 | - (sc1 :: SmallArray# (Leaf k a))
|
|
| 744 | - (sc2 :: Int#)
|
|
| 745 | - (sc3 :: Eq k)
|
|
| 627 | + (@b)
|
|
| 628 | + (sc :: Eq k)
|
|
| 629 | + (sc1 :: Int#)
|
|
| 630 | + (sc2 :: Word#)
|
|
| 631 | + (sc3 :: SmallArray# (Leaf k a))
|
|
| 746 | 632 | (_b :: HashMap k b) ->
|
| 747 | 633 | case _b of {
|
| 748 | 634 | Empty -> GHC.Internal.Types.True;
|
| 749 | 635 | Leaf bx ds ->
|
| 750 | 636 | case ds of { L kB ds1 ->
|
| 751 | 637 | case kB of k0 { __DEFAULT ->
|
| 752 | - case eqWord# bx sc of {
|
|
| 638 | + case eqWord# bx sc2 of {
|
|
| 753 | 639 | __DEFAULT -> GHC.Internal.Types.True;
|
| 754 | 640 | 1# ->
|
| 755 | 641 | joinrec {
|
| ... | ... | @@ -770,7 +656,7 @@ T26615a.disjointSubtrees_$s$wdisjointSubtrees |
| 770 | 656 | __DEFAULT ->
|
| 771 | 657 | case indexSmallArray# @Lifted @(Leaf k a) ww ww1 of { (# ipv #) ->
|
| 772 | 658 | case ipv of { L kx v ->
|
| 773 | - case == @k sc3 k2 kx of {
|
|
| 659 | + case == @k sc k2 kx of {
|
|
| 774 | 660 | False -> jump $wlookupInArrayCont_ k2 ww (+# ww1 1#) ww2;
|
| 775 | 661 | True -> GHC.Internal.Types.False
|
| 776 | 662 | }
|
| ... | ... | @@ -780,19 +666,19 @@ T26615a.disjointSubtrees_$s$wdisjointSubtrees |
| 780 | 666 | }
|
| 781 | 667 | }; } in
|
| 782 | 668 | jump $wlookupInArrayCont_
|
| 783 | - k0 sc1 0# (sizeofSmallArray# @Lifted @(Leaf k a) sc1)
|
|
| 669 | + k0 sc3 0# (sizeofSmallArray# @Lifted @(Leaf k a) sc3)
|
|
| 784 | 670 | }
|
| 785 | 671 | }
|
| 786 | 672 | };
|
| 787 | 673 | Collision bx bx1 ->
|
| 788 | 674 | T26615a.$wdisjointCollisions
|
| 789 | - @k @a @b sc3 sc (T26615a.Array @(Leaf k a) sc1) bx bx1;
|
|
| 675 | + @k @a @b sc sc2 (T26615a.Array @(Leaf k a) sc3) bx bx1;
|
|
| 790 | 676 | BitmapIndexed bx bx1 ->
|
| 791 | 677 | let {
|
| 792 | 678 | m :: Word#
|
| 793 | 679 | [LclId]
|
| 794 | 680 | m = uncheckedShiftL#
|
| 795 | - 1## (word2Int# (and# (uncheckedShiftRL# sc sc2) 31##)) } in
|
|
| 681 | + 1## (word2Int# (and# (uncheckedShiftRL# sc2 sc1) 31##)) } in
|
|
| 796 | 682 | case and# m bx of {
|
| 797 | 683 | __DEFAULT ->
|
| 798 | 684 | case indexSmallArray#
|
| ... | ... | @@ -803,7 +689,7 @@ T26615a.disjointSubtrees_$s$wdisjointSubtrees |
| 803 | 689 | of
|
| 804 | 690 | { (# ipv #) ->
|
| 805 | 691 | T26615a.disjointSubtrees_$s$wdisjointSubtrees
|
| 806 | - @b @a @k sc sc1 (+# sc2 5#) sc3 ipv
|
|
| 692 | + @k @a @b sc (+# sc1 5#) sc2 sc3 ipv
|
|
| 807 | 693 | };
|
| 808 | 694 | 0## -> GHC.Internal.Types.True
|
| 809 | 695 | };
|
| ... | ... | @@ -812,17 +698,17 @@ T26615a.disjointSubtrees_$s$wdisjointSubtrees |
| 812 | 698 | @Lifted
|
| 813 | 699 | @(HashMap k b)
|
| 814 | 700 | bx
|
| 815 | - (word2Int# (and# (uncheckedShiftRL# sc sc2) 31##))
|
|
| 701 | + (word2Int# (and# (uncheckedShiftRL# sc2 sc1) 31##))
|
|
| 816 | 702 | of
|
| 817 | 703 | { (# ipv #) ->
|
| 818 | 704 | T26615a.disjointSubtrees_$s$wdisjointSubtrees
|
| 819 | - @b @a @k sc sc1 (+# sc2 5#) sc3 ipv
|
|
| 705 | + @k @a @b sc (+# sc1 5#) sc2 sc3 ipv
|
|
| 820 | 706 | }
|
| 821 | 707 | }
|
| 822 | 708 | end Rec }
|
| 823 | 709 | |
| 824 | 710 | Rec {
|
| 825 | --- RHS size: {terms: 705, types: 732, coercions: 18, joins: 13/23}
|
|
| 711 | +-- RHS size: {terms: 705, types: 748, coercions: 18, joins: 13/23}
|
|
| 826 | 712 | T26615a.$wdisjointSubtrees [InlPrag=INLINABLE[2], Occ=LoopBreaker]
|
| 827 | 713 | :: forall k a b. Eq k => Int# -> HashMap k a -> HashMap k b -> Bool
|
| 828 | 714 | [GblId[StrictWorker([~, ~, !])],
|
| ... | ... | @@ -841,7 +727,7 @@ T26615a.$wdisjointSubtrees [InlPrag=INLINABLE[2], Occ=LoopBreaker] |
| 841 | 727 | join {
|
| 842 | 728 | fail [Occ=Once3!T[1]] :: (# #) -> Bool
|
| 843 | 729 | [LclId[JoinId(1)(Nothing)], Arity=1, Str=<L>, Unf=OtherCon []]
|
| 844 | - fail _ [Occ=Dead, OS=OneShot]
|
|
| 730 | + fail (ds1 [Occ=Dead, OS=OneShot] :: (# #))
|
|
| 845 | 731 | = case _b of wild [Occ=Once1] {
|
| 846 | 732 | __DEFAULT ->
|
| 847 | 733 | case GHC.Internal.Control.Exception.Base.patError
|
| ... | ... | @@ -860,7 +746,7 @@ T26615a.$wdisjointSubtrees [InlPrag=INLINABLE[2], Occ=LoopBreaker] |
| 860 | 746 | Arity=5,
|
| 861 | 747 | Str=<L><L><L><L><L>,
|
| 862 | 748 | Unf=OtherCon []]
|
| 863 | - lookupCont_ _ [Occ=Dead]
|
|
| 749 | + lookupCont_ ($dEq1 [Occ=Dead] :: Eq k)
|
|
| 864 | 750 | (ds4 [Occ=Once1!] :: Word)
|
| 865 | 751 | (ds5 [Occ=Once1] :: k)
|
| 866 | 752 | (ds6 [Occ=Once1!] :: Int)
|
| ... | ... | @@ -896,7 +782,7 @@ T26615a.$wdisjointSubtrees [InlPrag=INLINABLE[2], Occ=LoopBreaker] |
| 896 | 782 | Arity=5,
|
| 897 | 783 | Str=<L><L><L><L><L>,
|
| 898 | 784 | Unf=OtherCon []]
|
| 899 | - lookupInArrayCont_ _ [Occ=Dead]
|
|
| 785 | + lookupInArrayCont_ ($dEq2 [Occ=Dead] :: Eq k)
|
|
| 900 | 786 | (k1 [Occ=Once1] :: k)
|
| 901 | 787 | (ary [Occ=Once1!] :: Array (Leaf k a))
|
| 902 | 788 | (i [Occ=Once1!] :: Int)
|
| ... | ... | @@ -1000,7 +886,7 @@ T26615a.$wdisjointSubtrees [InlPrag=INLINABLE[2], Occ=LoopBreaker] |
| 1000 | 886 | Arity=5,
|
| 1001 | 887 | Str=<L><L><L><L><L>,
|
| 1002 | 888 | Unf=OtherCon []]
|
| 1003 | - lookupCont_ _ [Occ=Dead]
|
|
| 889 | + lookupCont_ ($dEq1 [Occ=Dead] :: Eq k)
|
|
| 1004 | 890 | (ds3 [Occ=Once1!] :: Word)
|
| 1005 | 891 | (ds4 [Occ=Once1] :: k)
|
| 1006 | 892 | (ds5 [Occ=Once1!] :: Int)
|
| ... | ... | @@ -1034,7 +920,7 @@ T26615a.$wdisjointSubtrees [InlPrag=INLINABLE[2], Occ=LoopBreaker] |
| 1034 | 920 | Arity=5,
|
| 1035 | 921 | Str=<L><L><L><L><L>,
|
| 1036 | 922 | Unf=OtherCon []]
|
| 1037 | - lookupInArrayCont_ _ [Occ=Dead]
|
|
| 923 | + lookupInArrayCont_ ($dEq2 [Occ=Dead] :: Eq k)
|
|
| 1038 | 924 | (k1 [Occ=Once1] :: k)
|
| 1039 | 925 | (ary [Occ=Once1!] :: Array (Leaf k b))
|
| 1040 | 926 | (i [Occ=Once1!] :: Int)
|
| ... | ... | @@ -1179,23 +1065,23 @@ T26615a.$wdisjointSubtrees [InlPrag=INLINABLE[2], Occ=LoopBreaker] |
| 1179 | 1065 | @(*)
|
| 1180 | 1066 | @(SmallArray# (HashMap k a)
|
| 1181 | 1067 | -> SmallArray# (HashMap k b) -> Int#)
|
| 1182 | - @(GHC.Internal.Types.ZonkAny 0
|
|
| 1183 | - -> GHC.Internal.Types.ZonkAny 1 -> Int#)
|
|
| 1068 | + @(GHC.Internal.Types.UnusedType 0 "a"
|
|
| 1069 | + -> GHC.Internal.Types.UnusedType 1 "b" -> Int#)
|
|
| 1184 | 1070 | of
|
| 1185 | 1071 | { GHC.Internal.Unsafe.Coerce.UnsafeRefl v2 ->
|
| 1186 | 1072 | case reallyUnsafePtrEquality#
|
| 1187 | 1073 | @Lifted
|
| 1188 | 1074 | @Lifted
|
| 1189 | - @(GHC.Internal.Types.ZonkAny 0)
|
|
| 1190 | - @(GHC.Internal.Types.ZonkAny 1)
|
|
| 1075 | + @(GHC.Internal.Types.UnusedType 0 "a")
|
|
| 1076 | + @(GHC.Internal.Types.UnusedType 1 "b")
|
|
| 1191 | 1077 | (bx1
|
| 1192 | 1078 | `cast` (SelCo:Fun(arg) (Sub (Sym v2))
|
| 1193 | 1079 | :: SmallArray# (HashMap k a)
|
| 1194 | - ~R# GHC.Internal.Types.ZonkAny 0))
|
|
| 1080 | + ~R# GHC.Internal.Types.UnusedType 0 "a"))
|
|
| 1195 | 1081 | (bx3
|
| 1196 | 1082 | `cast` (SelCo:Fun(arg) (SelCo:Fun(res) (Sub (Sym v2)))
|
| 1197 | 1083 | :: SmallArray# (HashMap k b)
|
| 1198 | - ~R# GHC.Internal.Types.ZonkAny 1))
|
|
| 1084 | + ~R# GHC.Internal.Types.UnusedType 1 "b"))
|
|
| 1199 | 1085 | of {
|
| 1200 | 1086 | __DEFAULT ->
|
| 1201 | 1087 | joinrec {
|
| ... | ... | @@ -1324,51 +1210,49 @@ T26615a.$wdisjointSubtrees [InlPrag=INLINABLE[2], Occ=LoopBreaker] |
| 1324 | 1210 | }; } in
|
| 1325 | 1211 | jump go (GHC.Internal.Types.W# (and# 4294967295## bx1));
|
| 1326 | 1212 | Full bx1 ->
|
| 1213 | + joinrec {
|
|
| 1214 | + go [Occ=LoopBreakerT[1]] :: Int -> Bool
|
|
| 1215 | + [LclId[JoinId(1)(Nothing)], Arity=1, Str=<L>, Unf=OtherCon []]
|
|
| 1216 | + go (i :: Int)
|
|
| 1217 | + = case GHC.Internal.Classes.ltInt i (GHC.Internal.Types.I# 0#) of {
|
|
| 1218 | + False ->
|
|
| 1219 | + case i of { I# i# ->
|
|
| 1220 | + case indexSmallArray# @Lifted @(HashMap k a) bx i# of
|
|
| 1221 | + { (# ipv [Occ=Once1] #) ->
|
|
| 1222 | + case indexSmallArray# @Lifted @(HashMap k b) bx1 i# of
|
|
| 1223 | + { (# ipv1 [Occ=Once1] #) ->
|
|
| 1224 | + case T26615a.$wdisjointSubtrees @k @a @b $dEq (+# ww 5#) ipv ipv1
|
|
| 1225 | + of {
|
|
| 1226 | + False -> GHC.Internal.Types.False;
|
|
| 1227 | + True -> jump go (GHC.Internal.Types.I# (-# i# 1#))
|
|
| 1228 | + }
|
|
| 1229 | + }
|
|
| 1230 | + }
|
|
| 1231 | + };
|
|
| 1232 | + True -> GHC.Internal.Types.True
|
|
| 1233 | + }; } in
|
|
| 1327 | 1234 | case GHC.Internal.Unsafe.Coerce.unsafeEqualityProof
|
| 1328 | 1235 | @(*)
|
| 1329 | 1236 | @(SmallArray# (HashMap k a) -> SmallArray# (HashMap k b) -> Int#)
|
| 1330 | - @(GHC.Internal.Types.ZonkAny 0
|
|
| 1331 | - -> GHC.Internal.Types.ZonkAny 1 -> Int#)
|
|
| 1237 | + @(GHC.Internal.Types.UnusedType 0 "a"
|
|
| 1238 | + -> GHC.Internal.Types.UnusedType 1 "b" -> Int#)
|
|
| 1332 | 1239 | of
|
| 1333 | 1240 | { GHC.Internal.Unsafe.Coerce.UnsafeRefl v2 ->
|
| 1334 | 1241 | case reallyUnsafePtrEquality#
|
| 1335 | 1242 | @Lifted
|
| 1336 | 1243 | @Lifted
|
| 1337 | - @(GHC.Internal.Types.ZonkAny 0)
|
|
| 1338 | - @(GHC.Internal.Types.ZonkAny 1)
|
|
| 1244 | + @(GHC.Internal.Types.UnusedType 0 "a")
|
|
| 1245 | + @(GHC.Internal.Types.UnusedType 1 "b")
|
|
| 1339 | 1246 | (bx
|
| 1340 | 1247 | `cast` (SelCo:Fun(arg) (Sub (Sym v2))
|
| 1341 | 1248 | :: SmallArray# (HashMap k a)
|
| 1342 | - ~R# GHC.Internal.Types.ZonkAny 0))
|
|
| 1249 | + ~R# GHC.Internal.Types.UnusedType 0 "a"))
|
|
| 1343 | 1250 | (bx1
|
| 1344 | 1251 | `cast` (SelCo:Fun(arg) (SelCo:Fun(res) (Sub (Sym v2)))
|
| 1345 | 1252 | :: SmallArray# (HashMap k b)
|
| 1346 | - ~R# GHC.Internal.Types.ZonkAny 1))
|
|
| 1253 | + ~R# GHC.Internal.Types.UnusedType 1 "b"))
|
|
| 1347 | 1254 | of {
|
| 1348 | - __DEFAULT ->
|
|
| 1349 | - joinrec {
|
|
| 1350 | - go [Occ=LoopBreakerT[1]] :: Int -> Bool
|
|
| 1351 | - [LclId[JoinId(1)(Nothing)], Arity=1, Str=<L>, Unf=OtherCon []]
|
|
| 1352 | - go (i :: Int)
|
|
| 1353 | - = case GHC.Internal.Classes.ltInt i (GHC.Internal.Types.I# 0#) of {
|
|
| 1354 | - False ->
|
|
| 1355 | - case i of { I# i# ->
|
|
| 1356 | - case indexSmallArray# @Lifted @(HashMap k a) bx i# of
|
|
| 1357 | - { (# ipv [Occ=Once1] #) ->
|
|
| 1358 | - case indexSmallArray# @Lifted @(HashMap k b) bx1 i# of
|
|
| 1359 | - { (# ipv1 [Occ=Once1] #) ->
|
|
| 1360 | - case T26615a.$wdisjointSubtrees
|
|
| 1361 | - @k @a @b $dEq (+# ww 5#) ipv ipv1
|
|
| 1362 | - of {
|
|
| 1363 | - False -> GHC.Internal.Types.False;
|
|
| 1364 | - True -> jump go (GHC.Internal.Types.I# (-# i# 1#))
|
|
| 1365 | - }
|
|
| 1366 | - }
|
|
| 1367 | - }
|
|
| 1368 | - };
|
|
| 1369 | - True -> GHC.Internal.Types.True
|
|
| 1370 | - }; } in
|
|
| 1371 | - jump go (GHC.Internal.Types.I# 31#);
|
|
| 1255 | + __DEFAULT -> jump go (GHC.Internal.Types.I# 31#);
|
|
| 1372 | 1256 | 1# -> GHC.Internal.Types.False
|
| 1373 | 1257 | }
|
| 1374 | 1258 | }
|
| ... | ... | @@ -1385,7 +1269,7 @@ T26615a.$wdisjointSubtrees |
| 1385 | 1269 | join {
|
| 1386 | 1270 | fail [Dmd=MC(1,L)] :: (# #) -> Bool
|
| 1387 | 1271 | [LclId[JoinId(1)(Nothing)], Arity=1, Str=<A>, Unf=OtherCon []]
|
| 1388 | - fail _ [Occ=Dead, OS=OneShot]
|
|
| 1272 | + fail (ds1 [Occ=Dead, OS=OneShot] :: (# #))
|
|
| 1389 | 1273 | = case _b of {
|
| 1390 | 1274 | __DEFAULT -> case lvl1 of {};
|
| 1391 | 1275 | Empty -> GHC.Internal.Types.True;
|
| ... | ... | @@ -1508,7 +1392,7 @@ T26615a.$wdisjointSubtrees |
| 1508 | 1392 | };
|
| 1509 | 1393 | Collision bx bx1 ->
|
| 1510 | 1394 | T26615a.disjointSubtrees_$s$wdisjointSubtrees
|
| 1511 | - @a @b @k bx bx1 ww $dEq ds
|
|
| 1395 | + @k @b @a $dEq ww bx bx1 ds
|
|
| 1512 | 1396 | } } in
|
| 1513 | 1397 | case ds of {
|
| 1514 | 1398 | Empty -> GHC.Internal.Types.True;
|
| ... | ... | @@ -1661,7 +1545,7 @@ T26615a.$wdisjointSubtrees |
| 1661 | 1545 | of
|
| 1662 | 1546 | { (# ipv #) ->
|
| 1663 | 1547 | T26615a.disjointSubtrees_$s$wdisjointSubtrees
|
| 1664 | - @b @a @k bx bx1 (+# ww 5#) $dEq ipv
|
|
| 1548 | + @k @a @b $dEq (+# ww 5#) bx bx1 ipv
|
|
| 1665 | 1549 | };
|
| 1666 | 1550 | 0## -> GHC.Internal.Types.True
|
| 1667 | 1551 | };
|
| ... | ... | @@ -1674,7 +1558,7 @@ T26615a.$wdisjointSubtrees |
| 1674 | 1558 | of
|
| 1675 | 1559 | { (# ipv #) ->
|
| 1676 | 1560 | T26615a.disjointSubtrees_$s$wdisjointSubtrees
|
| 1677 | - @b @a @k bx bx1 (+# ww 5#) $dEq ipv
|
|
| 1561 | + @k @a @b $dEq (+# ww 5#) bx bx1 ipv
|
|
| 1678 | 1562 | }
|
| 1679 | 1563 | };
|
| 1680 | 1564 | BitmapIndexed bx bx1 ->
|
| ... | ... | @@ -1686,21 +1570,23 @@ T26615a.$wdisjointSubtrees |
| 1686 | 1570 | case GHC.Internal.Unsafe.Coerce.unsafeEqualityProof
|
| 1687 | 1571 | @(*)
|
| 1688 | 1572 | @(SmallArray# (HashMap k a) -> SmallArray# (HashMap k b) -> Int#)
|
| 1689 | - @(GHC.Internal.Types.ZonkAny 0
|
|
| 1690 | - -> GHC.Internal.Types.ZonkAny 1 -> Int#)
|
|
| 1573 | + @(GHC.Internal.Types.UnusedType 0 "a"
|
|
| 1574 | + -> GHC.Internal.Types.UnusedType 1 "b" -> Int#)
|
|
| 1691 | 1575 | of
|
| 1692 | 1576 | { GHC.Internal.Unsafe.Coerce.UnsafeRefl v2 ->
|
| 1693 | 1577 | case reallyUnsafePtrEquality#
|
| 1694 | 1578 | @Lifted
|
| 1695 | 1579 | @Lifted
|
| 1696 | - @(GHC.Internal.Types.ZonkAny 0)
|
|
| 1697 | - @(GHC.Internal.Types.ZonkAny 1)
|
|
| 1580 | + @(GHC.Internal.Types.UnusedType 0 "a")
|
|
| 1581 | + @(GHC.Internal.Types.UnusedType 1 "b")
|
|
| 1698 | 1582 | (bx1
|
| 1699 | 1583 | `cast` (SelCo:Fun(arg) (Sub (Sym v2))
|
| 1700 | - :: SmallArray# (HashMap k a) ~R# GHC.Internal.Types.ZonkAny 0))
|
|
| 1584 | + :: SmallArray# (HashMap k a)
|
|
| 1585 | + ~R# GHC.Internal.Types.UnusedType 0 "a"))
|
|
| 1701 | 1586 | (bx3
|
| 1702 | 1587 | `cast` (SelCo:Fun(arg) (SelCo:Fun(res) (Sub (Sym v2)))
|
| 1703 | - :: SmallArray# (HashMap k b) ~R# GHC.Internal.Types.ZonkAny 1))
|
|
| 1588 | + :: SmallArray# (HashMap k b)
|
|
| 1589 | + ~R# GHC.Internal.Types.UnusedType 1 "b"))
|
|
| 1704 | 1590 | of {
|
| 1705 | 1591 | __DEFAULT ->
|
| 1706 | 1592 | let {
|
| ... | ... | @@ -1829,21 +1715,23 @@ T26615a.$wdisjointSubtrees |
| 1829 | 1715 | case GHC.Internal.Unsafe.Coerce.unsafeEqualityProof
|
| 1830 | 1716 | @(*)
|
| 1831 | 1717 | @(SmallArray# (HashMap k a) -> SmallArray# (HashMap k b) -> Int#)
|
| 1832 | - @(GHC.Internal.Types.ZonkAny 0
|
|
| 1833 | - -> GHC.Internal.Types.ZonkAny 1 -> Int#)
|
|
| 1718 | + @(GHC.Internal.Types.UnusedType 0 "a"
|
|
| 1719 | + -> GHC.Internal.Types.UnusedType 1 "b" -> Int#)
|
|
| 1834 | 1720 | of
|
| 1835 | 1721 | { GHC.Internal.Unsafe.Coerce.UnsafeRefl v2 ->
|
| 1836 | 1722 | case reallyUnsafePtrEquality#
|
| 1837 | 1723 | @Lifted
|
| 1838 | 1724 | @Lifted
|
| 1839 | - @(GHC.Internal.Types.ZonkAny 0)
|
|
| 1840 | - @(GHC.Internal.Types.ZonkAny 1)
|
|
| 1725 | + @(GHC.Internal.Types.UnusedType 0 "a")
|
|
| 1726 | + @(GHC.Internal.Types.UnusedType 1 "b")
|
|
| 1841 | 1727 | (bx
|
| 1842 | 1728 | `cast` (SelCo:Fun(arg) (Sub (Sym v2))
|
| 1843 | - :: SmallArray# (HashMap k a) ~R# GHC.Internal.Types.ZonkAny 0))
|
|
| 1729 | + :: SmallArray# (HashMap k a)
|
|
| 1730 | + ~R# GHC.Internal.Types.UnusedType 0 "a"))
|
|
| 1844 | 1731 | (bx1
|
| 1845 | 1732 | `cast` (SelCo:Fun(arg) (SelCo:Fun(res) (Sub (Sym v2)))
|
| 1846 | - :: SmallArray# (HashMap k b) ~R# GHC.Internal.Types.ZonkAny 1))
|
|
| 1733 | + :: SmallArray# (HashMap k b)
|
|
| 1734 | + ~R# GHC.Internal.Types.UnusedType 1 "b"))
|
|
| 1847 | 1735 | of {
|
| 1848 | 1736 | __DEFAULT ->
|
| 1849 | 1737 | let {
|
| ... | ... | @@ -1910,88 +1798,72 @@ disjointSubtrees |
| 1910 | 1798 | |
| 1911 | 1799 | ------ Local rules for imported ids --------
|
| 1912 | 1800 | "SC:$wdisjointSubtrees1" [1]
|
| 1913 | - forall (@a)
|
|
| 1801 | + forall (@k)
|
|
| 1914 | 1802 | (@b)
|
| 1915 | - (@k)
|
|
| 1916 | - (sc :: Word#)
|
|
| 1917 | - (sc1 :: SmallArray# (Leaf k a))
|
|
| 1803 | + (@a)
|
|
| 1804 | + (sc :: Eq k)
|
|
| 1805 | + (sc1 :: Int#)
|
|
| 1918 | 1806 | (sc2 :: Word#)
|
| 1919 | 1807 | (sc3 :: SmallArray# (Leaf k b))
|
| 1920 | - (sc4 :: Int#)
|
|
| 1921 | - (sc5 :: Eq k).
|
|
| 1808 | + (sc4 :: Word#)
|
|
| 1809 | + (sc5 :: SmallArray# (Leaf k a)).
|
|
| 1922 | 1810 | T26615a.$wdisjointSubtrees @k
|
| 1923 | 1811 | @b
|
| 1924 | 1812 | @a
|
| 1925 | - sc5
|
|
| 1926 | - sc4
|
|
| 1813 | + sc
|
|
| 1814 | + sc1
|
|
| 1927 | 1815 | (T26615a.Collision @k @b sc2 sc3)
|
| 1928 | - (T26615a.Collision @k @a sc sc1)
|
|
| 1816 | + (T26615a.Collision @k @a sc4 sc5)
|
|
| 1929 | 1817 | = T26615a.$wdisjointCollisions
|
| 1930 | - @k @b @a sc5 sc2 (T26615a.Array @(Leaf k b) sc3) sc sc1
|
|
| 1818 | + @k @b @a sc sc2 (T26615a.Array @(Leaf k b) sc3) sc4 sc5
|
|
| 1931 | 1819 | "SC:$wdisjointSubtrees0" [1]
|
| 1932 | - forall (@b)
|
|
| 1820 | + forall (@k)
|
|
| 1933 | 1821 | (@a)
|
| 1934 | - (@k)
|
|
| 1935 | - (sc :: Word#)
|
|
| 1936 | - (sc1 :: SmallArray# (Leaf k a))
|
|
| 1937 | - (sc2 :: Int#)
|
|
| 1938 | - (sc3 :: Eq k).
|
|
| 1822 | + (@b)
|
|
| 1823 | + (sc :: Eq k)
|
|
| 1824 | + (sc1 :: Int#)
|
|
| 1825 | + (sc2 :: Word#)
|
|
| 1826 | + (sc3 :: SmallArray# (Leaf k a)).
|
|
| 1939 | 1827 | T26615a.$wdisjointSubtrees @k
|
| 1940 | 1828 | @a
|
| 1941 | 1829 | @b
|
| 1942 | - sc3
|
|
| 1943 | - sc2
|
|
| 1944 | - (T26615a.Collision @k @a sc sc1)
|
|
| 1830 | + sc
|
|
| 1831 | + sc1
|
|
| 1832 | + (T26615a.Collision @k @a sc2 sc3)
|
|
| 1945 | 1833 | = T26615a.disjointSubtrees_$s$wdisjointSubtrees
|
| 1946 | - @b @a @k sc sc1 sc2 sc3
|
|
| 1834 | + @k @a @b sc sc1 sc2 sc3
|
|
| 1947 | 1835 | |
| 1948 | 1836 | |
| 1949 | 1837 | [2 of 2] Compiling T26615 ( T26615.hs, T26615.o )
|
| 1950 | 1838 | |
| 1951 | 1839 | ==================== Tidy Core ====================
|
| 1952 | 1840 | Result size of Tidy Core
|
| 1953 | - = {terms: 614, types: 666, coercions: 18, joins: 8/14}
|
|
| 1841 | + = {terms: 614, types: 682, coercions: 18, joins: 8/14}
|
|
| 1954 | 1842 | |
| 1955 | 1843 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 1956 | -T26615.$trModule2 :: GHC.Internal.Prim.Addr#
|
|
| 1957 | -[GblId,
|
|
| 1958 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 1959 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 1960 | - Guidance=IF_ARGS [] 30 0}]
|
|
| 1961 | -T26615.$trModule2 = "T26615"#
|
|
| 1844 | +$trModule1 :: GHC.Internal.Prim.Addr#
|
|
| 1845 | +[GblId, Unf=OtherCon []]
|
|
| 1846 | +$trModule1 = "T26615"#
|
|
| 1962 | 1847 | |
| 1963 | 1848 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 1964 | -T26615.$trModule1 :: GHC.Internal.Types.TrName
|
|
| 1965 | -[GblId,
|
|
| 1966 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 1967 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 1968 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 1969 | -T26615.$trModule1 = GHC.Internal.Types.TrNameS T26615.$trModule2
|
|
| 1849 | +$trModule2 :: GHC.Internal.Types.TrName
|
|
| 1850 | +[GblId, Unf=OtherCon []]
|
|
| 1851 | +$trModule2 = GHC.Internal.Types.TrNameS $trModule1
|
|
| 1970 | 1852 | |
| 1971 | 1853 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 1972 | -T26615.$trModule4 :: GHC.Internal.Prim.Addr#
|
|
| 1973 | -[GblId,
|
|
| 1974 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 1975 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 1976 | - Guidance=IF_ARGS [] 20 0}]
|
|
| 1977 | -T26615.$trModule4 = "main"#
|
|
| 1854 | +$trModule3 :: GHC.Internal.Prim.Addr#
|
|
| 1855 | +[GblId, Unf=OtherCon []]
|
|
| 1856 | +$trModule3 = "main"#
|
|
| 1978 | 1857 | |
| 1979 | 1858 | -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
|
| 1980 | -T26615.$trModule3 :: GHC.Internal.Types.TrName
|
|
| 1981 | -[GblId,
|
|
| 1982 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 1983 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 1984 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 1985 | -T26615.$trModule3 = GHC.Internal.Types.TrNameS T26615.$trModule4
|
|
| 1859 | +$trModule4 :: GHC.Internal.Types.TrName
|
|
| 1860 | +[GblId, Unf=OtherCon []]
|
|
| 1861 | +$trModule4 = GHC.Internal.Types.TrNameS $trModule3
|
|
| 1986 | 1862 | |
| 1987 | 1863 | -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
|
| 1988 | -T26615.$trModule :: GHC.Internal.Types.Module
|
|
| 1989 | -[GblId,
|
|
| 1990 | - Unf=Unf{Src=<vanilla>, TopLvl=True,
|
|
| 1991 | - Value=True, ConLike=True, WorkFree=True, Expandable=True,
|
|
| 1992 | - Guidance=IF_ARGS [] 10 10}]
|
|
| 1993 | -T26615.$trModule
|
|
| 1994 | - = GHC.Internal.Types.Module T26615.$trModule3 T26615.$trModule1
|
|
| 1864 | +T26615.$trModule [InlPrag=[~]] :: GHC.Internal.Types.Module
|
|
| 1865 | +[GblId, Unf=OtherCon []]
|
|
| 1866 | +T26615.$trModule = GHC.Internal.Types.Module $trModule4 $trModule2
|
|
| 1995 | 1867 | |
| 1996 | 1868 | -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
|
| 1997 | 1869 | lvl :: GHC.Internal.Prim.Addr#
|
| ... | ... | @@ -2128,7 +2000,7 @@ $wpoly_lookupCont_ |
| 2128 | 2000 | end Rec }
|
| 2129 | 2001 | |
| 2130 | 2002 | Rec {
|
| 2131 | --- RHS size: {terms: 448, types: 507, coercions: 18, joins: 8/13}
|
|
| 2003 | +-- RHS size: {terms: 448, types: 523, coercions: 18, joins: 8/13}
|
|
| 2132 | 2004 | T26615.$s$wdisjointSubtrees [InlPrag=[~], Occ=LoopBreaker]
|
| 2133 | 2005 | :: forall a b.
|
| 2134 | 2006 | GHC.Internal.Prim.Int#
|
| ... | ... | @@ -2143,7 +2015,7 @@ T26615.$s$wdisjointSubtrees |
| 2143 | 2015 | join {
|
| 2144 | 2016 | fail [Dmd=MC(1,L)] :: (# #) -> Bool
|
| 2145 | 2017 | [LclId[JoinId(1)(Nothing)], Arity=1, Str=<A>, Unf=OtherCon []]
|
| 2146 | - fail _ [Occ=Dead, OS=OneShot]
|
|
| 2018 | + fail (ds1 [Occ=Dead, OS=OneShot] :: (# #))
|
|
| 2147 | 2019 | = case _b of wild {
|
| 2148 | 2020 | __DEFAULT -> case lvl1 of {};
|
| 2149 | 2021 | T26615a.Empty -> GHC.Internal.Types.True;
|
| ... | ... | @@ -2190,30 +2062,28 @@ T26615.$s$wdisjointSubtrees |
| 2190 | 2062 | $s$wfoldr_ [InlPrag=[2],
|
| 2191 | 2063 | Occ=LoopBreaker,
|
| 2192 | 2064 | Dmd=SC(S,C(1,C(1,C(1,L))))]
|
| 2193 | - :: Bool
|
|
| 2194 | - -> GHC.Internal.Prim.Int#
|
|
| 2195 | - -> GHC.Internal.Prim.Int#
|
|
| 2196 | - -> GHC.Internal.Prim.SmallArray# (T26615a.Leaf [Char] a)
|
|
| 2197 | - -> Bool
|
|
| 2065 | + :: GHC.Internal.Prim.SmallArray# (T26615a.Leaf [Char] a)
|
|
| 2066 | + -> GHC.Internal.Prim.Int# -> GHC.Internal.Prim.Int# -> Bool -> Bool
|
|
| 2198 | 2067 | [LclId[JoinId(4)(Nothing)],
|
| 2199 | 2068 | Arity=4,
|
| 2200 | 2069 | Str=<L><L><L><L>,
|
| 2201 | 2070 | Unf=OtherCon []]
|
| 2202 | - $s$wfoldr_ (sc :: Bool)
|
|
| 2071 | + $s$wfoldr_ (sc
|
|
| 2072 | + :: GHC.Internal.Prim.SmallArray# (T26615a.Leaf [Char] a))
|
|
| 2203 | 2073 | (sc1 :: GHC.Internal.Prim.Int#)
|
| 2204 | 2074 | (sc2 :: GHC.Internal.Prim.Int#)
|
| 2205 | - (sc3 :: GHC.Internal.Prim.SmallArray# (T26615a.Leaf [Char] a))
|
|
| 2206 | - = case GHC.Internal.Prim.>=# sc1 sc2 of {
|
|
| 2075 | + (sc3 :: Bool)
|
|
| 2076 | + = case GHC.Internal.Prim.>=# sc2 sc1 of {
|
|
| 2207 | 2077 | __DEFAULT ->
|
| 2208 | 2078 | case GHC.Internal.Prim.indexSmallArray#
|
| 2209 | - @GHC.Internal.Types.Lifted @(T26615a.Leaf String a) sc3 sc1
|
|
| 2079 | + @GHC.Internal.Types.Lifted @(T26615a.Leaf String a) sc sc2
|
|
| 2210 | 2080 | of
|
| 2211 | 2081 | { (# ipv1 #) ->
|
| 2212 | 2082 | case ipv1 of { T26615a.L kA ds2 ->
|
| 2213 | 2083 | join {
|
| 2214 | 2084 | $j :: Bool
|
| 2215 | 2085 | [LclId[JoinId(0)(Nothing)]]
|
| 2216 | - $j = jump $s$wfoldr_ sc (GHC.Internal.Prim.+# sc1 1#) sc2 sc3 } in
|
|
| 2086 | + $j = jump $s$wfoldr_ sc sc1 (GHC.Internal.Prim.+# sc2 1#) sc3 } in
|
|
| 2217 | 2087 | joinrec {
|
| 2218 | 2088 | $wlookupInArrayCont_ [InlPrag=[2],
|
| 2219 | 2089 | Occ=LoopBreaker,
|
| ... | ... | @@ -2258,14 +2128,14 @@ T26615.$s$wdisjointSubtrees |
| 2258 | 2128 | jump $wlookupInArrayCont_ kA bx3 0# lvl2
|
| 2259 | 2129 | }
|
| 2260 | 2130 | };
|
| 2261 | - 1# -> sc
|
|
| 2131 | + 1# -> sc3
|
|
| 2262 | 2132 | }; } in
|
| 2263 | 2133 | jump $s$wfoldr_
|
| 2264 | - GHC.Internal.Types.True
|
|
| 2265 | - 0#
|
|
| 2134 | + bx1
|
|
| 2266 | 2135 | (GHC.Internal.Prim.sizeofSmallArray#
|
| 2267 | 2136 | @GHC.Internal.Types.Lifted @(T26615a.Leaf String a) bx1)
|
| 2268 | - bx1
|
|
| 2137 | + 0#
|
|
| 2138 | + GHC.Internal.Types.True
|
|
| 2269 | 2139 | };
|
| 2270 | 2140 | T26615a.BitmapIndexed bx2 bx3 ->
|
| 2271 | 2141 | let {
|
| ... | ... | @@ -2317,23 +2187,23 @@ T26615.$s$wdisjointSubtrees |
| 2317 | 2187 | @(GHC.Internal.Prim.SmallArray# (HashMap String a)
|
| 2318 | 2188 | -> GHC.Internal.Prim.SmallArray# (HashMap String b)
|
| 2319 | 2189 | -> GHC.Internal.Prim.Int#)
|
| 2320 | - @(GHC.Internal.Types.ZonkAny 0
|
|
| 2321 | - -> GHC.Internal.Types.ZonkAny 1 -> GHC.Internal.Prim.Int#)
|
|
| 2190 | + @(GHC.Internal.Types.UnusedType 0 "a"
|
|
| 2191 | + -> GHC.Internal.Types.UnusedType 1 "b" -> GHC.Internal.Prim.Int#)
|
|
| 2322 | 2192 | of
|
| 2323 | 2193 | { GHC.Internal.Unsafe.Coerce.UnsafeRefl v2 ->
|
| 2324 | 2194 | case GHC.Internal.Prim.reallyUnsafePtrEquality#
|
| 2325 | 2195 | @GHC.Internal.Types.Lifted
|
| 2326 | 2196 | @GHC.Internal.Types.Lifted
|
| 2327 | - @(GHC.Internal.Types.ZonkAny 0)
|
|
| 2328 | - @(GHC.Internal.Types.ZonkAny 1)
|
|
| 2197 | + @(GHC.Internal.Types.UnusedType 0 "a")
|
|
| 2198 | + @(GHC.Internal.Types.UnusedType 1 "b")
|
|
| 2329 | 2199 | (bx1
|
| 2330 | 2200 | `cast` (SelCo:Fun(arg) (Sub (Sym v2))
|
| 2331 | 2201 | :: GHC.Internal.Prim.SmallArray# (HashMap String a)
|
| 2332 | - ~R# GHC.Internal.Types.ZonkAny 0))
|
|
| 2202 | + ~R# GHC.Internal.Types.UnusedType 0 "a"))
|
|
| 2333 | 2203 | (bx3
|
| 2334 | 2204 | `cast` (SelCo:Fun(arg) (SelCo:Fun(res) (Sub (Sym v2)))
|
| 2335 | 2205 | :: GHC.Internal.Prim.SmallArray# (HashMap String b)
|
| 2336 | - ~R# GHC.Internal.Types.ZonkAny 1))
|
|
| 2206 | + ~R# GHC.Internal.Types.UnusedType 1 "b"))
|
|
| 2337 | 2207 | of {
|
| 2338 | 2208 | __DEFAULT ->
|
| 2339 | 2209 | joinrec {
|
| ... | ... | @@ -2495,23 +2365,23 @@ T26615.$s$wdisjointSubtrees |
| 2495 | 2365 | @(GHC.Internal.Prim.SmallArray# (HashMap String a)
|
| 2496 | 2366 | -> GHC.Internal.Prim.SmallArray# (HashMap String b)
|
| 2497 | 2367 | -> GHC.Internal.Prim.Int#)
|
| 2498 | - @(GHC.Internal.Types.ZonkAny 0
|
|
| 2499 | - -> GHC.Internal.Types.ZonkAny 1 -> GHC.Internal.Prim.Int#)
|
|
| 2368 | + @(GHC.Internal.Types.UnusedType 0 "a"
|
|
| 2369 | + -> GHC.Internal.Types.UnusedType 1 "b" -> GHC.Internal.Prim.Int#)
|
|
| 2500 | 2370 | of
|
| 2501 | 2371 | { GHC.Internal.Unsafe.Coerce.UnsafeRefl v2 ->
|
| 2502 | 2372 | case GHC.Internal.Prim.reallyUnsafePtrEquality#
|
| 2503 | 2373 | @GHC.Internal.Types.Lifted
|
| 2504 | 2374 | @GHC.Internal.Types.Lifted
|
| 2505 | - @(GHC.Internal.Types.ZonkAny 0)
|
|
| 2506 | - @(GHC.Internal.Types.ZonkAny 1)
|
|
| 2375 | + @(GHC.Internal.Types.UnusedType 0 "a")
|
|
| 2376 | + @(GHC.Internal.Types.UnusedType 1 "b")
|
|
| 2507 | 2377 | (bx
|
| 2508 | 2378 | `cast` (SelCo:Fun(arg) (Sub (Sym v2))
|
| 2509 | 2379 | :: GHC.Internal.Prim.SmallArray# (HashMap String a)
|
| 2510 | - ~R# GHC.Internal.Types.ZonkAny 0))
|
|
| 2380 | + ~R# GHC.Internal.Types.UnusedType 0 "a"))
|
|
| 2511 | 2381 | (bx1
|
| 2512 | 2382 | `cast` (SelCo:Fun(arg) (SelCo:Fun(res) (Sub (Sym v2)))
|
| 2513 | 2383 | :: GHC.Internal.Prim.SmallArray# (HashMap String b)
|
| 2514 | - ~R# GHC.Internal.Types.ZonkAny 1))
|
|
| 2384 | + ~R# GHC.Internal.Types.UnusedType 1 "b"))
|
|
| 2515 | 2385 | of {
|
| 2516 | 2386 | __DEFAULT ->
|
| 2517 | 2387 | joinrec {
|
| ... | ... | @@ -2564,7 +2434,7 @@ f = \ (@a) |
| 2564 | 2434 | |
| 2565 | 2435 | ------ Local rules for imported ids --------
|
| 2566 | 2436 | "SPEC/T26615 $wdisjointSubtrees @String @_ @_" [2]
|
| 2567 | - forall (@a) (@b) ($dEq :: Eq String).
|
|
| 2437 | + forall (@a) (@b) ($dEq [Occ=Dead] :: Eq String).
|
|
| 2568 | 2438 | T26615a.$wdisjointSubtrees @String @a @b $dEq
|
| 2569 | 2439 | = T26615.$s$wdisjointSubtrees @a @b
|
| 2570 | 2440 |
| ... | ... | @@ -14,15 +14,15 @@ T13292a.hs:4:12: warning: [GHC-39999] [-Wdeferred-type-errors (in -Wdefault)] |
| 14 | 14 | In an equation for ‘someFunc’: someFunc = return ()
|
| 15 | 15 | |
| 16 | 16 | T13292.hs:6:1: warning: [GHC-83865] [-Wdeferred-type-errors (in -Wdefault)]
|
| 17 | - • Couldn't match type ‘GHC.Internal.Types.ZonkAny 0’ with ‘IO’
|
|
| 17 | + • Couldn't match type ‘m0_0’ with ‘IO’
|
|
| 18 | 18 | Expected: IO ()
|
| 19 | - Actual: GHC.Internal.Types.ZonkAny 0 ()
|
|
| 19 | + Actual: m0_0 ()
|
|
| 20 | 20 | • When checking the type of the IO action ‘main’
|
| 21 | 21 | |
| 22 | 22 | T13292.hs:6:1: warning: [GHC-83865] [-Wdeferred-type-errors (in -Wdefault)]
|
| 23 | - • Couldn't match type ‘GHC.Internal.Types.ZonkAny 0’ with ‘IO’
|
|
| 23 | + • Couldn't match type ‘m0_0’ with ‘IO’
|
|
| 24 | 24 | Expected: IO ()
|
| 25 | - Actual: GHC.Internal.Types.ZonkAny 0 ()
|
|
| 25 | + Actual: m0_0 ()
|
|
| 26 | 26 | • In the expression: main
|
| 27 | 27 | When checking the type of the IO action ‘main’
|
| 28 | 28 |
| 1 | +T27390a.hs:4:12: warning: [GHC-39999] [-Wdeferred-type-errors (in -Wdefault)]
|
|
| 2 | + • Ambiguous type variable ‘m0’ arising from a use of ‘return’
|
|
| 3 | + prevents the constraint ‘(Monad m0)’ from being solved.
|
|
| 4 | + Relevant bindings include
|
|
| 5 | + someFunc :: m0 () (bound at T27390a.hs:4:1)
|
|
| 6 | + Probable fix: use a type annotation to specify what ‘m0’ should be.
|
|
| 7 | + Potentially matching instances:
|
|
| 8 | + instance Monad IO -- Defined in ‘GHC.Internal.Base’
|
|
| 9 | + instance Monad Maybe -- Defined in ‘GHC.Internal.Base’
|
|
| 10 | + ...plus six others
|
|
| 11 | + ...plus one instance involving out-of-scope types
|
|
| 12 | + (use -fprint-potential-instances to see them all)
|
|
| 13 | + • In the expression: return ()
|
|
| 14 | + In an equation for ‘someFunc’: someFunc = return ()
|
|
| 15 | + |
|
| 16 | +T27390.hs:6:1: warning: [GHC-83865] [-Wdeferred-type-errors (in -Wdefault)]
|
|
| 17 | + • Couldn't match type ‘m0_0 :: Type -> Type’ with ‘IO’
|
|
| 18 | + Expected: IO ()
|
|
| 19 | + Actual: (m0_0 :: Type -> Type) ()
|
|
| 20 | + • When checking the type of the IO action ‘main’
|
|
| 21 | + |
|
| 22 | +T27390.hs:6:1: warning: [GHC-83865] [-Wdeferred-type-errors (in -Wdefault)]
|
|
| 23 | + • Couldn't match type ‘m0_0 :: Type -> Type’ with ‘IO’
|
|
| 24 | + Expected: IO ()
|
|
| 25 | + Actual: (m0_0 :: Type -> Type) ()
|
|
| 26 | + • In the expression: main
|
|
| 27 | + When checking the type of the IO action ‘main’
|
|
| 28 | + |
| 1 | +{-# language NoStarIsType #-}
|
|
| 2 | +module Main where
|
|
| 3 | + |
|
| 4 | +import T27390a
|
|
| 5 | + |
|
| 6 | +main = someFunc |
| 1 | +T27390a.hs:4:12: warning: [GHC-39999] [-Wdeferred-type-errors (in -Wdefault)]
|
|
| 2 | + • Ambiguous type variable ‘m0’ arising from a use of ‘return’
|
|
| 3 | + prevents the constraint ‘(Monad m0)’ from being solved.
|
|
| 4 | + Relevant bindings include
|
|
| 5 | + someFunc :: m0 () (bound at T27390a.hs:4:1)
|
|
| 6 | + Probable fix: use a type annotation to specify what ‘m0’ should be.
|
|
| 7 | + Potentially matching instances:
|
|
| 8 | + instance Monad IO -- Defined in ‘GHC.Internal.Base’
|
|
| 9 | + instance Monad Maybe -- Defined in ‘GHC.Internal.Base’
|
|
| 10 | + ...plus six others
|
|
| 11 | + ...plus one instance involving out-of-scope types
|
|
| 12 | + (use -fprint-potential-instances to see them all)
|
|
| 13 | + • In the expression: return ()
|
|
| 14 | + In an equation for ‘someFunc’: someFunc = return ()
|
|
| 15 | + |
|
| 16 | +T27390.hs:6:1: warning: [GHC-83865] [-Wdeferred-type-errors (in -Wdefault)]
|
|
| 17 | + • Couldn't match type ‘m0_0’ with ‘IO’
|
|
| 18 | + Expected: IO ()
|
|
| 19 | + Actual: m0_0 ()
|
|
| 20 | + • When checking the type of the IO action ‘main’
|
|
| 21 | + |
|
| 22 | +T27390.hs:6:1: warning: [GHC-83865] [-Wdeferred-type-errors (in -Wdefault)]
|
|
| 23 | + • Couldn't match type ‘m0_0’ with ‘IO’
|
|
| 24 | + Expected: IO ()
|
|
| 25 | + Actual: m0_0 ()
|
|
| 26 | + • In the expression: main
|
|
| 27 | + When checking the type of the IO action ‘main’
|
|
| 28 | + |
| 1 | +module T27390a where
|
|
| 2 | + |
|
| 3 | + |
|
| 4 | +someFunc = return () |
| ... | ... | @@ -448,6 +448,8 @@ test('T13075', normal, compile_fail, ['']) |
| 448 | 448 | test('LevPolyBounded', normal, compile_fail, [''])
|
| 449 | 449 | test('T13487', normal, compile, [''])
|
| 450 | 450 | test('T13292', normal, multimod_compile, ['T13292', '-v0 -fdefer-type-errors'])
|
| 451 | +test('T27390', normal, multimod_compile, ['T27390', '-v0 -fdefer-type-errors'])
|
|
| 452 | +test('T27390-explicit-kinds', [extra_files(['T27390.hs', 'T27390a.hs'])], multimod_compile, ['T27390', '-v0 -fdefer-type-errors -fprint-explicit-kinds'])
|
|
| 451 | 453 | test('T13300', normal, compile_fail, [''])
|
| 452 | 454 | test('T13311', normal, compile_fail, [''])
|
| 453 | 455 | test('T13446', normal, compile_fail, [''])
|