X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Frename%2FParseIface.y;h=30fff39b7c4a94d5788c72751885cd3b13ebcd7f;hb=f0a01a1fc19bfa76aa36fa113942e1c57f3733f4;hp=9dacbee5f37460d25a9ef8f8d4d1419d6c9813ac;hpb=b78eb7be33564199dff5b03a452ea5d3b707f34d;p=ghc-hetmet.git diff --git a/ghc/compiler/rename/ParseIface.y b/ghc/compiler/rename/ParseIface.y index 9dacbee..30fff39 100644 --- a/ghc/compiler/rename/ParseIface.y +++ b/ghc/compiler/rename/ParseIface.y @@ -36,6 +36,7 @@ import Maybes import Outputable import GlaExts +import FastString ( tailFS ) #if __HASKELL1__ > 4 import Ratio ( (%) ) @@ -370,12 +371,13 @@ deprecs : {- empty -} { [] } | deprecs deprec ';' { $2 : $1 } deprec :: { RdrNameDeprecation } -deprec : STRING { DeprecMod $1 } - | deprec_name STRING { DeprecName $1 $2 } +deprec : STRING { Deprecation (IEModuleContents undefined) $1 } + | deprec_name STRING { Deprecation $1 $2 } -deprec_name :: { RdrName } - : var_name { $1 } - | tc_name { $1 } +-- SUP: TEMPORARY HACK +deprec_name :: { RdrNameIE } + : var_name { IEVar $1 } + | data_name { IEThingAbs $1 } ----------------------------------------------------------------------------- @@ -453,7 +455,7 @@ context_list1 : class { [$1] } class :: { HsPred RdrName } class : qcls_name atypes { (HsPClass $1 $2) } - | IPVARID '::' type { (HsPIParam (mkSysUnqual ipName $1) $3) } + | ipvar_name '::' type { (HsPIParam $1 $3) } types0 :: { [RdrNameHsType] {- Zero or more -} } types0 : {- empty -} { [ ] } @@ -481,7 +483,7 @@ atype : qtc_name { MonoTyVar $1 } | '(#' types0 '#)' { MonoTupleTy $2 False{-unboxed-} } | '[' type ']' { MonoListTy $2 } | '{' qcls_name atypes '}' { MonoDictTy $2 $3 } - | '{' IPVARID '::' type '}' { MonoIParamTy (mkSysUnqual ipName $2) $4 } + | '{' ipvar_name '::' type '}' { MonoIParamTy $2 $4 } | '(' type ')' { $2 } -- This one is dealt with via qtc_name @@ -527,6 +529,9 @@ qvar_name :: { RdrName } qvar_name : var_name { $1 } | qvar_fs { mkSysQual varName $1 } +ipvar_name :: { RdrName } + : IPVARID { mkSysUnqual ipName (tailFS $1) } + var_names :: { [RdrName] } var_names : { [] } | var_name var_names { $1 : $2 }