Cheng Shao pushed to branch wip/libffi-3.5.0 at Glasgow Haskell Compiler / GHC

Commits:

23 changed files:

Changes:

  • compiler/GHC/Hs/Binds.hs
    ... ... @@ -627,9 +627,9 @@ instance (OutputableBndrId l, OutputableBndrId r)
    627 627
                         GhcTc -> ppr v
    
    628 628
     
    
    629 629
           ppr_rhs = case dir of
    
    630
    -          Unidirectional           -> ppr_simple (text "<-")
    
    630
    +          Unidirectional           -> ppr_simple larrow
    
    631 631
               ImplicitBidirectional    -> ppr_simple equals
    
    632
    -          ExplicitBidirectional mg -> ppr_simple (text "<-") <+> text "where" $$
    
    632
    +          ExplicitBidirectional mg -> ppr_simple larrow <+> text "where" $$
    
    633 633
                                           (nest 2 $ pprFunBind mg)
    
    634 634
     
    
    635 635
     pprTicks :: SDoc -> SDoc -> SDoc
    

  • compiler/GHC/Hs/Decls.hs
    ... ... @@ -699,7 +699,7 @@ instance OutputableBndrId p
    699 699
                       TyVarSig _ tv_bndr -> text "=" <+> ppr tv_bndr
    
    700 700
           pp_inj = case mb_inj of
    
    701 701
                      Just (L _ (InjectivityAnn _ lhs rhs)) ->
    
    702
    -                   hsep [ vbar, ppr lhs, text "->", hsep (map ppr rhs) ]
    
    702
    +                   hsep [ vbar, ppr lhs, arrow, hsep (map ppr rhs) ]
    
    703 703
                      Nothing -> empty
    
    704 704
           (pp_where, pp_eqns) = case info of
    
    705 705
             ClosedTypeFamily mb_eqns ->
    
    ... ... @@ -868,7 +868,7 @@ instance OutputableBndrId p
    868 868
     instance OutputableBndrId p
    
    869 869
            => Outputable (StandaloneKindSig (GhcPass p)) where
    
    870 870
       ppr (StandaloneKindSig _ v ki)
    
    871
    -    = text "type" <+> pprPrefixOcc (unLoc v) <+> text "::" <+> ppr ki
    
    871
    +    = text "type" <+> pprPrefixOcc (unLoc v) <+> dcolon <+> ppr ki
    
    872 872
     
    
    873 873
     pp_condecls :: forall p. OutputableBndrId p => [LConDecl (GhcPass p)] -> SDoc
    
    874 874
     pp_condecls cs
    

  • compiler/GHC/Hs/Expr.hs
    ... ... @@ -956,7 +956,7 @@ ppr_expr (HsIf _ e1 e2 e3)
    956 956
     ppr_expr (HsMultiIf _ alts)
    
    957 957
       = hang (text "if") 3  (vcat $ toList $ NE.map ppr_alt alts)
    
    958 958
       where ppr_alt (L _ (GRHS _ guards expr)) =
    
    959
    -          hang vbar 2 (hang (interpp'SP guards) 2 (text "->" <+> pprDeeper (ppr expr)))
    
    959
    +          hang vbar 2 (hang (interpp'SP guards) 2 (arrow <+> pprDeeper (ppr expr)))
    
    960 960
             ppr_alt (L _ (XGRHS x)) = ppr x
    
    961 961
     
    
    962 962
     -- special case: let ... in let ...
    
    ... ... @@ -1029,7 +1029,7 @@ ppr_expr (HsUntypedBracket b q)
    1029 1029
           ppr rnq `ppr_with_pending_tc_splices` ps
    
    1030 1030
     
    
    1031 1031
     ppr_expr (HsProc _ pat (L _ (HsCmdTop _ cmd)))
    
    1032
    -  = hsep [text "proc", ppr pat, text "->", ppr cmd]
    
    1032
    +  = hsep [text "proc", ppr pat, arrow, ppr cmd]
    
    1033 1033
     
    
    1034 1034
     ppr_expr (HsStatic _ e)
    
    1035 1035
       = hsep [text "static", ppr e]
    
    ... ... @@ -1844,10 +1844,10 @@ pp_rhs ctxt rhs = matchSeparator ctxt <+> pprDeeper (ppr rhs)
    1844 1844
     
    
    1845 1845
     matchSeparator :: HsMatchContext fn -> SDoc
    
    1846 1846
     matchSeparator FunRhs{}         = text "="
    
    1847
    -matchSeparator CaseAlt          = text "->"
    
    1848
    -matchSeparator LamAlt{}         = text "->"
    
    1849
    -matchSeparator IfAlt            = text "->"
    
    1850
    -matchSeparator ArrowMatchCtxt{} = text "->"
    
    1847
    +matchSeparator CaseAlt          = arrow
    
    1848
    +matchSeparator LamAlt{}         = arrow
    
    1849
    +matchSeparator IfAlt            = arrow
    
    1850
    +matchSeparator ArrowMatchCtxt{} = arrow
    
    1851 1851
     matchSeparator PatBindRhs       = text "="
    
    1852 1852
     matchSeparator PatBindGuards    = text "="
    
    1853 1853
     matchSeparator StmtCtxt{}       = text "<-"
    

  • compiler/GHC/Iface/Syntax.hs
    ... ... @@ -1377,7 +1377,7 @@ pprIfaceDecl ss decl@(IfaceFamily { ifName = tycon
    1377 1377
     
    
    1378 1378
         pp_inj_cond res inj = case filterByList inj binders of
    
    1379 1379
            []  -> empty
    
    1380
    -       tvs -> hsep [vbar, ppr res, text "->", interppSP (map ifTyConBinderName tvs)]
    
    1380
    +       tvs -> hsep [vbar, ppr res, arrow, interppSP (map ifTyConBinderName tvs)]
    
    1381 1381
     
    
    1382 1382
         pp_rhs IfaceDataFamilyTyCon
    
    1383 1383
           = ppShowIface ss (text "data")
    
    ... ... @@ -1464,7 +1464,7 @@ pprRoles suppress_if tyCon bndrs roles
    1464 1464
              text "type role" <+> tyCon <+> hsep (map ppr froles)
    
    1465 1465
     
    
    1466 1466
     pprStandaloneKindSig :: SDoc -> IfaceType -> SDoc
    
    1467
    -pprStandaloneKindSig tyCon ty = text "type" <+> tyCon <+> text "::" <+> ppr ty
    
    1467
    +pprStandaloneKindSig tyCon ty = text "type" <+> tyCon <+> dcolon <+> ppr ty
    
    1468 1468
     
    
    1469 1469
     pprInfixIfDeclBndr :: ShowHowMuch -> OccName -> SDoc
    
    1470 1470
     pprInfixIfDeclBndr (ShowSome _ (AltPpr (Just ppr_bndr))) name
    

  • compiler/GHC/Iface/Type.hs
    ... ... @@ -1747,7 +1747,7 @@ pprTyTcApp ctxt_prec tc tys =
    1747 1747
            , IA_Arg (IfaceLitTy (IfaceStrTyLit n))
    
    1748 1748
                     Required (IA_Arg ty Required IA_Nil) <- tys
    
    1749 1749
            -> maybeParen ctxt_prec funPrec
    
    1750
    -         $ char '?' <> ftext (getLexicalFastString n) <> text "::" <> ppr_ty topPrec ty
    
    1750
    +         $ char '?' <> ftext (getLexicalFastString n) <> dcolon <> ppr_ty topPrec ty
    
    1751 1751
     
    
    1752 1752
            | IfaceTupleTyCon arity sort <- ifaceTyConSort info
    
    1753 1753
            , not debug
    

  • compiler/GHC/Parser/PostProcess.hs
    ... ... @@ -1935,7 +1935,7 @@ instance DisambECP (HsCmd GhcPs) where
    1935 1935
       mkHsLitPV (L l a) = cmdFail l (ppr a)
    
    1936 1936
       mkHsOverLitPV (L l a) = cmdFail (locA l) (ppr a)
    
    1937 1937
       mkHsWildCardPV l = cmdFail l (text "_")
    
    1938
    -  mkHsTySigPV l a sig _ = cmdFail (locA l) (ppr a <+> text "::" <+> ppr sig)
    
    1938
    +  mkHsTySigPV l a sig _ = cmdFail (locA l) (ppr a <+> dcolon <+> ppr sig)
    
    1939 1939
       mkHsExplicitListPV l xs _ = cmdFail l $
    
    1940 1940
         brackets (pprWithCommas ppr xs)
    
    1941 1941
       mkHsSplicePV (L l sp) = cmdFail l (pprUntypedSplice True Nothing sp)
    

  • hadrian/doc/flavours.md
    ... ... @@ -334,6 +334,8 @@ The supported transformers are listed below:
    334 334
             <td>Disable including self-recompilation information in interface files via <code>-fno-write-if-self-recomp</code>. If you are building a distribution you can enable this flag to produce more deterministic interface files.</td>
    
    335 335
             <td><code>hash_unit_ids</code></td>
    
    336 336
             <td>Include a package hash in the unit id of built packages</td>
    
    337
    +        <td><code>hie_files</code></td>
    
    338
    +        <td>Produce hie files for stage1 libraries</td>
    
    337 339
         </tr>
    
    338 340
     </table>
    
    339 341
     
    

  • hadrian/doc/user-settings.md
    ... ... @@ -47,7 +47,10 @@ data Flavour = Flavour {
    47 47
                     -> Bool,
    
    48 48
         -- | Whether to build docs and which ones
    
    49 49
         --   (haddocks, user manual, haddock manual)
    
    50
    -    ghcDocs :: Action DocTargets }
    
    50
    +    ghcDocs :: Action DocTargets,
    
    51
    +    -- | Whether to generate .hie files
    
    52
    +    ghcHieFiles :: Stage -> Bool
    
    53
    +    }
    
    51 54
     ```
    
    52 55
     Hadrian provides several built-in flavours (`default`, `quick`, and a few
    
    53 56
     others; see `hadrian/doc/flavours.md`), which can be activated from the command line,
    
    ... ... @@ -364,6 +367,13 @@ all of the documentation targets:
    364 367
     You can pass several `--docs=...` flags, Hadrian will combine
    
    365 368
     their effects.
    
    366 369
     
    
    370
    +### HIE files
    
    371
    +
    
    372
    +The `ghcHieFiles` field controls whether `.hie` files are generated
    
    373
    +for source files built with the stage1 compiler.
    
    374
    +
    
    375
    +For most flavours `.hie` files wil be generated by default.
    
    376
    +
    
    367 377
     ### Split sections
    
    368 378
     
    
    369 379
     You can build all or just a few packages with
    

  • hadrian/src/Context.hs
    ... ... @@ -3,7 +3,7 @@ module Context (
    3 3
         Context (..), vanillaContext, stageContext,
    
    4 4
     
    
    5 5
         -- * Expressions
    
    6
    -    getStage, getPackage, getWay, getBuildPath, getPackageDbLoc, getStagedTarget,
    
    6
    +    getStage, getPackage, getWay, getBuildPath, getHieBuildPath, getPackageDbLoc, getStagedTarget,
    
    7 7
     
    
    8 8
         -- * Paths
    
    9 9
         contextDir, buildPath, buildDir, pkgInplaceConfig, pkgSetupConfigFile, pkgSetupConfigDir,
    

  • hadrian/src/Context/Path.hs
    ... ... @@ -42,6 +42,10 @@ buildPath context = buildRoot <&> (-/- buildDir context)
    42 42
     getBuildPath :: Expr Context b FilePath
    
    43 43
     getBuildPath = expr . buildPath =<< getContext
    
    44 44
     
    
    45
    +-- | The output directory for hie files
    
    46
    +getHieBuildPath :: Expr Context b FilePath
    
    47
    +getHieBuildPath = (-/- "extra-compilation-artifacts" -/- "hie") <$> getBuildPath
    
    48
    +
    
    45 49
     -- | Path to the directory containing haddock timing files, used by
    
    46 50
     --   the haddock perf tests.
    
    47 51
     haddockStatsFilesDir :: Action FilePath
    

  • hadrian/src/Flavour.hs
    ... ... @@ -21,6 +21,7 @@ module Flavour
    21 21
       , enableHiCore
    
    22 22
       , useNativeBignum
    
    23 23
       , enableTextWithSIMDUTF
    
    24
    +  , enableHieFiles
    
    24 25
       , omitPragmas
    
    25 26
     
    
    26 27
       , completeSetting
    
    ... ... @@ -75,6 +76,7 @@ flavourTransformers = M.fromList
    75 76
         , "boot_nonmoving_gc" =: enableBootNonmovingGc
    
    76 77
         , "dump_stg"         =: enableDumpStg
    
    77 78
         , "hash_unit_ids"    =: enableHashUnitIds
    
    79
    +    , "hie_files"        =: enableHieFiles
    
    78 80
         ]
    
    79 81
       where (=:) = (,)
    
    80 82
     
    
    ... ... @@ -324,6 +326,9 @@ enableTextWithSIMDUTF flavour = flavour {
    324 326
     enableHashUnitIds :: Flavour -> Flavour
    
    325 327
     enableHashUnitIds flavour = flavour { hashUnitIds = True }
    
    326 328
     
    
    329
    +enableHieFiles :: Flavour -> Flavour
    
    330
    +enableHieFiles flavour = flavour { ghcHieFiles = (>= Stage1) }
    
    331
    +
    
    327 332
     -- | Build stage2 compiler with -fomit-interface-pragmas to reduce
    
    328 333
     -- recompilation.
    
    329 334
     omitPragmas :: Flavour -> Flavour
    

  • hadrian/src/Flavour/Type.hs
    ... ... @@ -51,7 +51,10 @@ data Flavour = Flavour {
    51 51
         ghcDocs :: Action DocTargets,
    
    52 52
     
    
    53 53
         -- | Whether to uses hashes or inplace for unit ids
    
    54
    -    hashUnitIds :: Bool
    
    54
    +    hashUnitIds :: Bool,
    
    55
    +
    
    56
    +    -- | Whether to generate .hie files
    
    57
    +    ghcHieFiles :: Stage -> Bool
    
    55 58
     
    
    56 59
         }
    
    57 60
     
    

  • hadrian/src/Settings/Builders/Ghc.hs
    ... ... @@ -35,6 +35,9 @@ compileAndLinkHs = (builder (Ghc CompileHs) ||^ builder (Ghc LinkHs)) ? do
    35 35
         useColor <- shakeColor <$> expr getShakeOptions
    
    36 36
         let hasVanilla = elem vanilla ways
    
    37 37
             hasDynamic = elem dynamic ways
    
    38
    +    hieFiles <- ghcHieFiles <$> expr flavour
    
    39
    +    stage <- getStage
    
    40
    +    hie_path <- getHieBuildPath
    
    38 41
         mconcat [ arg "-Wall"
    
    39 42
                 , arg "-Wcompat"
    
    40 43
                 , not useColor ? builder (Ghc CompileHs) ?
    
    ... ... @@ -49,6 +52,10 @@ compileAndLinkHs = (builder (Ghc CompileHs) ||^ builder (Ghc LinkHs)) ? do
    49 52
                 , ghcLinkArgs
    
    50 53
                 , defaultGhcWarningsArgs
    
    51 54
                 , builder (Ghc CompileHs) ? arg "-c"
    
    55
    +            , hieFiles stage ? builder (Ghc CompileHs) ? mconcat
    
    56
    +                  [ arg "-fwrite-ide-info"
    
    57
    +                  , arg "-hiedir", arg hie_path
    
    58
    +                  ]
    
    52 59
                 , getInputs
    
    53 60
                 , arg "-o", arg =<< getOutput ]
    
    54 61
     
    

  • hadrian/src/Settings/Default.hs
    ... ... @@ -283,6 +283,7 @@ defaultFlavour = Flavour
    283 283
         , ghcDebugAssertions = const False
    
    284 284
         , ghcSplitSections   = False
    
    285 285
         , ghcDocs            = cmdDocsArgs
    
    286
    +    , ghcHieFiles        = const False
    
    286 287
         , hashUnitIds        = False }
    
    287 288
     
    
    288 289
     -- | Default logic for determining whether to build
    

  • hadrian/src/Settings/Flavours/Release.hs
    ... ... @@ -11,4 +11,6 @@ releaseFlavour =
    11 11
       $ enableHaddock
    
    12 12
       -- 3. Include unit id hashes
    
    13 13
       $ enableHashUnitIds
    
    14
    +  -- 4. Include hie files (#16901)
    
    15
    +  -- $ enableHieFiles
    
    14 16
       $ performanceFlavour { name = "release" }

  • libffi-tarballs
    1
    -Subproject commit ac7fa3132d382056837cad297ab4c66418febb69
    1
    +Subproject commit 1a5955e69b7b139b066cc31507676afc24959dbd

  • testsuite/tests/ghci/scripts/T12550.stdout
    ... ... @@ -11,13 +11,13 @@ f ∷ ∀ (a ∷ ★ → ★) b. C a ⇒ a b
    11 11
     f ∷ ∀ (a ∷ ★ → ★) b. C a ⇒ a b
    
    12 12
     f ∷ ∀ (a ∷ ★ → ★) b. C a ⇒ a b
    
    13 13
     fmap ∷ ∀ (f ∷ ★ → ★) a b. Functor f ⇒ (a → b) → f a → f b
    
    14
    -type Functor :: (★ → ★) → Constraint
    
    14
    +type Functor  (★ → ★) → Constraint
    
    15 15
     class Functor f where
    
    16 16
       fmap ∷ ∀ a b. (a → b) → f a → f b
    
    17 17
       ...
    
    18 18
       	-- Defined in ‘GHC.Internal.Base’
    
    19 19
     Functor ∷ (★ → ★) → Constraint
    
    20
    -type Functor :: (★ → ★) → Constraint
    
    20
    +type Functor  (★ → ★) → Constraint
    
    21 21
     class Functor f where
    
    22 22
       fmap ∷ ∀ a b. (a → b) → f a → f b
    
    23 23
       (<$) ∷ ∀ a b. a → f b → f a
    
    ... ... @@ -77,7 +77,7 @@ datatypeName
    77 77
           (a ∷ k1).
    
    78 78
         Datatype d ⇒
    
    79 79
         t d f a → [Char]
    
    80
    -type Datatype :: ∀ {k}. k → Constraint
    
    80
    +type Datatype  ∀ {k}. k → Constraint
    
    81 81
     class Datatype d where
    
    82 82
       datatypeName ∷ ∀ k1 (t ∷ k → (k1 → ★) → k1 → ★) (f ∷ k1 → ★)
    
    83 83
                        (a ∷ k1).
    

  • testsuite/tests/ghci/scripts/T8959b.stderr
    1
    -
    
    2 1
     T8959b.hs:5:7: error: [GHC-83865]
    
    3 2
         • Couldn't match expected type ‘Int → Int’ with actual type ‘()’
    
    4 3
         • In the expression: ()
    
    ... ... @@ -6,11 +5,12 @@ T8959b.hs:5:7: error: [GHC-83865]
    6 5
     
    
    7 6
     T8959b.hs:8:7: error: [GHC-83865]
    
    8 7
         • Couldn't match expected type ‘()’ with actual type ‘t0 → m0 t0’
    
    9
    -    • In the expression: proc x -> do return ⤙ x
    
    10
    -      In an equation for ‘bar’: bar = proc x -> do return ⤙ x
    
    8
    +    • In the expression: proc x  do return ⤙ x
    
    9
    +      In an equation for ‘bar’: bar = proc x  do return ⤙ x
    
    11 10
     
    
    12 11
     T8959b.hs:10:7: error: [GHC-83865]
    
    13 12
         • Couldn't match expected type ‘(∀ a. a → a) → a1’
    
    14 13
                       with actual type ‘()’
    
    15 14
         • In the expression: () ∷ (∀ a. a → a) → a
    
    16 15
           In an equation for ‘baz’: baz = () ∷ (∀ a. a → a) → a
    
    16
    +

  • testsuite/tests/ghci/scripts/all.T
    ... ... @@ -357,6 +357,7 @@ test('T20101', normal, ghci_script, ['T20101.script'])
    357 357
     test('T20206', normal, ghci_script, ['T20206.script'])
    
    358 358
     test('T20217', normal, ghci_script, ['T20217.script'])
    
    359 359
     test('T20455', normal, ghci_script, ['T20455.script'])
    
    360
    +test('print-unicode-syntax', normal, ghci_script, ['print-unicode-syntax.script'])
    
    360 361
     test('shadow-bindings', normal, ghci_script, ['shadow-bindings.script'])
    
    361 362
     test('T925', normal, ghci_script, ['T925.script'])
    
    362 363
     test('T7388', normal, ghci_script, ['T7388.script'])
    

  • testsuite/tests/ghci/scripts/print-unicode-syntax.script
    1
    +:set -fprint-unicode-syntax
    
    2
    +:set -XArrows -XImplicitParams -XMultiWayIf -XPatternSynonyms -XTemplateHaskell -XTypeFamilyDependencies
    
    3
    +
    
    4
    +---------------------------------------
    
    5
    +-- Double-colon checks
    
    6
    +
    
    7
    +import Data.Kind
    
    8
    +[d| type Foo :: Type |]
    
    9
    +
    
    10
    +:{
    
    11
    +foo :: (?imp :: Int) => Int
    
    12
    +foo = ?imp
    
    13
    +:}
    
    14
    +:t foo
    
    15
    +
    
    16
    +proc x -> (_ -< _) :: _
    
    17
    +
    
    18
    +---------------------------------------
    
    19
    +-- Rightwards arrow checks
    
    20
    +
    
    21
    +[d| type family Foo a = b | b -> c |]
    
    22
    +
    
    23
    +type family Foo a = b | b -> a
    
    24
    +:i Foo
    
    25
    +
    
    26
    +\_ -> [] 0
    
    27
    +
    
    28
    +case () of [] -> 0
    
    29
    +
    
    30
    +if | [] -> 0
    
    31
    +
    
    32
    +:{
    
    33
    +if | True -> 0
    
    34
    +   | True -> 1
    
    35
    +:}
    
    36
    +
    
    37
    +proc _ -> \_ -> undefined -< 0
    
    38
    +
    
    39
    +---------------------------------------
    
    40
    +-- Leftwards arrow checks
    
    41
    +
    
    42
    +[d| pattern Foo x <- Nothing |]
    
    43
    +
    
    44
    +[d| pattern Foo x <- Nothing where Foo _ = Nothing |]

  • testsuite/tests/ghci/scripts/print-unicode-syntax.stderr
    1
    +<interactive>:8:10: error: [GHC-44432]
    
    2
    +    • The standalone kind signature for ‘Foo’
    
    3
    +        lacks an accompanying binding
    
    4
    +    • In the Template Haskell quotation: [d| type Foo ∷ Type |]
    
    5
    +
    
    6
    +<interactive>:16:11: error: [GHC-03790]
    
    7
    +    Parse error in command: (_ ⤙ _) ∷ _
    
    8
    +
    
    9
    +<interactive>:21:5: error: [GHC-76037]
    
    10
    +    • Not in scope: type variable ‘c’
    
    11
    +    • In the Template Haskell quotation:
    
    12
    +        [d| type family Foo a = b | b → c |]
    
    13
    +
    
    14
    +<interactive>:26:7: error: [GHC-83865]
    
    15
    +    • Couldn't match expected type: t0 → t
    
    16
    +                  with actual type: [a0]
    
    17
    +    • The function ‘[]’ is applied to one visible argument,
    
    18
    +        but its type ‘[a]’ has none
    
    19
    +      In the expression: [] 0
    
    20
    +      In the expression: \ _ → [] 0
    
    21
    +    • Relevant bindings include
    
    22
    +        it ∷ p → t (bound at <interactive>:26:1)
    
    23
    +
    
    24
    +<interactive>:28:12: error: [GHC-83865]
    
    25
    +    • Couldn't match expected type ‘()’ with actual type ‘[a0]’
    
    26
    +    • In the pattern: []
    
    27
    +      In a case alternative: [] → 0
    
    28
    +      In the expression: case () of [] → 0
    
    29
    +
    
    30
    +<interactive>:30:6: error: [GHC-83865]
    
    31
    +    • Couldn't match expected type ‘Bool’ with actual type ‘[a0]’
    
    32
    +    • In the expression: []
    
    33
    +      In a stmt of a pattern guard for
    
    34
    +                     a multi-way if alternative:
    
    35
    +        []
    
    36
    +      In the expression: if | [] → 0
    
    37
    +
    
    38
    +<interactive>:34:6: warning: [GHC-53633] [-Woverlapping-patterns (in -Wdefault)]
    
    39
    +    Pattern match is redundant
    
    40
    +    In a multi-way if alternative: | True → ...
    
    41
    +
    
    42
    +<interactive>:37:11: error: [GHC-83865]
    
    43
    +    • Couldn't match expected type ‘()’ with actual type ‘(a0, b0)’
    
    44
    +    • In the expression: proc _ → \ _ → undefined ⤙ 0
    
    45
    +      In an equation for ‘it’: it = proc _ → \ _ → undefined ⤙ 0
    
    46
    +
    
    47
    +<interactive>:42:17: error: [GHC-76037]
    
    48
    +    • Not in scope: ‘x’
    
    49
    +    • In the Template Haskell quotation: [d| pattern Foo x ← Nothing |]
    
    50
    +
    
    51
    +<interactive>:44:17: error: [GHC-76037]
    
    52
    +    • Not in scope: ‘x’
    
    53
    +    • In the Template Haskell quotation:
    
    54
    +        [d| pattern Foo x ← Nothing where
    
    55
    +                            Foo _ = Nothing |]
    
    56
    +

  • testsuite/tests/ghci/scripts/print-unicode-syntax.stdout
    1
    +foo ∷ (?imp∷Int) ⇒ Int
    
    2
    +type Foo ∷ ★ → ★
    
    3
    +type family Foo a = b | b → a
    
    4
    +  	-- Defined at <interactive>:23:1
    
    5
    +0

  • testsuite/tests/ghci/should_run/T11825.stdout
    1
    -type X :: ★ → ★ → Constraint
    
    1
    +type X  ★ → ★ → Constraint
    
    2 2
     class X a b | a → b where
    
    3 3
       to ∷ a → b
    
    4 4
       {-# MINIMAL to #-}