holePackageKey and isHoleModule utility functions.
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Tue, 23 Jun 2015 20:31:15 +0000 (13:31 -0700)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Wed, 8 Jul 2015 02:50:56 +0000 (19:50 -0700)
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
compiler/basicTypes/Module.hs

index a20de2d..2c60463 100644 (file)
@@ -42,6 +42,7 @@ module Module
         dphParPackageKey,
         mainPackageKey,
         thisGhcPackageKey,
+        holePackageKey, isHoleModule,
         interactivePackageKey, isInteractiveModule,
         wiredInPackageKeys,
 
@@ -399,9 +400,17 @@ interactivePackageKey = fsToPackageKey (fsLit "interactive")
 -- to symbol names, since there can be only one main package per program.
 mainPackageKey      = fsToPackageKey (fsLit "main")
 
+-- | This is a fake package id used to provide identities to any un-implemented
+-- signatures.  The set of hole identities is global over an entire compilation.
+holePackageKey :: PackageKey
+holePackageKey      = fsToPackageKey (fsLit "hole")
+
 isInteractiveModule :: Module -> Bool
 isInteractiveModule mod = modulePackageKey mod == interactivePackageKey
 
+isHoleModule :: Module -> Bool
+isHoleModule mod = modulePackageKey mod == holePackageKey
+
 wiredInPackageKeys :: [PackageKey]
 wiredInPackageKeys = [ primPackageKey,
                        integerPackageKey,