Skip to content
  • Keith Wansbrough's avatar
    [project @ 1999-07-15 14:08:03 by keithw] · 9d787ef5
    Keith Wansbrough authored
    This commit makes a start at implementing polymorphic usage
    annotations.
    
    * The module Type has now been split into TypeRep, containing the
      representation Type(..) and other information for `friends' only,
      and Type, providing the public interface to Type.  Due to a bug in
      the interface-file slurping prior to ghc-4.04, {-# SOURCE #-}
      dependencies must unfortunately still refer to TypeRep even though
      they are not friends.
    
    * Unfoldings in interface files now print as __U instead of __u.
      UpdateInfo now prints as __UA instead of __U.
    
    * A new sort of variables, UVar, in their own namespace, uvName, has
      been introduced for usage variables.
    
    * Usage binders __fuall uv have been introduced.  Usage annotations
      are now __u - ty (used once), __u ! ty (used possibly many times),
      __u uv ty (used uv times), where uv is a UVar.  __o and __m have
      gone.  All this still lives only in a TyNote, *for now* (but not for
      much longer).
    
    * Variance calculation for TyCons has moved from
      typecheck/TcTyClsDecls to types/Variance.
    
    * Usage annotation and inference are now done together in a single
      pass.  Provision has been made for inferring polymorphic usage
      annotations (with __fuall) but this has not yet been implemented.
      Watch this space!
    9d787ef5