Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- checkDupRdrNames :: [Located RdrName] -> RnM ()
- checkShadowedRdrNames :: [Located RdrName] -> RnM ()
- checkDupNames :: [Name] -> RnM ()
- checkDupAndShadowedNames :: (GlobalRdrEnv, LocalRdrEnv) -> [Name] -> RnM ()
- dupNamesErr :: Outputable n => (n -> SrcSpan) -> NonEmpty n -> RnM ()
- checkTupSize :: Int -> RnM ()
- addFvRn :: FreeVars -> RnM (thing, FreeVars) -> RnM (thing, FreeVars)
- mapFvRn :: (a -> RnM (b, FreeVars)) -> [a] -> RnM ([b], FreeVars)
- mapMaybeFvRn :: (a -> RnM (b, FreeVars)) -> Maybe a -> RnM (Maybe b, FreeVars)
- warnUnusedMatches :: [Name] -> FreeVars -> RnM ()
- warnUnusedTypePatterns :: [Name] -> FreeVars -> RnM ()
- warnUnusedTopBinds :: [GlobalRdrElt] -> RnM ()
- warnUnusedLocalBinds :: [Name] -> FreeVars -> RnM ()
- checkUnusedRecordWildcard :: SrcSpan -> FreeVars -> Maybe [Name] -> RnM ()
- mkFieldEnv :: GlobalRdrEnv -> NameEnv (FieldLabelString, Name)
- unknownSubordinateErr :: SDoc -> RdrName -> SDoc
- badQualBndrErr :: RdrName -> SDoc
- typeAppErr :: String -> LHsType GhcPs -> SDoc
- data HsDocContext
- = TypeSigCtx SDoc
- | StandaloneKindSigCtx SDoc
- | PatCtx
- | SpecInstSigCtx
- | DefaultDeclCtx
- | ForeignDeclCtx (Located RdrName)
- | DerivDeclCtx
- | RuleCtx FastString
- | TyDataCtx (Located RdrName)
- | TySynCtx (Located RdrName)
- | TyFamilyCtx (Located RdrName)
- | FamPatCtx (Located RdrName)
- | ConDeclCtx [Located Name]
- | ClassDeclCtx (Located RdrName)
- | ExprWithTySigCtx
- | TypBrCtx
- | HsTypeCtx
- | GHCiCtx
- | SpliceTypeCtx (LHsType GhcPs)
- | ClassInstanceCtx
- | GenericCtx SDoc
- pprHsDocContext :: HsDocContext -> SDoc
- inHsDocContext :: HsDocContext -> SDoc
- withHsDocContext :: HsDocContext -> SDoc -> SDoc
- newLocalBndrRn :: Located RdrName -> RnM Name
- newLocalBndrsRn :: [Located RdrName] -> RnM [Name]
- bindLocalNames :: [Name] -> RnM a -> RnM a
- bindLocalNamesFV :: [Name] -> RnM (a, FreeVars) -> RnM (a, FreeVars)
- addNameClashErrRn :: RdrName -> [GlobalRdrElt] -> RnM ()
- extendTyVarEnvFVRn :: [Name] -> RnM (a, FreeVars) -> RnM (a, FreeVars)
- checkInferredVars :: HsDocContext -> Maybe SDoc -> LHsSigType GhcPs -> RnM ()
- noNestedForallsContextsErr :: SDoc -> LHsType GhcRn -> Maybe (SrcSpan, SDoc)
- addNoNestedForallsContextsErr :: HsDocContext -> SDoc -> LHsType GhcRn -> RnM ()
Documentation
checkDupNames :: [Name] -> RnM () Source #
checkDupAndShadowedNames :: (GlobalRdrEnv, LocalRdrEnv) -> [Name] -> RnM () Source #
dupNamesErr :: Outputable n => (n -> SrcSpan) -> NonEmpty n -> RnM () Source #
checkTupSize :: Int -> RnM () Source #
warnUnusedTopBinds :: [GlobalRdrElt] -> RnM () Source #
checkUnusedRecordWildcard :: SrcSpan -> FreeVars -> Maybe [Name] -> RnM () Source #
Checks to see if we need to warn for -Wunused-record-wildcards or -Wredundant-record-wildcards
mkFieldEnv :: GlobalRdrEnv -> NameEnv (FieldLabelString, Name) Source #
Make a map from selector names to field labels and parent tycon names, to be used when reporting unused record fields.
badQualBndrErr :: RdrName -> SDoc Source #
data HsDocContext Source #
pprHsDocContext :: HsDocContext -> SDoc Source #
inHsDocContext :: HsDocContext -> SDoc Source #
withHsDocContext :: HsDocContext -> SDoc -> SDoc Source #
addNameClashErrRn :: RdrName -> [GlobalRdrElt] -> RnM () Source #
:: HsDocContext | |
-> Maybe SDoc | The error msg if the signature is not allowed to contain manually written inferred variables. |
-> LHsSigType GhcPs | |
-> RnM () |
Throw an error message if a user attempts to quantify an inferred type
variable in a place where specificity cannot be observed. For example,
forall {a}. [a] -> [a]
would be rejected to the inferred type variable
{a}
, but forall a. [a] -> [a]
would be accepted.
See Note [Unobservably inferred type variables]
.
noNestedForallsContextsErr :: SDoc -> LHsType GhcRn -> Maybe (SrcSpan, SDoc) Source #
Examines a non-outermost type for forall
s or contexts, which are assumed
to be nested. For example, in the following declaration:
instance forall a. forall b. C (Either a b)
The outermost forall a
is fine, but the nested forall b
is not. We
invoke noNestedForallsContextsErr
on the type forall b. C (Either a b)
to catch the nested forall
and create a suitable error message.
noNestedForallsContextsErr
returns
if such a Just
err_msgforall
or
context is found, and returns Nothing
otherwise.
This is currently used in the following places:
- In GADT constructor types (in
rnConDecl
). SeeNote [GADT abstract syntax] (Wrinkle: No nested foralls or contexts)
in GHC.Hs.Type. - In instance declaration types (in
rnClsIntDecl
andrnSrcDerivDecl
in GHC.Rename.Module andrenameSig
in GHC.Rename.Bind). SeeNote [No nested foralls or contexts in instance types]
in GHC.Hs.Type.
addNoNestedForallsContextsErr :: HsDocContext -> SDoc -> LHsType GhcRn -> RnM () Source #
A common way to invoke noNestedForallsContextsErr
.