Commit b9312420 authored by simonmar's avatar simonmar

[project @ 2002-03-14 15:47:52 by simonmar]

Remove the interface file parser, and move .hi-boot parsing into the
main parser.  The syntax of .hi-boot files is now greatly improved in
terms of readability; here's an example:

	module M where
	data T
	f :: T -> GHC.Base.Int

note that
	(a) layout can be used
	(b) there's no explcit export list; everything declared
	    is implicitly exported
	(c) Z-encoding of names is no longer required
	(d) Any identifier not declared in the current module must
	    still be quailified with the module which originally
	    defined it (eg. GHC.Base.Int above).

We'd like to relax (d), but that will come later.
parent 1553c778
__interface DataCon 1 0 where
__export DataCon DataCon dataConRepType isExistentialDataCon ;
1 data DataCon ;
1 dataConRepType :: DataCon -> TypeRep.Type ;
1 isExistentialDataCon :: DataCon -> GHCziBase.Bool ;
module DataCon where
data DataCon
dataConRepType :: DataCon -> TypeRep.Type
isExistentialDataCon :: DataCon -> GHC.Base.Bool
__interface IdInfo 1 0 where
__export IdInfo IdInfo GlobalIdDetails notGlobalId seqIdInfo vanillaIdInfo ;
1 data IdInfo ;
1 data GlobalIdDetails ;
1 notGlobalId :: GlobalIdDetails ;
1 seqIdInfo :: IdInfo -> GHCziBase.Z0T ;
1 vanillaIdInfo :: IdInfo ;
module IdInfo where
data IdInfo
data GlobalIdDetails
notGlobalId :: GlobalIdDetails
seqIdInfo :: IdInfo -> GHC.Base.()
vanillaIdInfo :: IdInfo
__interface MkId 1 0 where
__export MkId mkDataConId mkDataConWrapId ;
1 mkDataConId :: Name.Name -> DataCon.DataCon -> Var.Id ;
1 mkDataConWrapId :: DataCon.DataCon -> Var.Id ;
module MkId where
mkDataConId :: Name.Name -> DataCon.DataCon -> Var.Id
mkDataConWrapId :: DataCon.DataCon -> Var.Id
__interface Module 1 0 where
__export Module Module ;
1 data Module ;
module Module where
data Module
__interface Name 1 0 where
__export Name Name;
1 data Name ;
module Name where
data Name
__interface Var 1 0 where
__export Var Var TyVar Id setIdName ;
-- Used by Name
1 type Id = Var;
1 type TyVar = Var;
1 data Var ;
1 setIdName :: Id -> Name.Name -> Id ;
module Var where
-- Used by Name
type Id = Var
type TyVar = Var
data Var
setIdName :: Id -> Name.Name -> Id
__interface CgBindery 1 0 where
__export CgBindery CgBindings CgIdInfo VolatileLoc StableLoc nukeVolatileBinds;
1 type CgBindings = VarEnv.IdEnv CgIdInfo;
1 data CgIdInfo;
1 data VolatileLoc;
1 data StableLoc;
1 nukeVolatileBinds :: CgBindings -> CgBindings ;
module CgBindery where
type CgBindings = VarEnv.IdEnv CgIdInfo
data CgIdInfo
data VolatileLoc
data StableLoc
nukeVolatileBinds :: CgBindings -> CgBindings
__interface CgExpr 1 0 where
__export CgExpr cgExpr;
1 cgExpr :: StgSyn.StgExpr -> CgMonad.Code ;
module CgExpr where
cgExpr :: StgSyn.StgExpr -> CgMonad.Code
__interface CgUsages 1 0 where
__export CgUsages getSpRelOffset;
1 getSpRelOffset :: AbsCSyn.VirtualSpOffset -> CgMonad.FCode AbsCSyn.RegRelative ;
module CgUsages where
getSpRelOffset :: AbsCSyn.VirtualSpOffset -> CgMonad.FCode AbsCSyn.RegRelative
__interface ClosureInfo 1 0 where
__export ClosureInfo ClosureInfo LambdaFormInfo;
1 data LambdaFormInfo;
1 data ClosureInfo;
module ClosureInfo where
data LambdaFormInfo
data ClosureInfo
__interface CoreSyn 1 0 where
__export CoreSyn CoreExpr ;
module CoreSyn where
-- Needed by Var.lhs
1 type CoreExpr = Expr Var.Var;
1 data Expr b ;
data Expr b
type CoreExpr = Expr Var.Var
__interface Subst 2 0 where
__export Subst Subst substTyWith ;
1 data Subst;
1 substTyWith :: [Var.TyVar] -> [TypeRep.Type] -> TypeRep.Type -> TypeRep.Type ;
module Subst where
data Subst
substTyWith :: [Var.TyVar] -> [TypeRep.Type] -> TypeRep.Type -> TypeRep.Type
__interface DsExpr 1 0 where
__export DsExpr dsExpr dsLet;
1 dsExpr :: TcHsSyn.TypecheckedHsExpr -> DsMonad.DsM CoreSyn.CoreExpr ;
1 dsLet :: TcHsSyn.TypecheckedHsBinds -> CoreSyn.CoreExpr -> DsMonad.DsM CoreSyn.CoreExpr ;
module DsExpr where
dsExpr :: TcHsSyn.TypecheckedHsExpr -> DsMonad.DsM CoreSyn.CoreExpr
dsLet :: TcHsSyn.TypecheckedHsBinds -> CoreSyn.CoreExpr -> DsMonad.DsM CoreSyn.CoreExpr
__interface Match 1 0 where
__export Match match matchExport matchSimply matchSinglePat;
1 match :: [Var.Id] -> [DsUtils.EquationInfo] -> DsMonad.DsM DsUtils.MatchResult ;
1 matchExport :: [Var.Id] -> [DsUtils.EquationInfo] -> DsMonad.DsM DsUtils.MatchResult ;
1 matchSimply :: CoreSyn.CoreExpr -> HsExpr.HsMatchContext Var.Id -> TcHsSyn.TypecheckedPat -> CoreSyn.CoreExpr -> CoreSyn.CoreExpr -> DsMonad.DsM CoreSyn.CoreExpr ;
1 matchSinglePat :: CoreSyn.CoreExpr -> DsMonad.DsMatchContext -> TcHsSyn.TypecheckedPat -> DsUtils.MatchResult -> DsMonad.DsM DsUtils.MatchResult ;
module Match where
match :: [Var.Id]
-> [DsUtils.EquationInfo]
-> DsMonad.DsM DsUtils.MatchResult
matchExport
:: [Var.Id]
-> [DsUtils.EquationInfo]
-> DsMonad.DsM DsUtils.MatchResult
matchSimply
:: CoreSyn.CoreExpr
-> HsExpr.HsMatchContext Var.Id
-> TcHsSyn.TypecheckedPat
-> CoreSyn.CoreExpr
-> CoreSyn.CoreExpr
-> DsMonad.DsM CoreSyn.CoreExpr
matchSinglePat
:: CoreSyn.CoreExpr
-> DsMonad.DsMatchContext
-> TcHsSyn.TypecheckedPat
-> DsUtils.MatchResult
-> DsMonad.DsM DsUtils.MatchResult
__interface HsExpr 1 0 where
__export HsExpr HsExpr pprExpr Match GRHSs pprPatBind pprFunBind ;
module HsExpr where
1 data HsExpr i p ;
1 pprExpr :: __forall [i p] {Outputable.Outputable i, Outputable.Outputable p} => HsExpr.HsExpr i p -> Outputable.SDoc ;
data HsExpr i p
data Match a b
data GRHSs a b
1 data Match a b ;
1 data GRHSs a b ;
pprExpr :: (Outputable.Outputable i, Outputable.Outputable p) =>
HsExpr.HsExpr i p -> Outputable.SDoc
1 pprPatBind :: __forall [i p] {Outputable.Outputable i, Outputable.Outputable p} => p -> HsExpr.GRHSs i p -> Outputable.SDoc ;
1 pprFunBind :: __forall [i p] {Outputable.Outputable i, Outputable.Outputable p} => i -> [HsExpr.Match i p] -> Outputable.SDoc ;
pprPatBind :: (Outputable.Outputable i, Outputable.Outputable p) =>
p -> HsExpr.GRHSs i p -> Outputable.SDoc
pprFunBind :: (Outputable.Outputable i, Outputable.Outputable p) =>
i -> [HsExpr.Match i p] -> Outputable.SDoc
__interface MachMisc 1 0 where
__export MachMisc Instr fixedHdrSize fmtAsmLbl underscorePrefix;
1 fixedHdrSize :: GHCziBase.Int ;
2 fmtAsmLbl :: GHCziBase.String -> GHCziBase.String ;
1 underscorePrefix :: GHCziBase.Bool ;
1 data Instr ;
module MachMisc where
data Instr
fixedHdrSize :: GHC.Base.Int
fmtAsmLbl :: GHC.Base.String -> GHC.Base.String
underscorePrefix :: GHC.Base.Bool
__interface StixPrim 1 0 where
__export StixPrim amodeToStix;
1 amodeToStix :: AbsCSyn.CAddrMode -> Stix.StixExpr ;
module StixPrim where
amodeToStix :: AbsCSyn.CAddrMode -> Stix.StixExpr
Character classification
\begin{code}
{-# OPTIONS -#include "hs_ctype.h" #-}
module Ctype
( is_ident -- Char# -> Bool
, is_symbol -- Char# -> Bool
......@@ -9,26 +11,20 @@ module Ctype
, is_lower -- Char# -> Bool
, is_upper -- Char# -> Bool
, is_digit -- Char# -> Bool
, is_string -- Char# -> Bool
) where
\end{code}
\begin{code}
import Bits ( Bits((.&.)) )
import Int ( Int32 )
import Addr
import Char ( ord )
import GlaExts ( Char#, Char(..) )
\end{code}
Bit masks
\begin{code}
cIdent, cSymbol, cAny, cSpace, cLower, cUpper, cDigit :: Int
cIdent = 1
cSymbol = 2
cAny = 4
cSpace = 8
cLower = 16
cUpper = 32
cDigit = 64
#define NO_CDECLS
#include <hs_ctype.h>
\end{code}
The predicates below look costly, but aren't, GHC+GCC do a great job
......@@ -39,7 +35,17 @@ at the big case below.
is_ctype :: Int -> Char# -> Bool
is_ctype mask c = (fromIntegral (charType (C# c)) .&. fromIntegral mask) /= (0::Int32)
is_ident, is_symbol, is_any, is_space, is_lower, is_upper, is_digit :: Char# -> Bool
cIdent, cSymbol, cAny, cSpace, cLower, cUpper, cDigit, cString :: Int
cIdent = C_Ident :: Int
cSymbol = C_Symbol :: Int
cAny = C_Any :: Int
cSpace = C_Space :: Int
cLower = C_Lower :: Int
cUpper = C_Upper :: Int
cDigit = C_Digit :: Int
cString = C_String :: Int
is_ident, is_symbol, is_any, is_space, is_lower, is_upper, is_digit, is_string :: Char# -> Bool
is_ident = is_ctype cIdent
is_symbol = is_ctype cSymbol
is_any = is_ctype cAny
......@@ -47,268 +53,10 @@ is_space = is_ctype cSpace
is_lower = is_ctype cLower
is_upper = is_ctype cUpper
is_digit = is_ctype cDigit
\end{code}
is_string = is_ctype cString
We really mean .|. instead of + below, but GHC currently doesn't do
any constant folding with bitops. *sigh*
foreign label "hs_char_types" hs_char_types :: Addr
\begin{code}
charType :: Char -> Int
charType c = case c of
'\0' -> 0 -- \000
'\1' -> 0 -- \001
'\2' -> 0 -- \002
'\3' -> 0 -- \003
'\4' -> 0 -- \004
'\5' -> 0 -- \005
'\6' -> 0 -- \006
'\7' -> 0 -- \007
'\8' -> 0 -- \010
'\9' -> cAny + cSpace -- \t
'\10' -> cAny + cSpace -- \n
'\11' -> cAny + cSpace -- \v
'\12' -> cAny + cSpace -- \f
'\13' -> cAny + cSpace -- ^M
'\14' -> 0 -- \016
'\15' -> 0 -- \017
'\16' -> 0 -- \020
'\17' -> 0 -- \021
'\18' -> 0 -- \022
'\19' -> 0 -- \023
'\20' -> 0 -- \024
'\21' -> 0 -- \025
'\22' -> 0 -- \026
'\23' -> 0 -- \027
'\24' -> 0 -- \030
'\25' -> 0 -- \031
'\26' -> 0 -- \032
'\27' -> 0 -- \033
'\28' -> 0 -- \034
'\29' -> 0 -- \035
'\30' -> 0 -- \036
'\31' -> 0 -- \037
'\32' -> cAny + cSpace --
'\33' -> cAny + cSymbol -- !
'\34' -> cAny -- "
'\35' -> cAny + cSymbol -- #
'\36' -> cAny + cSymbol -- $
'\37' -> cAny + cSymbol -- %
'\38' -> cAny + cSymbol -- &
'\39' -> cAny + cIdent -- '
'\40' -> cAny -- (
'\41' -> cAny -- )
'\42' -> cAny + cSymbol -- *
'\43' -> cAny + cSymbol -- +
'\44' -> cAny -- ,
'\45' -> cAny + cSymbol -- -
'\46' -> cAny + cSymbol -- .
'\47' -> cAny + cSymbol -- /
'\48' -> cAny + cIdent + cDigit -- 0
'\49' -> cAny + cIdent + cDigit -- 1
'\50' -> cAny + cIdent + cDigit -- 2
'\51' -> cAny + cIdent + cDigit -- 3
'\52' -> cAny + cIdent + cDigit -- 4
'\53' -> cAny + cIdent + cDigit -- 5
'\54' -> cAny + cIdent + cDigit -- 6
'\55' -> cAny + cIdent + cDigit -- 7
'\56' -> cAny + cIdent + cDigit -- 8
'\57' -> cAny + cIdent + cDigit -- 9
'\58' -> cAny + cSymbol -- :
'\59' -> cAny -- ;
'\60' -> cAny + cSymbol -- <
'\61' -> cAny + cSymbol -- =
'\62' -> cAny + cSymbol -- >
'\63' -> cAny + cSymbol -- ?
'\64' -> cAny + cSymbol -- @
'\65' -> cAny + cIdent + cUpper -- A
'\66' -> cAny + cIdent + cUpper -- B
'\67' -> cAny + cIdent + cUpper -- C
'\68' -> cAny + cIdent + cUpper -- D
'\69' -> cAny + cIdent + cUpper -- E
'\70' -> cAny + cIdent + cUpper -- F
'\71' -> cAny + cIdent + cUpper -- G
'\72' -> cAny + cIdent + cUpper -- H
'\73' -> cAny + cIdent + cUpper -- I
'\74' -> cAny + cIdent + cUpper -- J
'\75' -> cAny + cIdent + cUpper -- K
'\76' -> cAny + cIdent + cUpper -- L
'\77' -> cAny + cIdent + cUpper -- M
'\78' -> cAny + cIdent + cUpper -- N
'\79' -> cAny + cIdent + cUpper -- O
'\80' -> cAny + cIdent + cUpper -- P
'\81' -> cAny + cIdent + cUpper -- Q
'\82' -> cAny + cIdent + cUpper -- R
'\83' -> cAny + cIdent + cUpper -- S
'\84' -> cAny + cIdent + cUpper -- T
'\85' -> cAny + cIdent + cUpper -- U
'\86' -> cAny + cIdent + cUpper -- V
'\87' -> cAny + cIdent + cUpper -- W
'\88' -> cAny + cIdent + cUpper -- X
'\89' -> cAny + cIdent + cUpper -- Y
'\90' -> cAny + cIdent + cUpper -- Z
'\91' -> cAny -- [
'\92' -> cAny + cSymbol -- backslash
'\93' -> cAny -- ]
'\94' -> cAny + cSymbol -- ^
'\95' -> cAny + cIdent + cLower -- _
'\96' -> cAny -- `
'\97' -> cAny + cIdent + cLower -- a
'\98' -> cAny + cIdent + cLower -- b
'\99' -> cAny + cIdent + cLower -- c
'\100' -> cAny + cIdent + cLower -- d
'\101' -> cAny + cIdent + cLower -- e
'\102' -> cAny + cIdent + cLower -- f
'\103' -> cAny + cIdent + cLower -- g
'\104' -> cAny + cIdent + cLower -- h
'\105' -> cAny + cIdent + cLower -- i
'\106' -> cAny + cIdent + cLower -- j
'\107' -> cAny + cIdent + cLower -- k
'\108' -> cAny + cIdent + cLower -- l
'\109' -> cAny + cIdent + cLower -- m
'\110' -> cAny + cIdent + cLower -- n
'\111' -> cAny + cIdent + cLower -- o
'\112' -> cAny + cIdent + cLower -- p
'\113' -> cAny + cIdent + cLower -- q
'\114' -> cAny + cIdent + cLower -- r
'\115' -> cAny + cIdent + cLower -- s
'\116' -> cAny + cIdent + cLower -- t
'\117' -> cAny + cIdent + cLower -- u
'\118' -> cAny + cIdent + cLower -- v
'\119' -> cAny + cIdent + cLower -- w
'\120' -> cAny + cIdent + cLower -- x
'\121' -> cAny + cIdent + cLower -- y
'\122' -> cAny + cIdent + cLower -- z
'\123' -> cAny -- {
'\124' -> cAny + cSymbol -- |
'\125' -> cAny -- }
'\126' -> cAny + cSymbol -- ~
'\127' -> 0 -- \177
'\128' -> 0 -- \200
'\129' -> 0 -- \201
'\130' -> 0 -- \202
'\131' -> 0 -- \203
'\132' -> 0 -- \204
'\133' -> 0 -- \205
'\134' -> 0 -- \206
'\135' -> 0 -- \207
'\136' -> 0 -- \210
'\137' -> 0 -- \211
'\138' -> 0 -- \212
'\139' -> 0 -- \213
'\140' -> 0 -- \214
'\141' -> 0 -- \215
'\142' -> 0 -- \216
'\143' -> 0 -- \217
'\144' -> 0 -- \220
'\145' -> 0 -- \221
'\146' -> 0 -- \222
'\147' -> 0 -- \223
'\148' -> 0 -- \224
'\149' -> 0 -- \225
'\150' -> 0 -- \226
'\151' -> 0 -- \227
'\152' -> 0 -- \230
'\153' -> 0 -- \231
'\154' -> 0 -- \232
'\155' -> 0 -- \233
'\156' -> 0 -- \234
'\157' -> 0 -- \235
'\158' -> 0 -- \236
'\159' -> 0 -- \237
'\160' -> cSpace --
'\161' -> cAny + cSymbol --
'\162' -> cAny + cSymbol --
'\163' -> cAny + cSymbol --
'\164' -> cAny + cSymbol --
'\165' -> cAny + cSymbol --
'\166' -> cAny + cSymbol --
'\167' -> cAny + cSymbol --
'\168' -> cAny + cSymbol --
'\169' -> cAny + cSymbol --
'\170' -> cAny + cSymbol --
'\171' -> cAny + cSymbol --
'\172' -> cAny + cSymbol --
'\173' -> cAny + cSymbol --
'\174' -> cAny + cSymbol --
'\175' -> cAny + cSymbol --
'\176' -> cAny + cSymbol --
'\177' -> cAny + cSymbol --
'\178' -> cAny + cSymbol --
'\179' -> cAny + cSymbol --
'\180' -> cAny + cSymbol --
'\181' -> cAny + cSymbol --
'\182' -> cAny + cSymbol --
'\183' -> cAny + cSymbol --
'\184' -> cAny + cSymbol --
'\185' -> cAny + cSymbol --
'\186' -> cAny + cSymbol --
'\187' -> cAny + cSymbol --
'\188' -> cAny + cSymbol --
'\189' -> cAny + cSymbol --
'\190' -> cAny + cSymbol --
'\191' -> cAny + cSymbol --
'\192' -> cAny + cIdent + cUpper --
'\193' -> cAny + cIdent + cUpper --
'\194' -> cAny + cIdent + cUpper --
'\195' -> cAny + cIdent + cUpper --
'\196' -> cAny + cIdent + cUpper --
'\197' -> cAny + cIdent + cUpper --
'\198' -> cAny + cIdent + cUpper --
'\199' -> cAny + cIdent + cUpper --
'\200' -> cAny + cIdent + cUpper --
'\201' -> cAny + cIdent + cUpper --
'\202' -> cAny + cIdent + cUpper --
'\203' -> cAny + cIdent + cUpper --
'\204' -> cAny + cIdent + cUpper --
'\205' -> cAny + cIdent + cUpper --
'\206' -> cAny + cIdent + cUpper --
'\207' -> cAny + cIdent + cUpper --
'\208' -> cAny + cIdent + cUpper --
'\209' -> cAny + cIdent + cUpper --
'\210' -> cAny + cIdent + cUpper --
'\211' -> cAny + cIdent + cUpper --
'\212' -> cAny + cIdent + cUpper --
'\213' -> cAny + cIdent + cUpper --
'\214' -> cAny + cIdent + cUpper --
'\215' -> cAny + cSymbol + cLower --
'\216' -> cAny + cIdent + cUpper --
'\217' -> cAny + cIdent + cUpper --
'\218' -> cAny + cIdent + cUpper --
'\219' -> cAny + cIdent + cUpper --
'\220' -> cAny + cIdent + cUpper --
'\221' -> cAny + cIdent + cUpper --
'\222' -> cAny + cIdent + cUpper --
'\223' -> cAny + cIdent --
'\224' -> cAny + cIdent + cLower --
'\225' -> cAny + cIdent + cLower --
'\226' -> cAny + cIdent + cLower --
'\227' -> cAny + cIdent + cLower --
'\228' -> cAny + cIdent + cLower --
'\229' -> cAny + cIdent + cLower --
'\230' -> cAny + cIdent + cLower --
'\231' -> cAny + cIdent + cLower --
'\232' -> cAny + cIdent + cLower --
'\233' -> cAny + cIdent + cLower --
'\234' -> cAny + cIdent + cLower --
'\235' -> cAny + cIdent + cLower --
'\236' -> cAny + cIdent + cLower --
'\237' -> cAny + cIdent + cLower --
'\238' -> cAny + cIdent + cLower --
'\239' -> cAny + cIdent + cLower --
'\240' -> cAny + cIdent + cLower --
'\241' -> cAny + cIdent + cLower --
'\242' -> cAny + cIdent + cLower --
'\243' -> cAny + cIdent + cLower --
'\244' -> cAny + cIdent + cLower --
'\245' -> cAny + cIdent + cLower --
'\246' -> cAny + cIdent + cLower --
'\247' -> cAny + cSymbol --
'\248' -> cAny + cIdent --
'\249' -> cAny + cIdent + cLower --
'\250' -> cAny + cIdent + cLower --
'\251' -> cAny + cIdent + cLower --
'\252' -> cAny + cIdent + cLower --
'\253' -> cAny + cIdent + cLower --
'\254' -> cAny + cIdent + cLower --
'\255' -> cAny + cIdent + cLower --
charType c = ord (indexCharOffAddr hs_char_types (ord c))
\end{code}
......@@ -16,14 +16,14 @@ An example that provokes the error is
--------------------------------------------------------
\begin{code}
{-# OPTIONS -#include "hs_ctype.h" #-}
module Lex (
ifaceParseErr, srcParseErr,
srcParseErr,
-- Monad for parser
Token(..), lexer, ParseResult(..), PState(..),
checkVersion, ExtFlags(..), mkPState,
ExtFlags(..), mkPState,
StringBuffer,
P, thenP, thenP_, returnP, mapP, failP, failMsgP,
......@@ -33,14 +33,10 @@ module Lex (
#include "HsVersions.h"
import Char ( isSpace, toUpper )
import List ( isSuffixOf )
import Char ( toUpper )
import PrelNames ( mkTupNameStr )
import CmdLineOpts ( opt_HiVersion, opt_NoHiCheck )
import ForeignCall ( Safety(..) )
import NewDemand ( StrictSig(..), Demand(..), Demands(..),
DmdResult(..), mkTopDmdType, evalDmd, lazyDmd )
import UniqFM ( listToUFM, lookupUFM )
import BasicTypes ( Boxity(..) )
import SrcLoc ( SrcLoc, incSrcLine, srcLocFile, srcLocLine,
......@@ -133,41 +129,7 @@ data Token
| ITstdcallconv
| ITccallconv
| ITdotnet
| ITinterface -- interface keywords
| IT__export
| ITdepends
| IT__forall
| ITletrec
| ITcoerce
| ITinlineMe
| ITinlineCall
| ITccall (Bool,Bool,Safety) -- (is_dyn, is_casm, may_gc)
| ITdefaultbranch
| ITbottom
| ITinteger_lit
| ITfloat_lit
| ITword_lit
| ITword64_lit
| ITint64_lit
| ITrational_lit
| ITaddr_lit
| ITlabel_lit
| ITlit_lit
| ITstring_lit
| ITtypeapp
| ITusage
| ITfuall
| ITarity
| ITspecialise
| ITnocaf
| ITunfold
| ITstrict StrictSig
| ITrules
| ITcprinfo
| ITdeprecated
| IT__scc
| ITsccAllCafs
| ITspecialise_prag -- Pragmas
| ITsource_prag
......@@ -331,50 +293,7 @@ ghcExtensionKeywordsFM = listToUFM $
("_ccall_", ITccall (False, False, PlayRisky)),
("_ccall_GC_", ITccall (False, False, PlaySafe False)),
("_casm_", ITccall (False, True, PlayRisky)),
("_casm_GC_", ITccall (False, True, PlaySafe False)),
-- interface keywords
("__interface", ITinterface),
("__export", IT__export),
("__depends", ITdepends),
("__forall", IT__forall),
("__letrec", ITletrec),
("__coerce", ITcoerce),
("__inline_me", ITinlineMe),
("__inline_call", ITinlineCall),
("__depends", ITdepends),
("__DEFAULT", ITdefaultbranch),
("__bot", ITbottom),
("__integer", ITinteger_lit),
("__float", ITfloat_lit),
("__int64", ITint64_lit),
("__word", ITword_lit),
("__word64", ITword64_lit),
("__rational", ITrational_lit),
("__addr", ITaddr_lit),
("__label", ITlabel_lit),
("__litlit", ITlit_lit),
("__string", ITstring_lit),
("__a", ITtypeapp),
("__u", ITusage),
("__fuall", ITfuall),
("__A", ITarity),
("__P", ITspecialise),
("__C", ITnocaf),
("__R", ITrules),