module RnSource (
rnSrcDecls, addTcgDUs,
rnTyClDecls, checkModDeprec,
- rnBindGroups, rnBindGroupsAndThen
+ rnBindGroups, rnBindGroupsAndThen, rnSplice
) where
#include "HsVersions.h"
import RdrName ( RdrName, isRdrDataCon, rdrNameOcc, elemLocalRdrEnv )
import RdrHsSyn ( extractGenericPatTyVars )
import RnHsSyn
-import RnExpr ( rnLExpr )
-import RnTypes ( rnLHsType, rnHsSigType, rnHsTypeFVs, rnContext )
+import RnExpr ( rnLExpr, checkTH )
+import RnTypes ( rnLHsType, rnLHsTypes, rnHsSigType, rnHsTypeFVs, rnContext )
import RnBinds ( rnTopBinds, rnBinds, rnMethodBinds,
rnBindsAndThen, renameSigs, checkSigs )
import RnEnv ( lookupTopBndrRn, lookupTopFixSigNames,
rnBindGroups :: [HsBindGroup RdrName] -> RnM ([HsBindGroup Name], DefUses)
-- This version assumes that the binders are already in scope
-- It's used only in 'mdo'
-rnBindGropus []
+rnBindGroups []
= returnM ([], emptyDUs)
rnBindGroups [HsBindGroup bind sigs _]
= rnBinds NotTopLevel bind sigs
con_names = [ n | L _ (ConDecl n _ _ _) <- condecls ]
rn_derivs Nothing = returnM (Nothing, emptyFVs)
- rn_derivs (Just ds) = rnContext data_doc ds `thenM` \ ds' ->
- returnM (Just ds', extractHsCtxtTyNames ds')
+ rn_derivs (Just ds) = rnLHsTypes data_doc ds `thenM` \ ds' ->
+ returnM (Just ds', extractHsTyNames_s ds')
rnTyClDecl (TySynonym {tcdLName = name, tcdTyVars = tyvars, tcdSynRhs = ty})
= lookupLocatedTopBndrRn name `thenM` \ name' ->
rnHsTyvar doc tyvar = lookupOccRn tyvar
\end{code}
+
+%*********************************************************
+%* *
+ Splices
+%* *
+%*********************************************************
+
+\begin{code}
+rnSplice :: HsSplice RdrName -> RnM (HsSplice Name, FreeVars)
+rnSplice (HsSplice n expr)
+ = checkTH expr "splice" `thenM_`
+ getSrcSpanM `thenM` \ loc ->
+ newLocalsRn [L loc n] `thenM` \ [n'] ->
+ rnLExpr expr `thenM` \ (expr', fvs) ->
+ returnM (HsSplice n' expr', fvs)
+\end{code}
\ No newline at end of file