error: this file contains an unclosed delimiter
  --> $DIR/brace-in-let-chain.rs:58:54
   |
LL | fn main() {
   |           - unclosed delimiter
...
LL | fn quux() {
   |           - unclosed delimiter
...
LL | fn foobar() {
   |             - unclosed delimiter
...
LL | fn fubar() {
   |            - unclosed delimiter
...
LL | fn qux() {
   |          - unclosed delimiter
...
LL | fn foo() {
   |          - another 3 unclosed delimiters begin from here
...
LL |         {
   |         - this delimiter might not be properly closed...
LL |             && let () = ()
LL |     }
   |     - ...as it matches this but it has different indentation
LL | }
   |                                                     ^

error: found a `{` in the middle of a let-chain
  --> $DIR/brace-in-let-chain.rs:14:24
   |
LL |         && let () = () {
   |                        ^
LL |         && let () = ()
   |         ------ you might have meant to continue the let-chain here
   |
help: consider removing this brace to parse the `let` as part of the same chain
   |
LL -         && let () = () {
LL +         && let () = ()
   |

error: found a `{` in the middle of a let-chain
  --> $DIR/brace-in-let-chain.rs:6:24
   |
LL |         && let () = () {
   |                        ^
LL |         && let () = ()
   |         ------ you might have meant to continue the let-chain here
   |
help: consider removing this brace to parse the `let` as part of the same chain
   |
LL -         && let () = () {
LL +         && let () = ()
   |

error: aborting due to 3 previous errors

