• Edward Z. Yang's avatar
    Rename PackageId to PackageKey, distinguishing it from Cabal's PackageId. · 4bebab25
    Edward Z. Yang authored
    Previously, both Cabal and GHC defined the type PackageId, and we expected
    them to be roughly equivalent (but represented differently).  This refactoring
    separates these two notions.
    A package ID is a user-visible identifier; it's the thing you write in a
    Cabal file, e.g. containers-0.9.  The components of this ID are semantically
    meaningful, and decompose into a package name and a package vrsion.
    A package key is an opaque identifier used by GHC to generate linking symbols.
    Presently, it just consists of a package name and a package version, but
    pursuant to #9265 we are planning to extend it to record other information.
    Within a single executable, it uniquely identifies a package.  It is *not* an
    InstalledPackageId, as the choice of a package key affects the ABI of a package
    (whereas an InstalledPackageId is computed after compilation.)  Cabal computes
    a package key for the package and passes it to GHC using -package-name (now
    *extremely* misnamed).
    As an added bonus, we don't have to worry about shadowing anymore.
    As a follow on, we should introduce -current-package-key having the same role as
    -package-name, and deprecate the old flag.  This commit is just renaming.
    The haddock submodule needed to be updated.
    Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
    Test Plan: validate
    Reviewers: simonpj, simonmar, hvr, austin
    Subscribers: simonmar, relrod, carter
    Differential Revision: https://phabricator.haskell.org/D79
TcErrors.lhs 61.3 KB