mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-11-04 13:39:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			614 lines
		
	
	
	
		
			26 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			614 lines
		
	
	
	
		
			26 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
---
 | 
						|
source: crates/ruff_python_parser/tests/fixtures.rs
 | 
						|
input_file: crates/ruff_python_parser/resources/valid/expressions/if.py
 | 
						|
snapshot_kind: text
 | 
						|
---
 | 
						|
## AST
 | 
						|
 | 
						|
```
 | 
						|
Module(
 | 
						|
    ModModule {
 | 
						|
        range: 0..423,
 | 
						|
        body: [
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 0..16,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 0..16,
 | 
						|
                            test: BooleanLiteral(
 | 
						|
                                ExprBooleanLiteral {
 | 
						|
                                    range: 5..9,
 | 
						|
                                    value: true,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 0..1,
 | 
						|
                                    id: Name("a"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 15..16,
 | 
						|
                                    id: Name("b"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 17..35,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 17..35,
 | 
						|
                            test: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 24..25,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Call(
 | 
						|
                                ExprCall {
 | 
						|
                                    range: 17..20,
 | 
						|
                                    func: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 17..18,
 | 
						|
                                            id: Name("f"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                    arguments: Arguments {
 | 
						|
                                        range: 18..20,
 | 
						|
                                        args: [],
 | 
						|
                                        keywords: [],
 | 
						|
                                    },
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: NoneLiteral(
 | 
						|
                                ExprNoneLiteral {
 | 
						|
                                    range: 31..35,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 36..61,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 36..61,
 | 
						|
                            test: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 41..42,
 | 
						|
                                    id: Name("b"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 36..37,
 | 
						|
                                    id: Name("a"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: If(
 | 
						|
                                ExprIf {
 | 
						|
                                    range: 48..61,
 | 
						|
                                    test: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 53..54,
 | 
						|
                                            id: Name("d"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                    body: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 48..49,
 | 
						|
                                            id: Name("c"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                    orelse: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 60..61,
 | 
						|
                                            id: Name("e"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 62..84,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 62..84,
 | 
						|
                            test: Compare(
 | 
						|
                                ExprCompare {
 | 
						|
                                    range: 71..76,
 | 
						|
                                    left: NumberLiteral(
 | 
						|
                                        ExprNumberLiteral {
 | 
						|
                                            range: 71..72,
 | 
						|
                                            value: Int(
 | 
						|
                                                1,
 | 
						|
                                            ),
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                    ops: [
 | 
						|
                                        Lt,
 | 
						|
                                    ],
 | 
						|
                                    comparators: [
 | 
						|
                                        NumberLiteral(
 | 
						|
                                            ExprNumberLiteral {
 | 
						|
                                                range: 75..76,
 | 
						|
                                                value: Int(
 | 
						|
                                                    0,
 | 
						|
                                                ),
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                    ],
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: BinOp(
 | 
						|
                                ExprBinOp {
 | 
						|
                                    range: 62..67,
 | 
						|
                                    left: NumberLiteral(
 | 
						|
                                        ExprNumberLiteral {
 | 
						|
                                            range: 62..63,
 | 
						|
                                            value: Int(
 | 
						|
                                                1,
 | 
						|
                                            ),
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                    op: Add,
 | 
						|
                                    right: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 66..67,
 | 
						|
                                            id: Name("x"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: UnaryOp(
 | 
						|
                                ExprUnaryOp {
 | 
						|
                                    range: 82..84,
 | 
						|
                                    op: USub,
 | 
						|
                                    operand: NumberLiteral(
 | 
						|
                                        ExprNumberLiteral {
 | 
						|
                                            range: 83..84,
 | 
						|
                                            value: Int(
 | 
						|
                                                1,
 | 
						|
                                            ),
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 85..108,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 85..108,
 | 
						|
                            test: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 96..97,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: BoolOp(
 | 
						|
                                ExprBoolOp {
 | 
						|
                                    range: 85..92,
 | 
						|
                                    op: And,
 | 
						|
                                    values: [
 | 
						|
                                        Name(
 | 
						|
                                            ExprName {
 | 
						|
                                                range: 85..86,
 | 
						|
                                                id: Name("a"),
 | 
						|
                                                ctx: Load,
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                        Name(
 | 
						|
                                            ExprName {
 | 
						|
                                                range: 91..92,
 | 
						|
                                                id: Name("b"),
 | 
						|
                                                ctx: Load,
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                    ],
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: BooleanLiteral(
 | 
						|
                                ExprBooleanLiteral {
 | 
						|
                                    range: 103..108,
 | 
						|
                                    value: false,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 109..127,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 109..127,
 | 
						|
                            test: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 119..120,
 | 
						|
                                    id: Name("y"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Compare(
 | 
						|
                                ExprCompare {
 | 
						|
                                    range: 109..115,
 | 
						|
                                    left: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 109..110,
 | 
						|
                                            id: Name("x"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                    ops: [
 | 
						|
                                        LtE,
 | 
						|
                                    ],
 | 
						|
                                    comparators: [
 | 
						|
                                        Name(
 | 
						|
                                            ExprName {
 | 
						|
                                                range: 114..115,
 | 
						|
                                                id: Name("y"),
 | 
						|
                                                ctx: Load,
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                    ],
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 126..127,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 128..154,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 128..154,
 | 
						|
                            test: BoolOp(
 | 
						|
                                ExprBoolOp {
 | 
						|
                                    range: 136..143,
 | 
						|
                                    op: And,
 | 
						|
                                    values: [
 | 
						|
                                        Name(
 | 
						|
                                            ExprName {
 | 
						|
                                                range: 136..137,
 | 
						|
                                                id: Name("a"),
 | 
						|
                                                ctx: Load,
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                        Name(
 | 
						|
                                            ExprName {
 | 
						|
                                                range: 142..143,
 | 
						|
                                                id: Name("b"),
 | 
						|
                                                ctx: Load,
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                    ],
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: BooleanLiteral(
 | 
						|
                                ExprBooleanLiteral {
 | 
						|
                                    range: 128..132,
 | 
						|
                                    value: true,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: BooleanLiteral(
 | 
						|
                                ExprBooleanLiteral {
 | 
						|
                                    range: 149..154,
 | 
						|
                                    value: false,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 155..171,
 | 
						|
                    value: Tuple(
 | 
						|
                        ExprTuple {
 | 
						|
                            range: 155..171,
 | 
						|
                            elts: [
 | 
						|
                                NumberLiteral(
 | 
						|
                                    ExprNumberLiteral {
 | 
						|
                                        range: 155..156,
 | 
						|
                                        value: Int(
 | 
						|
                                            1,
 | 
						|
                                        ),
 | 
						|
                                    },
 | 
						|
                                ),
 | 
						|
                                If(
 | 
						|
                                    ExprIf {
 | 
						|
                                        range: 158..171,
 | 
						|
                                        test: Name(
 | 
						|
                                            ExprName {
 | 
						|
                                                range: 163..164,
 | 
						|
                                                id: Name("a"),
 | 
						|
                                                ctx: Load,
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                        body: NumberLiteral(
 | 
						|
                                            ExprNumberLiteral {
 | 
						|
                                                range: 158..159,
 | 
						|
                                                value: Int(
 | 
						|
                                                    1,
 | 
						|
                                                ),
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                        orelse: Name(
 | 
						|
                                            ExprName {
 | 
						|
                                                range: 170..171,
 | 
						|
                                                id: Name("c"),
 | 
						|
                                                ctx: Load,
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                    },
 | 
						|
                                ),
 | 
						|
                            ],
 | 
						|
                            ctx: Load,
 | 
						|
                            parenthesized: false,
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 214..240,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 214..240,
 | 
						|
                            test: BooleanLiteral(
 | 
						|
                                ExprBooleanLiteral {
 | 
						|
                                    range: 219..223,
 | 
						|
                                    value: true,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 214..215,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: Lambda(
 | 
						|
                                ExprLambda {
 | 
						|
                                    range: 229..240,
 | 
						|
                                    parameters: Some(
 | 
						|
                                        Parameters {
 | 
						|
                                            range: 236..237,
 | 
						|
                                            posonlyargs: [],
 | 
						|
                                            args: [
 | 
						|
                                                ParameterWithDefault {
 | 
						|
                                                    range: 236..237,
 | 
						|
                                                    parameter: Parameter {
 | 
						|
                                                        range: 236..237,
 | 
						|
                                                        name: Identifier {
 | 
						|
                                                            id: Name("y"),
 | 
						|
                                                            range: 236..237,
 | 
						|
                                                        },
 | 
						|
                                                        annotation: None,
 | 
						|
                                                    },
 | 
						|
                                                    default: None,
 | 
						|
                                                },
 | 
						|
                                            ],
 | 
						|
                                            vararg: None,
 | 
						|
                                            kwonlyargs: [],
 | 
						|
                                            kwarg: None,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                    body: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 239..240,
 | 
						|
                                            id: Name("y"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 302..323,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 302..323,
 | 
						|
                            test: Yield(
 | 
						|
                                ExprYield {
 | 
						|
                                    range: 308..315,
 | 
						|
                                    value: Some(
 | 
						|
                                        Name(
 | 
						|
                                            ExprName {
 | 
						|
                                                range: 314..315,
 | 
						|
                                                id: Name("x"),
 | 
						|
                                                ctx: Load,
 | 
						|
                                            },
 | 
						|
                                        ),
 | 
						|
                                    ),
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 302..303,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 322..323,
 | 
						|
                                    id: Name("y"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 324..350,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 324..350,
 | 
						|
                            test: YieldFrom(
 | 
						|
                                ExprYieldFrom {
 | 
						|
                                    range: 330..342,
 | 
						|
                                    value: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 341..342,
 | 
						|
                                            id: Name("x"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 324..325,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 349..350,
 | 
						|
                                    id: Name("y"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 351..376,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 351..376,
 | 
						|
                            test: Lambda(
 | 
						|
                                ExprLambda {
 | 
						|
                                    range: 357..368,
 | 
						|
                                    parameters: Some(
 | 
						|
                                        Parameters {
 | 
						|
                                            range: 364..365,
 | 
						|
                                            posonlyargs: [],
 | 
						|
                                            args: [
 | 
						|
                                                ParameterWithDefault {
 | 
						|
                                                    range: 364..365,
 | 
						|
                                                    parameter: Parameter {
 | 
						|
                                                        range: 364..365,
 | 
						|
                                                        name: Identifier {
 | 
						|
                                                            id: Name("x"),
 | 
						|
                                                            range: 364..365,
 | 
						|
                                                        },
 | 
						|
                                                        annotation: None,
 | 
						|
                                                    },
 | 
						|
                                                    default: None,
 | 
						|
                                                },
 | 
						|
                                            ],
 | 
						|
                                            vararg: None,
 | 
						|
                                            kwonlyargs: [],
 | 
						|
                                            kwarg: None,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                    body: Name(
 | 
						|
                                        ExprName {
 | 
						|
                                            range: 367..368,
 | 
						|
                                            id: Name("x"),
 | 
						|
                                            ctx: Load,
 | 
						|
                                        },
 | 
						|
                                    ),
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 351..352,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 375..376,
 | 
						|
                                    id: Name("y"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 408..423,
 | 
						|
                    value: If(
 | 
						|
                        ExprIf {
 | 
						|
                            range: 409..422,
 | 
						|
                            test: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 414..415,
 | 
						|
                                    id: Name("y"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            body: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 409..410,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            orelse: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 421..422,
 | 
						|
                                    id: Name("z"),
 | 
						|
                                    ctx: Load,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
        ],
 | 
						|
    },
 | 
						|
)
 | 
						|
```
 |