rust-lang/rustfmt

Merge `.. .` tokens producing invalid syntax

クローズ

#7,011 opened on 2026/08/04

 (5 件のコメント) (1 件のリアクション) (0 人の担当者)Rust (760 件のフォーク)batch import
A-closuresC-bugI-invalid-codegood first issue

Repository metrics

Stars
 (4,893 個のスター)
PR merge metrics
 (平均マージ 67d) (30d で 5 merged PRs)

説明

Summary

Rustfmt produces syntactically valid, but not semantically equivalent to the original code, wrapping to parens.

There is two cases actually. In second case (field) rustfmt produces invalid syntax.

I tried to format this code:

See details in rust-analyzer/23004.

fn foo() {
    || 1.. .method();
    || 1.. .field;
}

From here on, this example is used without the function signature.

Expected behavior

I expected to see this happen, two possible options:

  1. no changes
  2. range wrappend in parens:
    || (1..).method();
    || (1..).field;
    

Actual behavior

Instead, this happened:

(|| 1..).method(); // semantically defferent: `method()` should be "method of the range"
|| 1...field;      // invalid token: `...`

Reproduction Steps

  1. rustfmt ./file-with-foo-fn-from-summary.rs

Meta

rustfmt --version:

rustfmt 1.10.0-nightly (11177f2235 2026-08-02)

コントリビューターガイド