Skip to content
  • Ryan Scott's avatar
    Disable -XRebindableSyntax when running internal GHCi expressions · e023e78b
    Ryan Scott authored
    Summary:
    It's well known that `-XRebindableSyntax` doesn't play
    nicely with some of the internal expressions that GHCi runs. #13385
    was one example where this problem arose, which was fixed at the time
    by simply avoiding the use of `do`-notation in these internal GHCi
    expressions. That seemed to work, but it was a technique that proved
    not to scale, as #14342 demonstrated //another// example where
    `-XRebindableSyntax` can bite.
    
    Instead of delicately arranging the internal GHCi expressions to
    avoid anything that might be covered under `-XRebindableSyntax`,
    this patch takes the much more direct approach of disabling
    `-XRebindableSyntax` entirely when running any internal GHCi
    expression. This shouldn't hurt, since nothing internal to GHCi was
    taking advantage of the extension in the first place, and moreover,
    we can have greater confidence that some other obscure
    `-XRebindableSyntax` corner case won't pop up in the future. As an
    added bonus, this lets us once again use `do`-notation in the code
    that had to be changed when #13385 was (hackily) fixed before.
    
    Test Plan: make test TEST=T14342
    
    Reviewers: bgamari, austin
    
    Subscribers: rwbarton, thomie
    
    GHC Trac Issues: #14342
    
    Differential Revision: https://phabricator.haskell.org/D4086
    e023e78b