bang patterns with infix ops
```
$ ghci -fbang-patterns
-- Ok
Prelude> let at a !b = False in at 1 2
False
Prelude> let (.!.) a !b = False in 1 .!. 2
False
-- ~ patterns are ok
Prelude> let a `at` ~b = False in at 1 2
False
Prelude> let a .!. ~b = False in 1 .!. 2
False
Prelude> let ~a .!. b = False in 1 .!. 2
False
-- Parse error if we combine bang patterns with infix decls:
Prelude> let a .!. !b = False in 1 .!. 2
<interactive>:1:10: parse error on input `!'
Prelude> let a `at` !b = False in at 1 2
<interactive>:1:11: parse error on input `!'
Prelude> let !a .!. b = False in 1 .!. 2
<interactive>:1:5: Parse error in pattern
```
So looks like ops and infix declarations are missing a case for bang patterns.
-- Don
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------- |
| Version | 6.6 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Parser) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"Bang pattern parsing with infix ops","status":"New","operating_system":"Unknown","component":"Compiler (Parser)","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.6","keywords":["bang","patterns"],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Bug","description":"{{{\r\n $ ghci -fbang-patterns\r\n\r\n-- Ok\r\n\r\n Prelude> let at a !b = False in at 1 2\r\n False\r\n\r\n Prelude> let (.!.) a !b = False in 1 .!. 2\r\n False\r\n\r\n-- ~ patterns are ok\r\n\r\n Prelude> let a `at` ~b = False in at 1 2\r\n False\r\n\r\n Prelude> let a .!. ~b = False in 1 .!. 2\r\n False\r\n\r\n Prelude> let ~a .!. b = False in 1 .!. 2\r\n False\r\n\r\n-- Parse error if we combine bang patterns with infix decls:\r\n\r\n Prelude> let a .!. !b = False in 1 .!. 2\r\n <interactive>:1:10: parse error on input `!'\r\n\r\n Prelude> let a `at` !b = False in at 1 2\r\n <interactive>:1:11: parse error on input `!'\r\n\r\n Prelude> let !a .!. b = False in 1 .!. 2\r\n <interactive>:1:5: Parse error in pattern\r\n\r\n}}}\r\n\r\nSo looks like ops and infix declarations are missing a case for bang patterns.\r\n\r\n-- Don","type_of_failure":"OtherFailure","blocking":[]} -->
issue