...
 
Commits (16)
......@@ -806,9 +806,6 @@ validate-x86_64-linux-fedora27:
# which might result in some broken perf tests?
HADRIAN_ARGS: "--docs=no-sphinx --skip-perf"
# due to #16574 this currently fails
allow_failure: true
script:
- bash .gitlab/ci.sh configure
- bash .gitlab/ci.sh build_hadrian
......
......@@ -79,6 +79,7 @@ data DumpFlag
| Opt_D_dump_cpr_signatures
| Opt_D_dump_tc
| Opt_D_dump_tc_ast
| Opt_D_dump_hie
| Opt_D_dump_types
| Opt_D_dump_rules
| Opt_D_dump_cse
......
......@@ -426,14 +426,14 @@ extract_renamed_stuff mod_summary tc_result = do
hieFile <- mkHieFile mod_summary tc_result (fromJust rn_info)
let out_file = ml_hie_file $ ms_location mod_summary
liftIO $ writeHieFile out_file hieFile
liftIO $ dumpIfSet_dyn dflags Opt_D_dump_hie "HIE AST" FormatHaskell (ppr $ hie_asts hieFile)
-- Validate HIE files
when (gopt Opt_ValidateHie dflags) $ do
hs_env <- Hsc $ \e w -> return (e, w)
liftIO $ do
-- Validate Scopes
let mdl = hie_module hieFile
case validateScopes mdl $ getAsts $ hie_asts hieFile of
case validateScopes (hie_module hieFile) $ getAsts $ hie_asts hieFile of
[] -> putMsg dflags $ text "Got valid scopes"
xs -> do
putMsg dflags $ text "Got invalid scopes"
......@@ -446,7 +446,7 @@ extract_renamed_stuff mod_summary tc_result = do
putMsg dflags $ text "Got no roundtrip errors"
xs -> do
putMsg dflags $ text "Got roundtrip errors"
mapM_ (putMsg dflags) xs
mapM_ (putMsg (dopt_set dflags Opt_D_ppr_debug)) xs
return rn_info
......
......@@ -2744,6 +2744,8 @@ dynamic_flags_deps = [
(setDumpFlag Opt_D_dump_tc)
, make_ord_flag defGhcFlag "ddump-tc-ast"
(setDumpFlag Opt_D_dump_tc_ast)
, make_ord_flag defGhcFlag "ddump-hie"
(setDumpFlag Opt_D_dump_hie)
, make_ord_flag defGhcFlag "ddump-types"
(setDumpFlag Opt_D_dump_types)
, make_ord_flag defGhcFlag "ddump-rules"
......
......@@ -23,35 +23,6 @@ import qualified Data.Map as M
import qualified Data.Set as S
import Data.Function ( on )
import Data.List ( sortOn )
import Data.Foldable ( toList )
ppHies :: Outputable a => (HieASTs a) -> SDoc
ppHies (HieASTs asts) = M.foldrWithKey go "" asts
where
go k a rest = vcat $
[ "File: " <> ppr k
, ppHie a
, rest
]
ppHie :: Outputable a => HieAST a -> SDoc
ppHie = go 0
where
go n (Node inf sp children) = hang header n rest
where
rest = vcat $ map (go (n+2)) children
header = hsep
[ "Node"
, ppr sp
, ppInfo inf
]
ppInfo :: Outputable a => NodeInfo a -> SDoc
ppInfo ni = hsep
[ ppr $ toList $ nodeAnnotations ni
, ppr $ nodeType ni
, ppr $ M.toList $ nodeIdentifiers ni
]
type Diff a = a -> a -> [SDoc]
......
......@@ -5,9 +5,11 @@ For more information see https://gitlab.haskell.org/ghc/ghc/wikis/hie-files
-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
module GHC.Iface.Ext.Types where
import GhcPrelude
......@@ -19,6 +21,7 @@ import GHC.Iface.Type
import Module ( ModuleName, Module )
import Name ( Name )
import Outputable hiding ( (<>) )
import qualified Outputable as O ( (<>) )
import SrcLoc ( RealSrcSpan )
import Avail
......@@ -210,6 +213,15 @@ instance Binary (HieASTs TypeIndex) where
put_ bh asts = put_ bh $ M.toAscList $ getAsts asts
get bh = HieASTs <$> fmap M.fromDistinctAscList (get bh)
instance Outputable a => Outputable (HieASTs a) where
ppr (HieASTs asts) = M.foldrWithKey go "" asts
where
go k a rest = vcat $
[ "File: " O.<> ppr k
, ppr a
, rest
]
data HieAST a =
Node
......@@ -229,6 +241,11 @@ instance Binary (HieAST TypeIndex) where
<*> get bh
<*> get bh
instance Outputable a => Outputable (HieAST a) where
ppr (Node ni sp ch) = hang header 2 rest
where
header = text "Node@" O.<> ppr sp O.<> ":" <+> ppr ni
rest = vcat (map ppr ch)
-- | The information stored in one AST node.
--
......@@ -255,6 +272,22 @@ instance Binary (NodeInfo TypeIndex) where
<*> get bh
<*> fmap (M.fromList) (get bh)
instance Outputable a => Outputable (NodeInfo a) where
ppr (NodeInfo anns typs idents) = braces $ fsep $ punctuate ", "
[ parens (text "annotations:" <+> ppr anns)
, parens (text "types:" <+> ppr typs)
, parens (text "identifier info:" <+> pprNodeIdents idents)
]
pprNodeIdents :: Outputable a => NodeIdentifiers a -> SDoc
pprNodeIdents ni = braces $ fsep $ punctuate ", " $ map go $ M.toList ni
where
go (i,id) = parens $ hsep $ punctuate ", " [pprIdentifier i, ppr id]
pprIdentifier :: Identifier -> SDoc
pprIdentifier (Left mod) = text "module" <+> ppr mod
pprIdentifier (Right name) = text "name" <+> ppr name
type Identifier = Either ModuleName Name
type NodeIdentifiers a = M.Map Identifier (IdentifierDetails a)
......@@ -269,7 +302,7 @@ data IdentifierDetails a = IdentifierDetails
} deriving (Eq, Functor, Foldable, Traversable)
instance Outputable a => Outputable (IdentifierDetails a) where
ppr x = text "IdentifierDetails" <+> ppr (identType x) <+> ppr (identInfo x)
ppr x = text "Details: " <+> ppr (identType x) <+> ppr (identInfo x)
instance Semigroup (IdentifierDetails a) where
d1 <> d2 = IdentifierDetails (identType d1 <|> identType d2)
......@@ -284,7 +317,7 @@ instance Binary (IdentifierDetails TypeIndex) where
put_ bh $ S.toAscList $ identInfo dets
get bh = IdentifierDetails
<$> get bh
<*> fmap (S.fromDistinctAscList) (get bh)
<*> fmap S.fromDistinctAscList (get bh)
-- | Different contexts under which identifiers exist
......@@ -330,10 +363,32 @@ data ContextInfo
-- | Record field
| RecField RecFieldContext (Maybe Span)
deriving (Eq, Ord, Show)
deriving (Eq, Ord)
instance Outputable ContextInfo where
ppr = text . show
ppr (Use) = text "usage"
ppr (MatchBind) = text "LHS of a match group"
ppr (IEThing x) = ppr x
ppr (TyDecl) = text "bound in a type signature declaration"
ppr (ValBind t sc sp) =
ppr t <+> text "value bound with scope:" <+> ppr sc <+> pprBindSpan sp
ppr (PatternBind sc1 sc2 sp) =
text "bound in a pattern with scope:"
<+> ppr sc1 <+> "," <+> ppr sc2
<+> pprBindSpan sp
ppr (ClassTyDecl sp) =
text "bound in a class type declaration" <+> pprBindSpan sp
ppr (Decl d sp) =
text "declaration of" <+> ppr d <+> pprBindSpan sp
ppr (TyVarBind sc1 sc2) =
text "type variable binding with scope:"
<+> ppr sc1 <+> "," <+> ppr sc2
ppr (RecField ctx sp) =
text "record field" <+> ppr ctx <+> pprBindSpan sp
pprBindSpan :: Maybe Span -> SDoc
pprBindSpan Nothing = text ""
pprBindSpan (Just sp) = text "at:" <+> ppr sp
instance Binary ContextInfo where
put_ bh Use = putByte bh 0
......@@ -383,14 +438,19 @@ instance Binary ContextInfo where
9 -> return MatchBind
_ -> panic "Binary ContextInfo: invalid tag"
-- | Types of imports and exports
data IEType
= Import
| ImportAs
| ImportHiding
| Export
deriving (Eq, Enum, Ord, Show)
deriving (Eq, Enum, Ord)
instance Outputable IEType where
ppr Import = text "import"
ppr ImportAs = text "import as"
ppr ImportHiding = text "import hiding"
ppr Export = text "export"
instance Binary IEType where
put_ bh b = putByte bh (fromIntegral (fromEnum b))
......@@ -402,7 +462,13 @@ data RecFieldContext
| RecFieldAssign
| RecFieldMatch
| RecFieldOcc
deriving (Eq, Enum, Ord, Show)
deriving (Eq, Enum, Ord)
instance Outputable RecFieldContext where
ppr RecFieldDecl = text "declaration"
ppr RecFieldAssign = text "assignment"
ppr RecFieldMatch = text "pattern match"
ppr RecFieldOcc = text "occurence"
instance Binary RecFieldContext where
put_ bh b = putByte bh (fromIntegral (fromEnum b))
......@@ -412,13 +478,16 @@ instance Binary RecFieldContext where
data BindType
= RegularBind
| InstanceBind
deriving (Eq, Ord, Show, Enum)
deriving (Eq, Ord, Enum)
instance Outputable BindType where
ppr RegularBind = "regular"
ppr InstanceBind = "instance"
instance Binary BindType where
put_ bh b = putByte bh (fromIntegral (fromEnum b))
get bh = do x <- getByte bh; pure $! (toEnum (fromIntegral x))
data DeclType
= FamDec -- ^ type or data family
| SynDec -- ^ type synonym
......@@ -427,18 +496,26 @@ data DeclType
| PatSynDec -- ^ pattern synonym
| ClassDec -- ^ class declaration
| InstDec -- ^ instance declaration
deriving (Eq, Ord, Show, Enum)
deriving (Eq, Ord, Enum)
instance Outputable DeclType where
ppr FamDec = text "type or data family"
ppr SynDec = text "type synonym"
ppr DataDec = text "data"
ppr ConDec = text "constructor"
ppr PatSynDec = text "pattern synonym"
ppr ClassDec = text "class"
ppr InstDec = text "instance"
instance Binary DeclType where
put_ bh b = putByte bh (fromIntegral (fromEnum b))
get bh = do x <- getByte bh; pure $! (toEnum (fromIntegral x))
data Scope
= NoScope
| LocalScope Span
| ModuleScope
deriving (Eq, Ord, Show, Typeable, Data)
deriving (Eq, Ord, Typeable, Data)
instance Outputable Scope where
ppr NoScope = text "NoScope"
......@@ -488,9 +565,12 @@ data TyVarScope
-- method type signature
deriving (Eq, Ord)
instance Show TyVarScope where
show (ResolvedScopes sc) = show sc
show _ = error "UnresolvedScope"
instance Outputable TyVarScope where
ppr (ResolvedScopes xs) =
text "type variable scopes:" <+> hsep (punctuate ", " $ map ppr xs)
ppr (UnresolvedScope ns sp) =
text "unresolved type variable scope for name" O.<> plural ns
<+> pprBindSpan sp
instance Binary TyVarScope where
put_ bh (ResolvedScopes xs) = do
......
......@@ -177,6 +177,12 @@ These flags dump various information from GHC's typechecker and renamer.
Dump typechecker output as a syntax tree
.. ghc-flag:: -ddump-hie
:shortdesc: Dump the hie file syntax tree
:type: dynamic
Dump the hie file syntax tree if we are generating extended interface files
.. ghc-flag:: -ddump-splices
:shortdesc: Dump TH spliced expressions, and what they evaluate to
:type: dynamic
......
......@@ -48,7 +48,7 @@ testRules = do
-- Using program shipped with testsuite to generate ghcconfig file.
root -/- ghcConfigProgPath %> \_ -> do
ghc0Path <- (<.> exe) <$> getCompilerPath "stage0"
ghc0Path <- getCompilerPath "stage0"
-- Invoke via bash to work around #17362.
-- Reasons why this is required are not entirely clear.
cmd ["bash"] ["-c", ghc0Path ++ " " ++ ghcConfigHsPath ++ " -o " ++ (root -/- ghcConfigProgPath)]
......
......@@ -106,7 +106,7 @@ runTestBuilderArgs = builder RunTest ? do
, arg "-e", arg $ "config.accept=" ++ show accept
, arg "-e", arg $ "config.accept_platform=" ++ show acceptPlatform
, arg "-e", arg $ "config.accept_os=" ++ show acceptOS
, arg "-e", arg $ "config.exeext=" ++ quote exe
, arg "-e", arg $ "config.exeext=" ++ quote (if null exe then "" else "."<>exe)
, arg "-e", arg $ "config.compiler_debugged=" ++
show debugged
, arg "-e", arg $ asBool "ghc_with_native_codegen=" withNativeCodeGen
......
......@@ -215,6 +215,8 @@ class Foldable t where
-- | A variant of 'foldr' that has no base case,
-- and thus may only be applied to non-empty structures.
--
-- ⚠️ This function is non-total and will raise a runtime exception if the structure happens to be empty.
--
-- @'foldr1' f = 'List.foldr1' f . 'toList'@
foldr1 :: (a -> a -> a) -> t a -> a
foldr1 f xs = fromMaybe (errorWithoutStackTrace "foldr1: empty structure")
......@@ -227,6 +229,8 @@ class Foldable t where
-- | A variant of 'foldl' that has no base case,
-- and thus may only be applied to non-empty structures.
--
-- ⚠️ This function is non-total and will raise a runtime exception if the structure happens to be empty.
--
-- @'foldl1' f = 'List.foldl1' f . 'toList'@
foldl1 :: (a -> a -> a) -> t a -> a
foldl1 f xs = fromMaybe (errorWithoutStackTrace "foldl1: empty structure")
......@@ -267,6 +271,14 @@ class Foldable t where
-- | The largest element of a non-empty structure.
--
-- ⚠️ This function is non-total and will raise a runtime exception if the structure happens to be empty.
--
-- === __Examples__
-- >>> maximum [1..10]
-- 10
-- >>> maximum []
-- *** Exception: Prelude.maximum: empty list
--
-- @since 4.8.0.0
maximum :: forall a . Ord a => t a -> a
maximum = fromMaybe (errorWithoutStackTrace "maximum: empty structure") .
......@@ -274,6 +286,14 @@ class Foldable t where
-- | The least element of a non-empty structure.
--
-- ⚠️ This function is non-total and will raise a runtime exception if the structure happens to be empty
--
-- === __Examples__
-- >>> minimum [1..10]
-- 1
-- >>> minimum []
-- *** Exception: Prelude.minimum: empty list
--
-- @since 4.8.0.0
minimum :: forall a . Ord a => t a -> a
minimum = fromMaybe (errorWithoutStackTrace "minimum: empty structure") .
......
Subproject commit 26ea79ceb2193a86f76a302a126be3319f22700d
Subproject commit 8fffea5ca319e85e1bc9e7cac39e5a2c8effefcc
TOP=../../../..
TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
./test_preprocessor.txt: builderMainLoop: invalid argument (Exec format error)
test('annotations', [extra_files(['AnnotationLet.hs']),
normalise_slashes,
ignore_stderr], makefile_test, ['annotations'])
test('parseTree', [extra_files(['AnnotationTuple.hs']),
normalise_slashes,
ignore_stderr], makefile_test, ['parseTree'])
test('comments', [extra_files(['CommentsTest.hs']),
ignore_stderr], makefile_test, ['comments'])
test('exampleTest', [extra_files(['AnnotationTuple.hs']),
ignore_stderr], makefile_test, ['exampleTest'])
test('listcomps', [extra_files(['ListComprehensions.hs']),
normalise_slashes,
ignore_stderr], makefile_test, ['listcomps'])
test('T10255', [extra_files(['Test10255.hs']),
ignore_stderr], makefile_test, ['T10255'])
......
[
(AK AnnotationLet.hs:1:1 AnnCloseC = [AnnotationLet.hs:17:1])
(AK AnnotationLet.hs:1:1 AnnModule = [AnnotationLet.hs:2:1-6])
(AK AnnotationLet.hs:1:1 AnnOpenC = [AnnotationLet.hs:4:1])
(AK AnnotationLet.hs:1:1 AnnWhere = [AnnotationLet.hs:2:28-32])
(AK AnnotationLet.hs:2:22-26 AnnCloseP = [AnnotationLet.hs:2:26])
(AK AnnotationLet.hs:2:22-26 AnnOpenP = [AnnotationLet.hs:2:22])
(AK AnnotationLet.hs:5:1-32 AnnAs = [AnnotationLet.hs:5:28-29])
(AK AnnotationLet.hs:5:1-32 AnnImport = [AnnotationLet.hs:5:1-6])
(AK AnnotationLet.hs:5:1-32 AnnQualified = [AnnotationLet.hs:5:8-16])
(AK AnnotationLet.hs:5:1-32 AnnSemi = [AnnotationLet.hs:6:1])
(AK AnnotationLet.hs:(7,1)-(11,12) AnnEqual = [AnnotationLet.hs:7:5])
(AK AnnotationLet.hs:(7,1)-(11,12) AnnFunId = [AnnotationLet.hs:7:1-3])
(AK AnnotationLet.hs:(7,1)-(11,12) AnnSemi = [AnnotationLet.hs:12:1])
(AK AnnotationLet.hs:(7,7)-(11,12) AnnIn = [AnnotationLet.hs:11:7-8])
(AK AnnotationLet.hs:(7,7)-(11,12) AnnLet = [AnnotationLet.hs:7:7-9])
(AK AnnotationLet.hs:8:9-15 AnnEqual = [AnnotationLet.hs:8:13])
(AK AnnotationLet.hs:8:9-15 AnnFunId = [AnnotationLet.hs:8:9])
(AK AnnotationLet.hs:8:9-15 AnnSemi = [AnnotationLet.hs:9:9])
(AK AnnotationLet.hs:9:9-15 AnnEqual = [AnnotationLet.hs:9:13])
(AK AnnotationLet.hs:9:9-15 AnnFunId = [AnnotationLet.hs:9:9])
(AK AnnotationLet.hs:9:9-15 AnnSemi = [AnnotationLet.hs:10:9])
(AK AnnotationLet.hs:10:9-13 AnnEqual = [AnnotationLet.hs:10:11])
(AK AnnotationLet.hs:10:9-13 AnnFunId = [AnnotationLet.hs:10:9])
(AK AnnotationLet.hs:13:1-10 AnnInfix = [AnnotationLet.hs:13:1-6])
(AK AnnotationLet.hs:13:1-10 AnnSemi = [AnnotationLet.hs:14:1])
(AK AnnotationLet.hs:13:1-10 AnnVal = [AnnotationLet.hs:13:8])
(AK AnnotationLet.hs:15:1-40 AnnCloseP = [AnnotationLet.hs:15:14, AnnotationLet.hs:15:13])
(AK AnnotationLet.hs:15:1-40 AnnData = [AnnotationLet.hs:15:1-4])
(AK AnnotationLet.hs:15:1-40 AnnEqual = [AnnotationLet.hs:15:18])
(AK AnnotationLet.hs:15:1-40 AnnOpenP = [AnnotationLet.hs:15:6, AnnotationLet.hs:15:7])
(AK AnnotationLet.hs:15:1-40 AnnSemi = [AnnotationLet.hs:16:1])
(AK AnnotationLet.hs:15:6-14 AnnCloseP = [AnnotationLet.hs:15:14])
(AK AnnotationLet.hs:15:6-14 AnnOpenP = [AnnotationLet.hs:15:6])
(AK AnnotationLet.hs:15:7-13 AnnCloseP = [AnnotationLet.hs:15:13])
(AK AnnotationLet.hs:15:7-13 AnnOpenP = [AnnotationLet.hs:15:7])
(AK AnnotationLet.hs:15:20-28 AnnVbar = [AnnotationLet.hs:15:30])
(AK AnnotationLet.hs:15:24-28 AnnCloseP = [AnnotationLet.hs:15:28])
(AK AnnotationLet.hs:15:24-28 AnnOpenP = [AnnotationLet.hs:15:24])
(AK AnnotationLet.hs:15:36-40 AnnCloseP = [AnnotationLet.hs:15:40])
(AK AnnotationLet.hs:15:36-40 AnnOpenP = [AnnotationLet.hs:15:36])
]
[AnnotationLet.hs:2:1-6]
[]
AnnotationLet.hs:1:1
EOF: Just SrcSpanPoint ".\\AnnotationLet.hs" 18 1
{ListComprehensions.hs:1:1, ListComprehensions.hs:6:8-25,
ListComprehensions.hs:10:1-15, ListComprehensions.hs:10:8-15,
ListComprehensions.hs:11:1-30, ListComprehensions.hs:11:18-25,
ListComprehensions.hs:11:30, ListComprehensions.hs:12:1-27,
ListComprehensions.hs:12:8-15, ListComprehensions.hs:12:17-27,
ListComprehensions.hs:12:18-26, ListComprehensions.hs:13:1-25,
ListComprehensions.hs:13:8-16, ListComprehensions.hs:13:18-25,
ListComprehensions.hs:13:19-24, ListComprehensions.hs:17:1-16,
ListComprehensions.hs:17:1-25, ListComprehensions.hs:17:21-25,
ListComprehensions.hs:17:22-24, ListComprehensions.hs:18:1-16,
ListComprehensions.hs:(18,1)-(22,20),
ListComprehensions.hs:(18,18)-(22,20),
ListComprehensions.hs:(18,20)-(22,20), ListComprehensions.hs:18:22,
ListComprehensions.hs:18:22-26, ListComprehensions.hs:18:22-30,
ListComprehensions.hs:(18,22)-(21,34), ListComprehensions.hs:18:24,
ListComprehensions.hs:18:26, ListComprehensions.hs:18:28,
ListComprehensions.hs:18:30, ListComprehensions.hs:19:22,
ListComprehensions.hs:19:22-33,
ListComprehensions.hs:(19,22)-(21,34),
ListComprehensions.hs:19:27-33, ListComprehensions.hs:19:28,
ListComprehensions.hs:19:31-32, ListComprehensions.hs:20:22,
ListComprehensions.hs:20:22-34, ListComprehensions.hs:20:27-34,
ListComprehensions.hs:20:28-29, ListComprehensions.hs:20:32-33,
ListComprehensions.hs:21:22, ListComprehensions.hs:21:22-34,
ListComprehensions.hs:21:27-34, ListComprehensions.hs:21:28-29,
ListComprehensions.hs:21:32-33, ListComprehensions.hs:24:1-6,
ListComprehensions.hs:24:1-27, ListComprehensions.hs:24:11-15,
ListComprehensions.hs:24:11-27, ListComprehensions.hs:24:12-14,
ListComprehensions.hs:24:20-27, ListComprehensions.hs:24:21-26,
ListComprehensions.hs:25:1-6, ListComprehensions.hs:(25,1)-(28,14),
ListComprehensions.hs:25:8-10,
ListComprehensions.hs:(25,12)-(28,14),
ListComprehensions.hs:(25,14)-(28,14),
ListComprehensions.hs:25:16-20,
ListComprehensions.hs:(25,16)-(27,22), ListComprehensions.hs:26:16,
ListComprehensions.hs:26:16-23,
ListComprehensions.hs:(26,16)-(27,22),
ListComprehensions.hs:26:21-23, ListComprehensions.hs:27:21-22}
--------------------------------
[
(AK ListComprehensions.hs:1:1 AnnModule = [ListComprehensions.hs:6:1-6])
(AK ListComprehensions.hs:1:1 AnnWhere = [ListComprehensions.hs:6:27-31])
(AK ListComprehensions.hs:10:1-15 AnnImport = [ListComprehensions.hs:10:1-6])
(AK ListComprehensions.hs:10:1-15 AnnSemi = [ListComprehensions.hs:11:1])
(AK ListComprehensions.hs:11:1-30 AnnAs = [ListComprehensions.hs:11:27-28])
(AK ListComprehensions.hs:11:1-30 AnnImport = [ListComprehensions.hs:11:1-6])
(AK ListComprehensions.hs:11:1-30 AnnQualified = [ListComprehensions.hs:11:8-16])
(AK ListComprehensions.hs:11:1-30 AnnSemi = [ListComprehensions.hs:12:1])
(AK ListComprehensions.hs:12:1-27 AnnImport = [ListComprehensions.hs:12:1-6])
(AK ListComprehensions.hs:12:1-27 AnnSemi = [ListComprehensions.hs:13:1])
(AK ListComprehensions.hs:12:17-27 AnnCloseP = [ListComprehensions.hs:12:27])
(AK ListComprehensions.hs:12:17-27 AnnOpenP = [ListComprehensions.hs:12:17])
(AK ListComprehensions.hs:13:1-25 AnnImport = [ListComprehensions.hs:13:1-6])
(AK ListComprehensions.hs:13:1-25 AnnSemi = [ListComprehensions.hs:17:1])
(AK ListComprehensions.hs:13:18-25 AnnCloseP = [ListComprehensions.hs:13:25])
(AK ListComprehensions.hs:13:18-25 AnnOpenP = [ListComprehensions.hs:13:18])
(AK ListComprehensions.hs:17:1-25 AnnDcolon = [ListComprehensions.hs:17:18-19])
(AK ListComprehensions.hs:17:1-25 AnnSemi = [ListComprehensions.hs:18:1])
(AK ListComprehensions.hs:17:21-25 AnnCloseS = [ListComprehensions.hs:17:25])
(AK ListComprehensions.hs:17:21-25 AnnOpenS = [ListComprehensions.hs:17:21])
(AK ListComprehensions.hs:(18,1)-(22,20) AnnEqual = [ListComprehensions.hs:18:18])
(AK ListComprehensions.hs:(18,1)-(22,20) AnnFunId = [ListComprehensions.hs:18:1-16])
(AK ListComprehensions.hs:(18,1)-(22,20) AnnSemi = [ListComprehensions.hs:24:1])
(AK ListComprehensions.hs:(18,20)-(22,20) AnnCloseS = [ListComprehensions.hs:22:20])
(AK ListComprehensions.hs:(18,20)-(22,20) AnnOpenS = [ListComprehensions.hs:18:20])
(AK ListComprehensions.hs:(18,20)-(22,20) AnnVbar = [ListComprehensions.hs:19:20])
(AK ListComprehensions.hs:18:22-26 AnnVal = [ListComprehensions.hs:18:24])
(AK ListComprehensions.hs:18:22-30 AnnVal = [ListComprehensions.hs:18:28])
(AK ListComprehensions.hs:19:22-33 AnnLarrow = [ListComprehensions.hs:19:24-25])
(AK ListComprehensions.hs:19:22-33 AnnVbar = [ListComprehensions.hs:20:20])
(AK ListComprehensions.hs:19:27-33 AnnCloseS = [ListComprehensions.hs:19:33])
(AK ListComprehensions.hs:19:27-33 AnnDotdot = [ListComprehensions.hs:19:29-30])
(AK ListComprehensions.hs:19:27-33 AnnOpenS = [ListComprehensions.hs:19:27])
(AK ListComprehensions.hs:20:22-34 AnnLarrow = [ListComprehensions.hs:20:24-25])
(AK ListComprehensions.hs:20:22-34 AnnVbar = [ListComprehensions.hs:21:20])
(AK ListComprehensions.hs:20:27-34 AnnCloseS = [ListComprehensions.hs:20:34])
(AK ListComprehensions.hs:20:27-34 AnnDotdot = [ListComprehensions.hs:20:30-31])
(AK ListComprehensions.hs:20:27-34 AnnOpenS = [ListComprehensions.hs:20:27])
(AK ListComprehensions.hs:21:22-34 AnnLarrow = [ListComprehensions.hs:21:24-25])
(AK ListComprehensions.hs:21:27-34 AnnCloseS = [ListComprehensions.hs:21:34])
(AK ListComprehensions.hs:21:27-34 AnnDotdot = [ListComprehensions.hs:21:30-31])
(AK ListComprehensions.hs:21:27-34 AnnOpenS = [ListComprehensions.hs:21:27])
(AK ListComprehensions.hs:24:1-27 AnnDcolon = [ListComprehensions.hs:24:8-9])
(AK ListComprehensions.hs:24:1-27 AnnSemi = [ListComprehensions.hs:25:1])
(AK ListComprehensions.hs:24:11-15 AnnCloseS = [ListComprehensions.hs:24:15])
(AK ListComprehensions.hs:24:11-15 AnnOpenS = [ListComprehensions.hs:24:11])
(AK ListComprehensions.hs:24:11-15 AnnRarrow = [ListComprehensions.hs:24:17-18])
(AK ListComprehensions.hs:24:11-27 AnnRarrow = [ListComprehensions.hs:24:17-18])
(AK ListComprehensions.hs:24:20-27 AnnCloseS = [ListComprehensions.hs:24:27])
(AK ListComprehensions.hs:24:20-27 AnnOpenS = [ListComprehensions.hs:24:20])
(AK ListComprehensions.hs:(25,1)-(28,14) AnnEqual = [ListComprehensions.hs:25:12])
(AK ListComprehensions.hs:(25,1)-(28,14) AnnFunId = [ListComprehensions.hs:25:1-6])
(AK ListComprehensions.hs:(25,1)-(28,14) AnnSemi = [ListComprehensions.hs:29:1])
(AK ListComprehensions.hs:(25,14)-(28,14) AnnCloseS = [ListComprehensions.hs:28:14])
(AK ListComprehensions.hs:(25,14)-(28,14) AnnOpenS = [ListComprehensions.hs:25:14])
(AK ListComprehensions.hs:(25,14)-(28,14) AnnVbar = [ListComprehensions.hs:26:14])
(AK ListComprehensions.hs:26:16-23 AnnComma = [ListComprehensions.hs:27:14])
(AK ListComprehensions.hs:26:16-23 AnnLarrow = [ListComprehensions.hs:26:18-19])
(AK ListComprehensions.hs:(26,16)-(27,22) AnnThen = [ListComprehensions.hs:27:16-19])
]
EOF: Just SrcSpanPoint ".\\ListComprehensions.hs" 29 1
[(AnnotationTuple.hs:14:20, [p], Unit 1),
(AnnotationTuple.hs:14:23-29, [p], Unit "hello"),
(AnnotationTuple.hs:14:35-37, [p], Unit 6.5),
(AnnotationTuple.hs:14:39, [m], ()),
(AnnotationTuple.hs:14:41-52, [p], Unit [5, 5, 6, 7]),
(AnnotationTuple.hs:16:8, [p], Unit 1),
(AnnotationTuple.hs:16:11-17, [p], Unit "hello"),
(AnnotationTuple.hs:16:20-22, [p], Unit 6.5),
(AnnotationTuple.hs:16:24, [m], ()),
(AnnotationTuple.hs:16:25, [m], ()),
(AnnotationTuple.hs:16:26, [m], ()), (<no location info>, [m], ())]
[
(AK AnnotationTuple.hs:1:1 AnnCloseC = [AnnotationTuple.hs:27:1])
(AK AnnotationTuple.hs:1:1 AnnModule = [AnnotationTuple.hs:3:1-6])
(AK AnnotationTuple.hs:1:1 AnnOpenC = [AnnotationTuple.hs:5:1])
(AK AnnotationTuple.hs:1:1 AnnWhere = [AnnotationTuple.hs:3:30-34])
(AK AnnotationTuple.hs:3:24-28 AnnCloseP = [AnnotationTuple.hs:3:28])
(AK AnnotationTuple.hs:3:24-28 AnnOpenP = [AnnotationTuple.hs:3:24])
(AK AnnotationTuple.hs:6:1-32 AnnAs = [AnnotationTuple.hs:6:28-29])
(AK AnnotationTuple.hs:6:1-32 AnnImport = [AnnotationTuple.hs:6:1-6])
(AK AnnotationTuple.hs:6:1-32 AnnQualified = [AnnotationTuple.hs:6:8-16])
(AK AnnotationTuple.hs:6:1-32 AnnSemi = [AnnotationTuple.hs:7:1])
(AK AnnotationTuple.hs:(8,1)-(11,14) AnnEqual = [AnnotationTuple.hs:8:5])
(AK AnnotationTuple.hs:(8,1)-(11,14) AnnFunId = [AnnotationTuple.hs:8:1-3])
(AK AnnotationTuple.hs:(8,1)-(11,14) AnnSemi = [AnnotationTuple.hs:13:1])
(AK AnnotationTuple.hs:(8,7)-(11,14) AnnIn = [AnnotationTuple.hs:11:7-8])
(AK AnnotationTuple.hs:(8,7)-(11,14) AnnLet = [AnnotationTuple.hs:8:7-9])
(AK AnnotationTuple.hs:9:9-13 AnnEqual = [AnnotationTuple.hs:9:11])
(AK AnnotationTuple.hs:9:9-13 AnnFunId = [AnnotationTuple.hs:9:9])
(AK AnnotationTuple.hs:9:9-13 AnnSemi = [AnnotationTuple.hs:10:9])
(AK AnnotationTuple.hs:10:9-13 AnnEqual = [AnnotationTuple.hs:10:11])
(AK AnnotationTuple.hs:10:9-13 AnnFunId = [AnnotationTuple.hs:10:9])
(AK AnnotationTuple.hs:11:10-14 AnnVal = [AnnotationTuple.hs:11:12])
(AK AnnotationTuple.hs:14:1-72 AnnEqual = [AnnotationTuple.hs:14:5])
(AK AnnotationTuple.hs:14:1-72 AnnFunId = [AnnotationTuple.hs:14:1-3])
(AK AnnotationTuple.hs:14:1-72 AnnSemi = [AnnotationTuple.hs:15:1])
(AK AnnotationTuple.hs:14:7-72 AnnVal = [AnnotationTuple.hs:14:13])
(AK AnnotationTuple.hs:14:19-53 AnnCloseP = [AnnotationTuple.hs:14:53])
(AK AnnotationTuple.hs:14:19-53 AnnOpenP = [AnnotationTuple.hs:14:19])
(AK AnnotationTuple.hs:14:20 AnnComma = [AnnotationTuple.hs:14:21])
(AK AnnotationTuple.hs:14:23-29 AnnComma = [AnnotationTuple.hs:14:33])
(AK AnnotationTuple.hs:14:35-37 AnnComma = [AnnotationTuple.hs:14:38])
(AK AnnotationTuple.hs:14:39 AnnComma = [AnnotationTuple.hs:14:39])
(AK AnnotationTuple.hs:14:41-52 AnnCloseS = [AnnotationTuple.hs:14:52])
(AK AnnotationTuple.hs:14:41-52 AnnOpenS = [AnnotationTuple.hs:14:41])
(AK AnnotationTuple.hs:14:42 AnnComma = [AnnotationTuple.hs:14:43])
(AK AnnotationTuple.hs:14:45 AnnComma = [AnnotationTuple.hs:14:46])
(AK AnnotationTuple.hs:14:48 AnnComma = [AnnotationTuple.hs:14:49])
(AK AnnotationTuple.hs:14:55-72 AnnCloseS = [AnnotationTuple.hs:14:72])
(AK AnnotationTuple.hs:14:55-72 AnnOpenS = [AnnotationTuple.hs:14:55])
(AK AnnotationTuple.hs:14:56-62 AnnComma = [AnnotationTuple.hs:14:63])
(AK AnnotationTuple.hs:14:61-62 AnnCloseP = [AnnotationTuple.hs:14:62])
(AK AnnotationTuple.hs:14:61-62 AnnOpenP = [AnnotationTuple.hs:14:61])
(AK AnnotationTuple.hs:16:1-41 AnnEqual = [AnnotationTuple.hs:16:5])
(AK AnnotationTuple.hs:16:1-41 AnnFunId = [AnnotationTuple.hs:16:1-3])
(AK AnnotationTuple.hs:16:1-41 AnnSemi = [AnnotationTuple.hs:17:1])
(AK AnnotationTuple.hs:16:7-27 AnnCloseP = [AnnotationTuple.hs:16:27])
(AK AnnotationTuple.hs:16:7-27 AnnOpenP = [AnnotationTuple.hs:16:7])
(AK AnnotationTuple.hs:16:8 AnnComma = [AnnotationTuple.hs:16:9])
(AK AnnotationTuple.hs:16:11-17 AnnComma = [AnnotationTuple.hs:16:18])
(AK AnnotationTuple.hs:16:20-22 AnnComma = [AnnotationTuple.hs:16:23])
(AK AnnotationTuple.hs:16:24 AnnComma = [AnnotationTuple.hs:16:24])
(AK AnnotationTuple.hs:16:25 AnnComma = [AnnotationTuple.hs:16:25])
(AK AnnotationTuple.hs:16:26 AnnComma = [AnnotationTuple.hs:16:26])
(AK AnnotationTuple.hs:16:33-41 AnnCloseP = [AnnotationTuple.hs:16:41])
(AK AnnotationTuple.hs:16:33-41 AnnOpenP = [AnnotationTuple.hs:16:33])
(AK AnnotationTuple.hs:16:39-40 AnnCloseP = [AnnotationTuple.hs:16:40])
(AK AnnotationTuple.hs:16:39-40 AnnOpenP = [AnnotationTuple.hs:16:39])
(AK AnnotationTuple.hs:18:1-28 AnnData = [AnnotationTuple.hs:18:1-4])
(AK AnnotationTuple.hs:18:1-28 AnnDcolon = [AnnotationTuple.hs:18:20-21])
(AK AnnotationTuple.hs:18:1-28 AnnFamily = [AnnotationTuple.hs:18:6-11])
(AK AnnotationTuple.hs:18:1-28 AnnSemi = [AnnotationTuple.hs:19:1])
(AK AnnotationTuple.hs:18:23 AnnRarrow = [AnnotationTuple.hs:18:25-26])
(AK AnnotationTuple.hs:18:23-28 AnnRarrow = [AnnotationTuple.hs:18:25-26])
(AK AnnotationTuple.hs:(20,1)-(24,14) AnnFunId = [AnnotationTuple.hs:20:1-5])
(AK AnnotationTuple.hs:(20,1)-(24,14) AnnSemi = [AnnotationTuple.hs:25:1])
(AK AnnotationTuple.hs:(21,7)-(24,14) AnnEqual = [AnnotationTuple.hs:24:7])
(AK AnnotationTuple.hs:(21,7)-(24,14) AnnVbar = [AnnotationTuple.hs:21:7])
(AK AnnotationTuple.hs:21:9-24 AnnComma = [AnnotationTuple.hs:22:7])
(AK AnnotationTuple.hs:21:9-24 AnnLarrow = [AnnotationTuple.hs:21:16-17])
(AK AnnotationTuple.hs:22:9-25 AnnComma = [AnnotationTuple.hs:23:7])
(AK AnnotationTuple.hs:22:9-25 AnnLarrow = [AnnotationTuple.hs:22:16-17])
(AK AnnotationTuple.hs:23:9-24 AnnLarrow = [AnnotationTuple.hs:23:16-17])
(AK AnnotationTuple.hs:26:1-10 AnnDcolon = [AnnotationTuple.hs:26:5-6])
(AK AnnotationTuple.hs:26:1-14 AnnEqual = [AnnotationTuple.hs:26:12])
]
EOF: Just SrcSpanPoint ".\\AnnotationTuple.hs" 32 1
......@@ -12,7 +12,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......@@ -35,7 +34,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......@@ -57,7 +55,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......@@ -81,7 +78,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......
......@@ -13,7 +13,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......
......@@ -12,7 +12,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......@@ -35,7 +34,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......@@ -57,7 +55,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......@@ -81,7 +78,6 @@ other dynamic, non-language, flag settings:
-fimplicit-import-qualified
-fshow-warning-groups
warning settings:
-Wmissing-monadfail-instances
-Wsemigroup
-Wnoncanonical-monoid-instances
-Wstar-is-type
......
......@@ -37,6 +37,13 @@ int FS(_stat) (const char *path, struct _stat *buffer);
int FS(_stat64) (const char *path, struct __stat64 *buffer);
int FS(_wstat) (const wchar_t *path, struct _stat *buffer);
int FS(_wstat64) (const wchar_t *path, struct __stat64 *buffer);
int FS(_wrename) (const wchar_t *from, const wchar_t *to);
int FS(rename) (const char *from, const char *to);
int FS(unlink) (const char *filename);
int FS(_unlink) (const char *filename);
int FS(_wunlink) (const wchar_t *filename);
int FS(remove) (const char *path);
int FS(_wremove) (const wchar_t *path);
#else
FILE *FS(fopen) (const char* filename, const char* mode);
......
Subproject commit 4089deb3295c28d6bca7d67322b408469a6f6496
Subproject commit dff4ed1acf9ebbdd004fc833a474dc8c16a90f5b