diff --git a/ghc/compiler/rename/RnNames.lhs b/ghc/compiler/rename/RnNames.lhs index 29c6babc4612ae3ed9abb573dfbeecb39b9b184a..b7335939ff7e97f9d89c84ca2d91f6024693724c 100644 --- a/ghc/compiler/rename/RnNames.lhs +++ b/ghc/compiler/rename/RnNames.lhs @@ -16,7 +16,7 @@ import CmdLineOpts ( opt_NoImplicitPrelude, opt_WarnDuplicateExports, import HsSyn ( HsModule(..), ImportDecl(..), HsDecl(..), TyClDecl(..), IE(..), ieName, - ForeignDecl(..), ExtName(..), ForKind(..), + ForeignDecl(..), ForKind(..), isDynamic, FixitySig(..), Sig(..), collectTopBinders ) @@ -291,9 +291,9 @@ getLocalDeclBinders new_name (ValD binds) do_one (rdr_name, loc) = new_name rdr_name loc `thenRn` \ name -> returnRn (Avail name) - -- foreign import declaration -getLocalDeclBinders new_name (ForD (ForeignDecl nm kind _ _ _ loc)) - | binds_haskell_name kind + -- foreign declarations +getLocalDeclBinders new_name (ForD (ForeignDecl nm kind _ dyn _ loc)) + | binds_haskell_name kind dyn = new_name nm loc `thenRn` \ name -> returnRn [Avail name] @@ -306,9 +306,9 @@ getLocalDeclBinders new_name decl NotAvailable -> returnRn [] -- Instance decls and suchlike other -> returnRn [avail] -binds_haskell_name (FoImport _) = True -binds_haskell_name FoLabel = True -binds_haskell_name FoExport = False +binds_haskell_name (FoImport _) _ = True +binds_haskell_name FoLabel _ = True +binds_haskell_name FoExport ext_nm = isDynamic ext_nm fixitiesFromLocalDecls :: GlobalRdrEnv -> [RdrNameHsDecl] -> RnMG FixityEnv fixitiesFromLocalDecls gbl_env decls