summaryrefslogtreecommitdiff
path: root/compiler/hsSyn/HsSyn.hs
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2019-09-11 21:19:39 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-09-20 05:14:34 -0400
commit5119296440e6846c553c72b8a93afc5ecfa576f0 (patch)
treeff508560a4996afffb24bf3af5dfa9c56a7e5c77 /compiler/hsSyn/HsSyn.hs
parent4853d962289db1b32886ec73e824cd37c9c5c002 (diff)
downloadhaskell-5119296440e6846c553c72b8a93afc5ecfa576f0.tar.gz
Module hierarchy: Hs (#13009)
Add GHC.Hs module hierarchy replacing hsSyn. Metric Increase: haddock.compiler
Diffstat (limited to 'compiler/hsSyn/HsSyn.hs')
-rw-r--r--compiler/hsSyn/HsSyn.hs153
1 files changed, 0 insertions, 153 deletions
diff --git a/compiler/hsSyn/HsSyn.hs b/compiler/hsSyn/HsSyn.hs
deleted file mode 100644
index 622f1b9c77..0000000000
--- a/compiler/hsSyn/HsSyn.hs
+++ /dev/null
@@ -1,153 +0,0 @@
-{-
-(c) The University of Glasgow 2006
-(c) The GRASP/AQUA Project, Glasgow University, 1992-1998
-
-\section{Haskell abstract syntax definition}
-
-This module glues together the pieces of the Haskell abstract syntax,
-which is declared in the various \tr{Hs*} modules. This module,
-therefore, is almost nothing but re-exporting.
--}
-
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE UndecidableInstances #-} -- Note [Pass sensitive types]
- -- in module PlaceHolder
-{-# LANGUAGE ConstraintKinds #-}
-{-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE FlexibleInstances #-} -- For deriving instance Data
-
-module HsSyn (
- module HsBinds,
- module HsDecls,
- module HsExpr,
- module HsImpExp,
- module HsLit,
- module HsPat,
- module HsTypes,
- module HsUtils,
- module HsDoc,
- module PlaceHolder,
- module HsExtension,
- Fixity,
-
- HsModule(..),
-) where
-
--- friends:
-import GhcPrelude
-
-import HsDecls
-import HsBinds
-import HsExpr
-import HsImpExp
-import HsLit
-import PlaceHolder
-import HsExtension
-import HsPat
-import HsTypes
-import BasicTypes ( Fixity, WarningTxt )
-import HsUtils
-import HsDoc
-import HsInstances () -- For Data instances
-
--- others:
-import Outputable
-import SrcLoc
-import Module ( ModuleName )
-
--- libraries:
-import Data.Data hiding ( Fixity )
-
--- | Haskell Module
---
--- All we actually declare here is the top-level structure for a module.
-data HsModule pass
- = HsModule {
- hsmodName :: Maybe (Located ModuleName),
- -- ^ @Nothing@: \"module X where\" is omitted (in which case the next
- -- field is Nothing too)
- hsmodExports :: Maybe (Located [LIE pass]),
- -- ^ Export list
- --
- -- - @Nothing@: export list omitted, so export everything
- --
- -- - @Just []@: export /nothing/
- --
- -- - @Just [...]@: as you would expect...
- --
- --
- -- - 'ApiAnnotation.AnnKeywordId's : 'ApiAnnotation.AnnOpen'
- -- ,'ApiAnnotation.AnnClose'
-
- -- For details on above see note [Api annotations] in ApiAnnotation
- hsmodImports :: [LImportDecl pass],
- -- ^ We snaffle interesting stuff out of the imported interfaces early
- -- on, adding that info to TyDecls/etc; so this list is often empty,
- -- downstream.
- hsmodDecls :: [LHsDecl pass],
- -- ^ Type, class, value, and interface signature decls
- hsmodDeprecMessage :: Maybe (Located WarningTxt),
- -- ^ reason\/explanation for warning/deprecation of this module
- --
- -- - 'ApiAnnotation.AnnKeywordId's : 'ApiAnnotation.AnnOpen'
- -- ,'ApiAnnotation.AnnClose'
- --
-
- -- For details on above see note [Api annotations] in ApiAnnotation
- hsmodHaddockModHeader :: Maybe LHsDocString
- -- ^ Haddock module info and description, unparsed
- --
- -- - 'ApiAnnotation.AnnKeywordId's : 'ApiAnnotation.AnnOpen'
- -- ,'ApiAnnotation.AnnClose'
-
- -- For details on above see note [Api annotations] in ApiAnnotation
- }
- -- ^ 'ApiAnnotation.AnnKeywordId's
- --
- -- - 'ApiAnnotation.AnnModule','ApiAnnotation.AnnWhere'
- --
- -- - 'ApiAnnotation.AnnOpen','ApiAnnotation.AnnSemi',
- -- 'ApiAnnotation.AnnClose' for explicit braces and semi around
- -- hsmodImports,hsmodDecls if this style is used.
-
- -- For details on above see note [Api annotations] in ApiAnnotation
--- deriving instance (DataIdLR name name) => Data (HsModule name)
-deriving instance Data (HsModule GhcPs)
-deriving instance Data (HsModule GhcRn)
-deriving instance Data (HsModule GhcTc)
-
-instance (p ~ GhcPass pass, OutputableBndrId p) => Outputable (HsModule p) where
-
- ppr (HsModule Nothing _ imports decls _ mbDoc)
- = pp_mb mbDoc $$ pp_nonnull imports
- $$ pp_nonnull decls
-
- ppr (HsModule (Just name) exports imports decls deprec mbDoc)
- = vcat [
- pp_mb mbDoc,
- case exports of
- Nothing -> pp_header (text "where")
- Just es -> vcat [
- pp_header lparen,
- nest 8 (fsep (punctuate comma (map ppr (unLoc es)))),
- nest 4 (text ") where")
- ],
- pp_nonnull imports,
- pp_nonnull decls
- ]
- where
- pp_header rest = case deprec of
- Nothing -> pp_modname <+> rest
- Just d -> vcat [ pp_modname, ppr d, rest ]
-
- pp_modname = text "module" <+> ppr name
-
-pp_mb :: Outputable t => Maybe t -> SDoc
-pp_mb (Just x) = ppr x
-pp_mb Nothing = empty
-
-pp_nonnull :: Outputable t => [t] -> SDoc
-pp_nonnull [] = empty
-pp_nonnull xs = vcat (map ppr xs)