Skip to content
  • Edward Z. Yang's avatar
    Refactor package flags into several distinct types. · 998739df
    Edward Z. Yang authored
    
    
    Summary:
    Previously, all package flags (-package, -trust-package,
    -ignore-package) were bundled up into a single packageFlags
    field in DynFlags, under a single type.  This commit separates
    them based on what they do.
    
    This is a nice improvement, because it means that Packages can
    then be refactored so that a number of functions are "tighter":
    
        - We know longer have to partition PackageFlags into
          the ignore flag and other flags; ignore flags are just
          put into their own field.
    
        - Trust flags modify the package database, but exposed
          flags do not (they modify the visibility map); now
          applyPackageFlag and applyTrustFlag have tighter signatures
          which reflect this.
    
    This patch was motivated by the need to have a separate visibility
    map for plugin packages, which will be in a companion patch.
    
    Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
    
    Test Plan: validate
    
    Reviewers: austin, bgamari, duncan
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D1659
    998739df