
#15269: Qualified Names in --show-iface output -------------------------------------+------------------------------------- Reporter: sjakobi | Owner: (none) Type: feature request | Status: patch Priority: normal | Milestone: 8.8.1 Component: Compiler | Version: 8.4.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D4852 Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj):
I realized that I don't know the right terminology for names from the current module and names from other modules. Is there any? If not, are "local" and "non-local" names good words for this?
A difficulty is that being "from the current module" is not a property of a `Name`; it's a property of the `Name` plus the module being compiled; see `nameIsLocalOrFrom`. See also `Var.hs`: {{{ Note [GlobalId/LocalId] ~~~~~~~~~~~~~~~~~~~~~~~ A GlobalId is * always a constant (top-level) * imported, or data constructor, or primop, or record selector * has a Unique that is globally unique across the whole GHC invocation (a single invocation may compile multiple modules) * never treated as a candidate by the free-variable finder; it's a constant! A LocalId is * bound within an expression (lambda, case, local let(rec)) * or defined at top level in the module being compiled * always treated as a candidate by the free-variable finder After CoreTidy, top-level LocalIds are turned into GlobalIds }}} So `isLocalId` will reply `True` to a name defined in the current module up to `CoreTidy`, but not after. And all the interface stuff is after. Because of this contextual complexity, I suggest you spell out what you mean when you say it. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15269#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler