mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-24 05:25:17 +00:00
Fix named expression precedence in generator (#7170)
This commit is contained in:
parent
89be850b73
commit
f8e4e1d562
3 changed files with 44 additions and 1 deletions
|
@ -138,3 +138,12 @@ def scope():
|
||||||
class TemperatureScales(Enum):
|
class TemperatureScales(Enum):
|
||||||
CELSIUS = (lambda deg_c: deg_c)
|
CELSIUS = (lambda deg_c: deg_c)
|
||||||
FAHRENHEIT = (lambda deg_c: deg_c * 9 / 5 + 32)
|
FAHRENHEIT = (lambda deg_c: deg_c * 9 / 5 + 32)
|
||||||
|
|
||||||
|
|
||||||
|
# Regression test for: https://github.com/astral-sh/ruff/issues/7141
|
||||||
|
def scope():
|
||||||
|
# E731
|
||||||
|
|
||||||
|
f = lambda: (
|
||||||
|
i := 1,
|
||||||
|
)
|
||||||
|
|
|
@ -339,6 +339,8 @@ E731.py:139:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
139 |+ def CELSIUS(deg_c):
|
139 |+ def CELSIUS(deg_c):
|
||||||
140 |+ return deg_c
|
140 |+ return deg_c
|
||||||
140 141 | FAHRENHEIT = (lambda deg_c: deg_c * 9 / 5 + 32)
|
140 141 | FAHRENHEIT = (lambda deg_c: deg_c * 9 / 5 + 32)
|
||||||
|
141 142 |
|
||||||
|
142 143 |
|
||||||
|
|
||||||
E731.py:140:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:140:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
|
@ -356,5 +358,30 @@ E731.py:140:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
140 |- FAHRENHEIT = (lambda deg_c: deg_c * 9 / 5 + 32)
|
140 |- FAHRENHEIT = (lambda deg_c: deg_c * 9 / 5 + 32)
|
||||||
140 |+ def FAHRENHEIT(deg_c):
|
140 |+ def FAHRENHEIT(deg_c):
|
||||||
141 |+ return deg_c * 9 / 5 + 32
|
141 |+ return deg_c * 9 / 5 + 32
|
||||||
|
141 142 |
|
||||||
|
142 143 |
|
||||||
|
143 144 | # Regression test for: https://github.com/astral-sh/ruff/issues/7141
|
||||||
|
|
||||||
|
E731.py:147:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
||||||
|
145 | # E731
|
||||||
|
146 |
|
||||||
|
147 | f = lambda: (
|
||||||
|
| _____^
|
||||||
|
148 | | i := 1,
|
||||||
|
149 | | )
|
||||||
|
| |_____^ E731
|
||||||
|
|
|
||||||
|
= help: Rewrite `f` as a `def`
|
||||||
|
|
||||||
|
ℹ Suggested fix
|
||||||
|
144 144 | def scope():
|
||||||
|
145 145 | # E731
|
||||||
|
146 146 |
|
||||||
|
147 |- f = lambda: (
|
||||||
|
148 |- i := 1,
|
||||||
|
149 |- )
|
||||||
|
147 |+ def f():
|
||||||
|
148 |+ return (i := 1),
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ use ruff_source_file::LineEnding;
|
||||||
use super::stylist::{Indentation, Quote, Stylist};
|
use super::stylist::{Indentation, Quote, Stylist};
|
||||||
|
|
||||||
mod precedence {
|
mod precedence {
|
||||||
|
pub(crate) const NAMED_EXPR: u8 = 1;
|
||||||
pub(crate) const ASSIGN: u8 = 3;
|
pub(crate) const ASSIGN: u8 = 3;
|
||||||
pub(crate) const ANN_ASSIGN: u8 = 5;
|
pub(crate) const ANN_ASSIGN: u8 = 5;
|
||||||
pub(crate) const AUG_ASSIGN: u8 = 5;
|
pub(crate) const AUG_ASSIGN: u8 = 5;
|
||||||
|
@ -30,7 +31,6 @@ mod precedence {
|
||||||
pub(crate) const TUPLE: u8 = 19;
|
pub(crate) const TUPLE: u8 = 19;
|
||||||
pub(crate) const FORMATTED_VALUE: u8 = 19;
|
pub(crate) const FORMATTED_VALUE: u8 = 19;
|
||||||
pub(crate) const COMMA: u8 = 21;
|
pub(crate) const COMMA: u8 = 21;
|
||||||
pub(crate) const NAMED_EXPR: u8 = 23;
|
|
||||||
pub(crate) const ASSERT: u8 = 23;
|
pub(crate) const ASSERT: u8 = 23;
|
||||||
pub(crate) const COMPREHENSION_ELEMENT: u8 = 27;
|
pub(crate) const COMPREHENSION_ELEMENT: u8 = 27;
|
||||||
pub(crate) const LAMBDA: u8 = 27;
|
pub(crate) const LAMBDA: u8 = 27;
|
||||||
|
@ -1639,6 +1639,13 @@ class Foo:
|
||||||
"class SchemaItem(NamedTuple):
|
"class SchemaItem(NamedTuple):
|
||||||
fields: ((\"property_key\", str),)"
|
fields: ((\"property_key\", str),)"
|
||||||
);
|
);
|
||||||
|
assert_round_trip!(
|
||||||
|
"def func():
|
||||||
|
return (i := 1)"
|
||||||
|
);
|
||||||
|
assert_round_trip!("yield (i := 1)");
|
||||||
|
assert_round_trip!("x = (i := 1)");
|
||||||
|
assert_round_trip!("x += (i := 1)");
|
||||||
|
|
||||||
// Type aliases
|
// Type aliases
|
||||||
assert_round_trip!(r#"type Foo = int | str"#);
|
assert_round_trip!(r#"type Foo = int | str"#);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue