Cheng Shao pushed to branch wip/libffi-3.5.0 at Glasgow Haskell Compiler / GHC
Commits:
-
35826d8b
by Matthew Pickering at 2025-06-08T22:00:41+01:00
-
e2467dbd
by Ryan Hendrickson at 2025-06-09T13:07:05-04:00
-
4ebbaf16
by Cheng Shao at 2025-06-11T03:59:52+00:00
23 changed files:
- compiler/GHC/Hs/Binds.hs
- compiler/GHC/Hs/Decls.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Iface/Syntax.hs
- compiler/GHC/Iface/Type.hs
- compiler/GHC/Parser/PostProcess.hs
- hadrian/doc/flavours.md
- hadrian/doc/user-settings.md
- hadrian/src/Context.hs
- hadrian/src/Context/Path.hs
- hadrian/src/Flavour.hs
- hadrian/src/Flavour/Type.hs
- hadrian/src/Settings/Builders/Ghc.hs
- hadrian/src/Settings/Default.hs
- hadrian/src/Settings/Flavours/Release.hs
- libffi-tarballs
- testsuite/tests/ghci/scripts/T12550.stdout
- testsuite/tests/ghci/scripts/T8959b.stderr
- testsuite/tests/ghci/scripts/all.T
- + testsuite/tests/ghci/scripts/print-unicode-syntax.script
- + testsuite/tests/ghci/scripts/print-unicode-syntax.stderr
- + testsuite/tests/ghci/scripts/print-unicode-syntax.stdout
- testsuite/tests/ghci/should_run/T11825.stdout
Changes:
... | ... | @@ -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
|
... | ... | @@ -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
|
... | ... | @@ -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 "<-"
|
... | ... | @@ -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
|
... | ... | @@ -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
|
... | ... | @@ -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)
|
... | ... | @@ -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 |
... | ... | @@ -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
|
... | ... | @@ -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,
|
... | ... | @@ -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
|
... | ... | @@ -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
|
... | ... | @@ -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 |
... | ... | @@ -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 |
... | ... | @@ -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
|
... | ... | @@ -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" } |
1 | -Subproject commit ac7fa3132d382056837cad297ab4c66418febb69 |
|
1 | +Subproject commit 1a5955e69b7b139b066cc31507676afc24959dbd |
... | ... | @@ -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).
|
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 | + |
... | ... | @@ -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'])
|
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 |] |
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 | + |
1 | +foo ∷ (?imp∷Int) ⇒ Int
|
|
2 | +type Foo ∷ ★ → ★
|
|
3 | +type family Foo a = b | b → a
|
|
4 | + -- Defined at <interactive>:23:1
|
|
5 | +0 |
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 #-}
|