diff options
| -rw-r--r-- | compiler/rename/RnNames.lhs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/compiler/rename/RnNames.lhs b/compiler/rename/RnNames.lhs index 6b98283afd..31ab4c78c8 100644 --- a/compiler/rename/RnNames.lhs +++ b/compiler/rename/RnNames.lhs @@ -411,17 +411,20 @@ used for source code. *** See "THE NAMING STORY" in HsDecls **** -Associated data types: Instances declarations may contain definitions of -associated data types whose data constructors we need to collect, too. -However, we need to be careful with the handling of the data type constructor -of each asscociated type, as it is already defined in the corresponding -class. We make a new name for it, but don't return it in the 'AvailInfo' (to -avoid raising a duplicate declaration error; see the helper -'unavail_main_name'). +Instances of indexed types +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Indexed data/newtype instances contain data constructors that we need to +collect, too. Moreover, we need to descend into the data/newtypes instances +of associated families. + +We need to be careful with the handling of the type constructor of each type +instance as the family constructor is already defined, and we want to avoid +raising a duplicate declaration error. So, we make a new name for it, but +don't return it in the 'AvailInfo'. \begin{code} getLocalDeclBinders :: TcGblEnv -> HsGroup RdrName -> RnM [Name] -getLocalDeclBinders gbl_env (HsGroup {hs_valds = ValBindsIn val_decls val_sigs, +getLocalDeclBinders gbl_env (HsGroup {hs_valds = ValBindsIn val_decls val_sigs, hs_tyclds = tycl_decls, hs_instds = inst_decls, hs_fords = foreign_decls }) |
