[commit: ghc] wip/mr-template: GhcPlugins: Fix lookup of TH names (9dc883f)
git at git.haskell.org
git at git.haskell.org
Sat Jan 19 20:48:31 UTC 2019
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/mr-template
Link : http://ghc.haskell.org/trac/ghc/changeset/9dc883fafaa35e80c49c95e36414ee62172fe08c/ghc
>---------------------------------------------------------------
commit 9dc883fafaa35e80c49c95e36414ee62172fe08c
Author: Ben Gamari <ben at smart-cactus.org>
Date: Sat Jan 19 13:59:18 2019 -0500
GhcPlugins: Fix lookup of TH names
Previously `thNameToGhcName` was calling `lookupOrigNameCache` directly, which
failed to handle the case that the name wasn't already in the name cache. This
happens, for instance, when the name was in scope in a plugin being used during
compilation but not in scope in the module being compiled. In this case we the
interface file containing the name won't be loaded and `lookupOrigNameCache`
fails. This was the cause of #16104.
The solution is simple: use the nicely packaged `lookupOrigIO` instead.
>---------------------------------------------------------------
9dc883fafaa35e80c49c95e36414ee62172fe08c
compiler/main/GhcPlugins.hs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/compiler/main/GhcPlugins.hs b/compiler/main/GhcPlugins.hs
index 3e0facf..993b13b 100644
--- a/compiler/main/GhcPlugins.hs
+++ b/compiler/main/GhcPlugins.hs
@@ -127,6 +127,6 @@ thNameToGhcName th_name
| Just n <- isExact_maybe rdr_name -- This happens in derived code
= return $ if isExternalName n then Just n else Nothing
| Just (rdr_mod, rdr_occ) <- isOrig_maybe rdr_name
- = do { cache <- getOrigNameCache
- ; return $ lookupOrigNameCache cache rdr_mod rdr_occ }
+ = do { hsc_env <- getHscEnv
+ ; Just <$> liftIO (lookupOrigIO hsc_env rdr_mod rdr_occ) }
| otherwise = return Nothing
More information about the ghc-commits
mailing list