diff --git a/crates/ruff_fmt/resources/test/fixtures/black/simple_cases/bracketmatch.bak b/crates/ruff_fmt/resources/test/fixtures/black/simple_cases/bracketmatch.bak new file mode 100644 index 00000000000000..0aaa2d8e670262 --- /dev/null +++ b/crates/ruff_fmt/resources/test/fixtures/black/simple_cases/bracketmatch.bak @@ -0,0 +1,15 @@ +for ((x in {}) or {})['a'] in x: + pass +pem_spam = lambda l, spam = { + "x": 3 +}: not spam.get(l.strip()) +lambda x=lambda y={1: 3}: y['x':lambda y: {1: 2}]: x + + +# output + + +for ((x in {}) or {})["a"] in x: + pass +pem_spam = lambda l, spam={"x": 3}: not spam.get(l.strip()) +lambda x=lambda y={1: 3}: y["x" : lambda y: {1: 2}]: x diff --git a/crates/ruff_fmt/resources/test/fixtures/black/simple_cases/bracketmatch.py b/crates/ruff_fmt/resources/test/fixtures/black/simple_cases/bracketmatch.py index 0aaa2d8e670262..a0f22e1923ee45 100644 --- a/crates/ruff_fmt/resources/test/fixtures/black/simple_cases/bracketmatch.py +++ b/crates/ruff_fmt/resources/test/fixtures/black/simple_cases/bracketmatch.py @@ -4,12 +4,3 @@ "x": 3 }: not spam.get(l.strip()) lambda x=lambda y={1: 3}: y['x':lambda y: {1: 2}]: x - - -# output - - -for ((x in {}) or {})["a"] in x: - pass -pem_spam = lambda l, spam={"x": 3}: not spam.get(l.strip()) -lambda x=lambda y={1: 3}: y["x" : lambda y: {1: 2}]: x diff --git a/crates/ruff_fmt/src/format/stmt.rs b/crates/ruff_fmt/src/format/stmt.rs index 8aab9bb139e424..30fe334c4c84cc 100644 --- a/crates/ruff_fmt/src/format/stmt.rs +++ b/crates/ruff_fmt/src/format/stmt.rs @@ -328,7 +328,7 @@ fn format_for( [ text("for"), space(), - target.format(), + group(&target.format()), space(), text("in"), space(), diff --git a/crates/ruff_fmt/src/lib.rs b/crates/ruff_fmt/src/lib.rs index 2e8cb120c65208..849aaac341c355 100644 --- a/crates/ruff_fmt/src/lib.rs +++ b/crates/ruff_fmt/src/lib.rs @@ -79,6 +79,7 @@ mod tests { } #[test_case(Path::new("simple_cases/collections.py"); "collections")] + #[test_case(Path::new("simple_cases/bracketmatch.py"); "bracketmatch")] fn passing_modulo_string_normalization(path: &Path) -> Result<()> { fn adjust_quotes(contents: &str) -> String { // Replace all single quotes with double quotes. diff --git a/crates/ruff_fmt/src/snapshots/ruff_fmt__tests__simple_cases__bracketmatch.py.snap b/crates/ruff_fmt/src/snapshots/ruff_fmt__tests__simple_cases__bracketmatch.py.snap new file mode 100644 index 00000000000000..17711c4ac59bef --- /dev/null +++ b/crates/ruff_fmt/src/snapshots/ruff_fmt__tests__simple_cases__bracketmatch.py.snap @@ -0,0 +1,9 @@ +--- +source: src/source_code/mod.rs +assertion_line: 0 +expression: formatted +--- +for ((x in {}) or {})["a"] in x: + pass +pem_spam = lambda l, spam={"x": 3}: not spam.get(l.strip()) +lambda x=lambda y={1: 3}: y["x" : lambda y: {1: 2}]: x