From e1fb28384c44fcd29b0e60b9fd44767be22646af Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Sat, 25 Nov 2017 10:12:05 +0800 Subject: Handle CPP properly in Backpack Summary: Previously, we attempted to lookup 'hole' packages for include directories; this obviously is not going to work. Signed-off-by: Edward Z. Yang Test Plan: validate Reviewers: ekmett, bgamari Subscribers: rwbarton, thomie GHC Trac Issues: #14525 Differential Revision: https://phabricator.haskell.org/D4234 --- compiler/main/Packages.hs | 10 ++++++++-- testsuite/tests/backpack/cabal/bkpcabal01/p/P.hs.in1 | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/compiler/main/Packages.hs b/compiler/main/Packages.hs index c49581b0d9..14407be418 100644 --- a/compiler/main/Packages.hs +++ b/compiler/main/Packages.hs @@ -1892,8 +1892,14 @@ listVisibleModuleNames dflags = getPreloadPackagesAnd :: DynFlags -> [PreloadUnitId] -> IO [PackageConfig] getPreloadPackagesAnd dflags pkgids0 = let - pkgids = pkgids0 ++ map (toInstalledUnitId . moduleUnitId . snd) - (thisUnitIdInsts dflags) + pkgids = pkgids0 ++ + -- An indefinite package will have insts to HOLE, + -- which is not a real package. Don't look it up. + -- Fixes #14525 + if isIndefinite dflags + then [] + else map (toInstalledUnitId . moduleUnitId . snd) + (thisUnitIdInsts dflags) state = pkgState dflags pkg_map = pkgIdMap state preload = preloadPackages state diff --git a/testsuite/tests/backpack/cabal/bkpcabal01/p/P.hs.in1 b/testsuite/tests/backpack/cabal/bkpcabal01/p/P.hs.in1 index 327a032132..875c370915 100644 --- a/testsuite/tests/backpack/cabal/bkpcabal01/p/P.hs.in1 +++ b/testsuite/tests/backpack/cabal/bkpcabal01/p/P.hs.in1 @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} module P where import H y = x -- cgit v1.2.1