Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
c0cc5433
Commit
c0cc5433
authored
Jul 08, 2007
by
Ian Lynagh
Browse files
Implement -XKindSignatures
parent
f4e40607
Changes
3
Hide whitespace changes
Inline
Side-by-side
compiler/main/DynFlags.hs
View file @
c0cc5433
...
...
@@ -185,6 +185,7 @@ data DynFlag
|
Opt_RelaxedPolyRec
-- -X=RelaxedPolyRec
|
Opt_MagicHash
|
Opt_EmptyDataDecls
|
Opt_KindSignatures
-- optimisation opts
|
Opt_Strictness
...
...
@@ -1095,6 +1096,7 @@ fFlags = [
xFlags
::
[(
String
,
DynFlag
)]
xFlags
=
[
(
"MagicHash"
,
Opt_MagicHash
),
(
"KindSignatures"
,
Opt_KindSignatures
),
(
"EmptyDataDecls"
,
Opt_EmptyDataDecls
),
(
"FI"
,
Opt_FFI
),
-- support `-ffi'...
(
"FFI"
,
Opt_FFI
),
-- ...and also `-fffi'
...
...
@@ -1141,6 +1143,7 @@ glasgowExtsFlags = [ Opt_GlasgowExts
,
Opt_ScopedTypeVariables
,
Opt_MagicHash
,
Opt_EmptyDataDecls
,
Opt_KindSignatures
,
Opt_TypeFamilies
]
------------------
...
...
compiler/parser/Lexer.x
View file @
c0cc5433
...
...
@@ -649,7 +649,7 @@ reservedSymsFM = listToUFM $
,("-", ITminus, 0)
,("!", ITbang, 0)
,("*", ITstar, bit glaExtsBit .|.
,("*", ITstar, bit glaExtsBit .|.
bit kindSigsBit .|.
bit tyFamBit) -- For data T (a::*) = MkT
,(".", ITdot, bit tvBit) -- For 'forall a . t'
...
...
@@ -1518,6 +1518,7 @@ bangPatBit = 8 -- Tells the parser to understand bang-patterns
tyFamBit = 9 -- indexed type families: 'family' keyword and kind sigs
haddockBit = 10 -- Lex and parse Haddock comments
magicHashBit = 11 -- # in both functions and operators
kindSigsBit = 12 -- # in both functions and operators
glaExtsEnabled, ffiEnabled, parrEnabled :: Int -> Bool
glaExtsEnabled flags = testBit flags glaExtsBit
...
...
@@ -1531,6 +1532,7 @@ bangPatEnabled flags = testBit flags bangPatBit
tyFamEnabled flags = testBit flags tyFamBit
haddockEnabled flags = testBit flags haddockBit
magicHashEnabled flags = testBit flags magicHashBit
kindSigsEnabled flags = testBit flags kindSigsBit
-- PState for parsing options pragmas
--
...
...
@@ -1583,6 +1585,7 @@ mkPState buf loc flags =
.|. tyFamBit `setBitIf` dopt Opt_TypeFamilies flags
.|. haddockBit `setBitIf` dopt Opt_Haddock flags
.|. magicHashBit `setBitIf` dopt Opt_MagicHash flags
.|. kindSigsBit `setBitIf` dopt Opt_KindSignatures flags
--
setBitIf :: Int -> Bool -> Int
b `setBitIf` cond | cond = bit b
...
...
compiler/typecheck/TcTyClsDecls.lhs
View file @
c0cc5433
...
...
@@ -695,6 +695,7 @@ tcTyClDecl1 calc_isrec
; unbox_strict <- doptM Opt_UnboxStrictFields
; gla_exts <- doptM Opt_GlasgowExts
; empty_data_decls <- doptM Opt_EmptyDataDecls
; kind_signatures <- doptM Opt_KindSignatures
; gadt_ok <- doptM Opt_GADTs
; is_boot <- tcIsHsBoot -- Are we compiling an hs-boot file?
...
...
@@ -702,7 +703,7 @@ tcTyClDecl1 calc_isrec
; checkTc (gadt_ok || h98_syntax) (badGadtDecl tc_name)
-- Check that we don't use kind signatures without Glasgow extensions
; checkTc (
gla_ext
s || isNothing mb_ksig) (badSigTyDecl tc_name)
; checkTc (
kind_signature
s || isNothing mb_ksig) (badSigTyDecl tc_name)
-- Check that the stupid theta is empty for a GADT-style declaration
; checkTc (null stupid_theta || h98_syntax) (badStupidTheta tc_name)
...
...
@@ -1209,7 +1210,7 @@ newtypeFieldErr con_name n_flds
badSigTyDecl tc_name
= vcat [ ptext SLIT("Illegal kind signature") <+>
quotes (ppr tc_name)
, nest 2 (parens $ ptext SLIT("Use -
fglasgow-ext
s to allow kind signatures")) ]
, nest 2 (parens $ ptext SLIT("Use -
XKindSignature
s to allow kind signatures")) ]
badFamInstDecl tc_name
= vcat [ ptext SLIT("Illegal family instance for") <+>
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment