[GHC] #12229: Narrow the scope of record wildcards notation slightly

GHC ghc-devs at haskell.org
Fri Jun 24 10:07:50 UTC 2016


#12229: Narrow the scope of record wildcards notation slightly
-------------------------------------+-------------------------------------
           Reporter:  simonpj        |             Owner:
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.0.1
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 As fallout from #12130 I narrowed the scope of record-wildcard notation
 slightly.  Here's the commit
 {{{
 commit 2f8cd14fe909a377b3e084a4f2ded83a0e6d44dd
 Author: Simon Peyton Jones <simonpj at microsoft.com>
 Date:   Thu Jun 23 09:02:00 2016 +0100

     Narrow the use of record wildcards slightly

     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.
 }}}
 This ticket can be used for any commentary.   I've also added a test.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12229>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list