mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-10-31 20:08:19 +00:00 
			
		
		
		
	 7abc41727b
			
		
	
	
		7abc41727b
		
			
		
	
	
	
	
		
			
			## Summary Removes the `module_ptr` field from `AstNodeRef` in release mode, and change `NodeIndex` to a `NonZeroU32` to reduce the size of `Option<AstNodeRef<_>>` fields. I believe CI runs in debug mode, so this won't show up in the memory report, but this reduces memory by ~2% in release mode.
		
			
				
	
	
		
			592 lines
		
	
	
	
		
			26 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			592 lines
		
	
	
	
		
			26 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| ---
 | |
| source: crates/ruff_python_parser/tests/fixtures.rs
 | |
| input_file: crates/ruff_python_parser/resources/valid/expressions/await.py
 | |
| ---
 | |
| ## AST
 | |
| 
 | |
| ```
 | |
| Module(
 | |
|     ModModule {
 | |
|         node_index: NodeIndex(None),
 | |
|         range: 0..211,
 | |
|         body: [
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 0..7,
 | |
|                     value: Await(
 | |
|                         ExprAwait {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 0..7,
 | |
|                             value: Name(
 | |
|                                 ExprName {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 6..7,
 | |
|                                     id: Name("x"),
 | |
|                                     ctx: Load,
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 8..19,
 | |
|                     value: BinOp(
 | |
|                         ExprBinOp {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 8..19,
 | |
|                             left: Await(
 | |
|                                 ExprAwait {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 8..15,
 | |
|                                     value: Name(
 | |
|                                         ExprName {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 14..15,
 | |
|                                             id: Name("x"),
 | |
|                                             ctx: Load,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                             op: Add,
 | |
|                             right: NumberLiteral(
 | |
|                                 ExprNumberLiteral {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 18..19,
 | |
|                                     value: Int(
 | |
|                                         1,
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 20..33,
 | |
|                     value: BoolOp(
 | |
|                         ExprBoolOp {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 20..33,
 | |
|                             op: And,
 | |
|                             values: [
 | |
|                                 Await(
 | |
|                                     ExprAwait {
 | |
|                                         node_index: NodeIndex(None),
 | |
|                                         range: 20..27,
 | |
|                                         value: Name(
 | |
|                                             ExprName {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 26..27,
 | |
|                                                 id: Name("a"),
 | |
|                                                 ctx: Load,
 | |
|                                             },
 | |
|                                         ),
 | |
|                                     },
 | |
|                                 ),
 | |
|                                 Name(
 | |
|                                     ExprName {
 | |
|                                         node_index: NodeIndex(None),
 | |
|                                         range: 32..33,
 | |
|                                         id: Name("b"),
 | |
|                                         ctx: Load,
 | |
|                                     },
 | |
|                                 ),
 | |
|                             ],
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 34..43,
 | |
|                     value: Await(
 | |
|                         ExprAwait {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 34..43,
 | |
|                             value: Call(
 | |
|                                 ExprCall {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 40..43,
 | |
|                                     func: Name(
 | |
|                                         ExprName {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 40..41,
 | |
|                                             id: Name("f"),
 | |
|                                             ctx: Load,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                     arguments: Arguments {
 | |
|                                         range: 41..43,
 | |
|                                         node_index: NodeIndex(None),
 | |
|                                         args: [],
 | |
|                                         keywords: [],
 | |
|                                     },
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 44..56,
 | |
|                     value: Await(
 | |
|                         ExprAwait {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 44..56,
 | |
|                             value: List(
 | |
|                                 ExprList {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 50..56,
 | |
|                                     elts: [
 | |
|                                         NumberLiteral(
 | |
|                                             ExprNumberLiteral {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 51..52,
 | |
|                                                 value: Int(
 | |
|                                                     1,
 | |
|                                                 ),
 | |
|                                             },
 | |
|                                         ),
 | |
|                                         NumberLiteral(
 | |
|                                             ExprNumberLiteral {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 54..55,
 | |
|                                                 value: Int(
 | |
|                                                     2,
 | |
|                                                 ),
 | |
|                                             },
 | |
|                                         ),
 | |
|                                     ],
 | |
|                                     ctx: Load,
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 57..69,
 | |
|                     value: Await(
 | |
|                         ExprAwait {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 57..69,
 | |
|                             value: Set(
 | |
|                                 ExprSet {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 63..69,
 | |
|                                     elts: [
 | |
|                                         NumberLiteral(
 | |
|                                             ExprNumberLiteral {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 64..65,
 | |
|                                                 value: Int(
 | |
|                                                     3,
 | |
|                                                 ),
 | |
|                                             },
 | |
|                                         ),
 | |
|                                         NumberLiteral(
 | |
|                                             ExprNumberLiteral {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 67..68,
 | |
|                                                 value: Int(
 | |
|                                                     4,
 | |
|                                                 ),
 | |
|                                             },
 | |
|                                         ),
 | |
|                                     ],
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 70..82,
 | |
|                     value: Await(
 | |
|                         ExprAwait {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 70..82,
 | |
|                             value: Dict(
 | |
|                                 ExprDict {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 76..82,
 | |
|                                     items: [
 | |
|                                         DictItem {
 | |
|                                             key: Some(
 | |
|                                                 Name(
 | |
|                                                     ExprName {
 | |
|                                                         node_index: NodeIndex(None),
 | |
|                                                         range: 77..78,
 | |
|                                                         id: Name("i"),
 | |
|                                                         ctx: Load,
 | |
|                                                     },
 | |
|                                                 ),
 | |
|                                             ),
 | |
|                                             value: NumberLiteral(
 | |
|                                                 ExprNumberLiteral {
 | |
|                                                     node_index: NodeIndex(None),
 | |
|                                                     range: 80..81,
 | |
|                                                     value: Int(
 | |
|                                                         5,
 | |
|                                                     ),
 | |
|                                                 },
 | |
|                                             ),
 | |
|                                         },
 | |
|                                     ],
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 83..93,
 | |
|                     value: Tuple(
 | |
|                         ExprTuple {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 83..93,
 | |
|                             elts: [
 | |
|                                 Await(
 | |
|                                     ExprAwait {
 | |
|                                         node_index: NodeIndex(None),
 | |
|                                         range: 83..90,
 | |
|                                         value: NumberLiteral(
 | |
|                                             ExprNumberLiteral {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 89..90,
 | |
|                                                 value: Int(
 | |
|                                                     7,
 | |
|                                                 ),
 | |
|                                             },
 | |
|                                         ),
 | |
|                                     },
 | |
|                                 ),
 | |
|                                 NumberLiteral(
 | |
|                                     ExprNumberLiteral {
 | |
|                                         node_index: NodeIndex(None),
 | |
|                                         range: 92..93,
 | |
|                                         value: Int(
 | |
|                                             8,
 | |
|                                         ),
 | |
|                                     },
 | |
|                                 ),
 | |
|                             ],
 | |
|                             ctx: Load,
 | |
|                             parenthesized: false,
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 94..107,
 | |
|                     value: Await(
 | |
|                         ExprAwait {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 94..107,
 | |
|                             value: Tuple(
 | |
|                                 ExprTuple {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 100..107,
 | |
|                                     elts: [
 | |
|                                         NumberLiteral(
 | |
|                                             ExprNumberLiteral {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 101..102,
 | |
|                                                 value: Int(
 | |
|                                                     9,
 | |
|                                                 ),
 | |
|                                             },
 | |
|                                         ),
 | |
|                                         NumberLiteral(
 | |
|                                             ExprNumberLiteral {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 104..106,
 | |
|                                                 value: Int(
 | |
|                                                     10,
 | |
|                                                 ),
 | |
|                                             },
 | |
|                                         ),
 | |
|                                     ],
 | |
|                                     ctx: Load,
 | |
|                                     parenthesized: true,
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 108..120,
 | |
|                     value: Compare(
 | |
|                         ExprCompare {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 108..120,
 | |
|                             left: Await(
 | |
|                                 ExprAwait {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 108..115,
 | |
|                                     value: NumberLiteral(
 | |
|                                         ExprNumberLiteral {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 114..115,
 | |
|                                             value: Int(
 | |
|                                                 1,
 | |
|                                             ),
 | |
|                                         },
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                             ops: [
 | |
|                                 Eq,
 | |
|                             ],
 | |
|                             comparators: [
 | |
|                                 NumberLiteral(
 | |
|                                     ExprNumberLiteral {
 | |
|                                         node_index: NodeIndex(None),
 | |
|                                         range: 119..120,
 | |
|                                         value: Int(
 | |
|                                             1,
 | |
|                                         ),
 | |
|                                     },
 | |
|                                 ),
 | |
|                             ],
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 121..146,
 | |
|                     value: If(
 | |
|                         ExprIf {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 121..146,
 | |
|                             test: BooleanLiteral(
 | |
|                                 ExprBooleanLiteral {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 132..136,
 | |
|                                     value: true,
 | |
|                                 },
 | |
|                             ),
 | |
|                             body: Await(
 | |
|                                 ExprAwait {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 121..128,
 | |
|                                     value: Name(
 | |
|                                         ExprName {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 127..128,
 | |
|                                             id: Name("x"),
 | |
|                                             ctx: Load,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                             orelse: NoneLiteral(
 | |
|                                 ExprNoneLiteral {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 142..146,
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 147..158,
 | |
|                     value: Await(
 | |
|                         ExprAwait {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 147..158,
 | |
|                             value: Tuple(
 | |
|                                 ExprTuple {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 153..158,
 | |
|                                     elts: [
 | |
|                                         Starred(
 | |
|                                             ExprStarred {
 | |
|                                                 node_index: NodeIndex(None),
 | |
|                                                 range: 154..156,
 | |
|                                                 value: Name(
 | |
|                                                     ExprName {
 | |
|                                                         node_index: NodeIndex(None),
 | |
|                                                         range: 155..156,
 | |
|                                                         id: Name("x"),
 | |
|                                                         ctx: Load,
 | |
|                                                     },
 | |
|                                                 ),
 | |
|                                                 ctx: Load,
 | |
|                                             },
 | |
|                                         ),
 | |
|                                     ],
 | |
|                                     ctx: Load,
 | |
|                                     parenthesized: true,
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 159..178,
 | |
|                     value: Await(
 | |
|                         ExprAwait {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 159..178,
 | |
|                             value: Lambda(
 | |
|                                 ExprLambda {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 166..177,
 | |
|                                     parameters: Some(
 | |
|                                         Parameters {
 | |
|                                             range: 173..174,
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             posonlyargs: [],
 | |
|                                             args: [
 | |
|                                                 ParameterWithDefault {
 | |
|                                                     range: 173..174,
 | |
|                                                     node_index: NodeIndex(None),
 | |
|                                                     parameter: Parameter {
 | |
|                                                         range: 173..174,
 | |
|                                                         node_index: NodeIndex(None),
 | |
|                                                         name: Identifier {
 | |
|                                                             id: Name("x"),
 | |
|                                                             range: 173..174,
 | |
|                                                             node_index: NodeIndex(None),
 | |
|                                                         },
 | |
|                                                         annotation: None,
 | |
|                                                     },
 | |
|                                                     default: None,
 | |
|                                                 },
 | |
|                                             ],
 | |
|                                             vararg: None,
 | |
|                                             kwonlyargs: [],
 | |
|                                             kwarg: None,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                     body: Name(
 | |
|                                         ExprName {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 176..177,
 | |
|                                             id: Name("x"),
 | |
|                                             ctx: Load,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 179..192,
 | |
|                     value: BinOp(
 | |
|                         ExprBinOp {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 179..192,
 | |
|                             left: Await(
 | |
|                                 ExprAwait {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 179..186,
 | |
|                                     value: Name(
 | |
|                                         ExprName {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 185..186,
 | |
|                                             id: Name("x"),
 | |
|                                             ctx: Load,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                             op: Pow,
 | |
|                             right: UnaryOp(
 | |
|                                 ExprUnaryOp {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 190..192,
 | |
|                                     op: USub,
 | |
|                                     operand: Name(
 | |
|                                         ExprName {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 191..192,
 | |
|                                             id: Name("x"),
 | |
|                                             ctx: Load,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|             Expr(
 | |
|                 StmtExpr {
 | |
|                     node_index: NodeIndex(None),
 | |
|                     range: 193..211,
 | |
|                     value: BinOp(
 | |
|                         ExprBinOp {
 | |
|                             node_index: NodeIndex(None),
 | |
|                             range: 193..211,
 | |
|                             left: Await(
 | |
|                                 ExprAwait {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 193..200,
 | |
|                                     value: Name(
 | |
|                                         ExprName {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 199..200,
 | |
|                                             id: Name("x"),
 | |
|                                             ctx: Load,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                             op: Pow,
 | |
|                             right: Await(
 | |
|                                 ExprAwait {
 | |
|                                     node_index: NodeIndex(None),
 | |
|                                     range: 204..211,
 | |
|                                     value: Name(
 | |
|                                         ExprName {
 | |
|                                             node_index: NodeIndex(None),
 | |
|                                             range: 210..211,
 | |
|                                             id: Name("y"),
 | |
|                                             ctx: Load,
 | |
|                                         },
 | |
|                                     ),
 | |
|                                 },
 | |
|                             ),
 | |
|                         },
 | |
|                     ),
 | |
|                 },
 | |
|             ),
 | |
|         ],
 | |
|     },
 | |
| )
 | |
| ```
 |