-XDuplicateRecordFields breaks record expression splices
```
{-# language TemplateHaskell #-}
{-# language DuplicateRecordFields #-}
module Lib where
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
data A = A {x :: Int, y :: String}
a = A 3 "test"
test = $([e|case a of A {x = b} -> b|])
```
Without `DuplicateRecordFields` it compiles correctly so `test = 3` but with `DuplicateRecordFields` enabled it gives:
```
• Illegal variable name: ‘$sel:x:A’
When splicing a TH expression:
case Lib.a of
(Lib.A {Lib.$sel:x:A = b_0}) -> b_0
• In the untyped splice: $([| case a of { A {x = b} -> b } |])
```
Additionally, there doesn't seem to be a workaround for munging the name manually, since the `$sel:x:A` name is the one actually in scope, there is no `A.x` like there would be normally, even when the label is not a duplicate.
Is there a way to get around this? Ex: by changing the binding name somehow manually?
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.2.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"-XDuplicateRecordFields breaks record expression splices","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.2.2","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"\r\n{{{\r\n{-# language TemplateHaskell #-}\r\n{-# language DuplicateRecordFields #-}\r\nmodule Lib where\r\nimport Language.Haskell.TH\r\nimport Language.Haskell.TH.Syntax\r\n\r\ndata A = A {x :: Int, y :: String}\r\na = A 3 \"test\"\r\ntest = $([e|case a of A {x = b} -> b|])\r\n}}}\r\n\r\nWithout `DuplicateRecordFields` it compiles correctly so `test = 3` but with `DuplicateRecordFields` enabled it gives:\r\n\r\n{{{\r\n • Illegal variable name: ‘$sel:x:A’\r\n When splicing a TH expression:\r\n case Lib.a of\r\n (Lib.A {Lib.$sel:x:A = b_0}) -> b_0\r\n • In the untyped splice: $([| case a of { A {x = b} -> b } |])\r\n}}}\r\n\r\nAdditionally, there doesn't seem to be a workaround for munging the name manually, since the `$sel:x:A` name is the one actually in scope, there is no `A.x` like there would be normally, even when the label is not a duplicate.\r\n\r\nIs there a way to get around this? Ex: by changing the binding name somehow manually?\r\n","type_of_failure":"OtherFailure","blocking":[]} -->
issue