Skip to content
  • Simon Peyton Jones's avatar
    Narrow the use of record wildcards slightly · 2f8cd14f
    Simon Peyton Jones authored
    In reviewing the fix to Trac #12130 I found the wild-card
    fill-in code for ".." notation in record constructions hard
    to understand.  It went to great contortions (including the
    find_tycon code) to allow
        data T = C { x, y :: Int }
        f x = C { .. }
    to expand to
        f x = C { x = x, y = y }
    where 'y' is an /imported function/!  That seems way over the top
    for what record wildcards are supposed to do.
    
    So I have narrowed the record-wildcard expansion to include only
    /locally-bound/ variables; i.e. not top level, and certainly not
    imported.
    
    I don't think anyone is using record wildcards in this bizarre way, so
    I don't expect any fallout. Even if there is, you can easily
    initialise fields with eponymous but imported values by hand.
    
    An intermediate position would be to allow /local/ top-level
    definitions.  But I doubt anyone is doing that either.
    
    Let's see if there's any fallout.  It's a local change, easy to
    revert, so I've just gone ahead to save everyone's time.
    2f8cd14f