From c9dff5c7d5bcab2a83f1c3b4a1a80af230ece541 Mon Sep 17 00:00:00 2001 From: Ibraheem Ahmed Date: Fri, 13 Jun 2025 08:40:11 -0400 Subject: [PATCH] [ty] AST garbage collection (#18482) ## Summary Garbage collect ASTs once we are done checking a given file. Queries with a cross-file dependency on the AST will reparse the file on demand. This reduces ty's peak memory usage by ~20-30%. The primary change of this PR is adding a `node_index` field to every AST node, that is assigned by the parser. `ParsedModule` can use this to create a flat index of AST nodes any time the file is parsed (or reparsed). This allows `AstNodeRef` to simply index into the current instance of the `ParsedModule`, instead of storing a pointer directly. The indices are somewhat hackily (using an atomic integer) assigned by the `parsed_module` query instead of by the parser directly. Assigning the indices in source-order in the (recursive) parser turns out to be difficult, and collecting the nodes during semantic indexing is impossible as `SemanticIndex` does not hold onto a specific `ParsedModuleRef`, which the pointers in the flat AST are tied to. This means that we have to do an extra AST traversal to assign and collect the nodes into a flat index, but the small performance impact (~3% on cold runs) seems worth it for the memory savings. Part of https://github.com/astral-sh/ty/issues/214. --- Cargo.lock | 7 + Cargo.toml | 1 + crates/ruff_db/Cargo.toml | 1 + crates/ruff_db/src/parsed.rs | 323 ++- crates/ruff_graph/src/collector.rs | 14 +- .../checkers/ast/analyze/except_handler.rs | 1 + .../src/checkers/ast/analyze/expression.rs | 27 +- .../src/checkers/ast/analyze/statement.rs | 42 +- crates/ruff_linter/src/checkers/ast/mod.rs | 74 +- crates/ruff_linter/src/doc_lines.rs | 1 + .../ruff_linter/src/docstrings/extraction.rs | 7 +- crates/ruff_linter/src/importer/mod.rs | 1 + .../src/rules/airflow/rules/removal_in_3.rs | 14 +- .../airflow/rules/suggested_to_update_3_0.rs | 1 + .../src/rules/flake8_2020/rules/subscript.rs | 1 + .../src/rules/flake8_annotations/helpers.rs | 2 + .../flake8_annotations/rules/definition.rs | 7 +- .../rules/bad_file_permissions.rs | 1 + .../rules/abstract_base_class.rs | 6 +- .../flake8_bugbear/rules/assert_false.rs | 4 + .../rules/assert_raises_exception.rs | 1 + .../rules/duplicate_exceptions.rs | 1 + .../rules/f_string_docstring.rs | 7 +- .../rules/function_uses_loop_variable.rs | 3 + .../rules/loop_iterator_mutation.rs | 10 +- .../rules/loop_variable_overrides_iterator.rs | 1 + .../rules/return_in_generator.rs | 1 + .../rules/reuse_of_groupby_generator.rs | 11 +- .../rules/setattr_with_constant.rs | 3 + ...cessary_dict_comprehension_for_iterable.rs | 3 + .../rules/unnecessary_list_call.rs | 2 + .../rules/unnecessary_subscript_reversal.rs | 2 + .../rules/multiple_starts_ends_with.rs | 11 + .../rules/reimplemented_container_builtin.rs | 1 + .../rules/duplicate_literal_member.rs | 2 + .../rules/duplicate_union_member.rs | 1 + .../flake8_pyi/rules/exit_annotations.rs | 1 + .../src/rules/flake8_pyi/rules/mod.rs | 3 + .../flake8_pyi/rules/non_empty_stub_body.rs | 7 +- .../rules/redundant_none_literal.rs | 3 + .../rules/redundant_numeric_union.rs | 1 + .../rules/flake8_pyi/rules/simple_defaults.rs | 11 +- .../rules/unnecessary_literal_union.rs | 4 + .../rules/unnecessary_type_union.rs | 9 + .../flake8_pytest_style/rules/assertion.rs | 2 + .../flake8_pytest_style/rules/fixture.rs | 13 +- .../rules/flake8_pytest_style/rules/marks.rs | 2 + .../flake8_pytest_style/rules/parametrize.rs | 7 + .../rules/flake8_pytest_style/rules/patch.rs | 1 + .../rules/unittest_assert.rs | 13 + .../rules/unnecessary_escaped_quote.rs | 2 + .../unnecessary_paren_on_raise_exception.rs | 1 + .../src/rules/flake8_return/visitor.rs | 12 +- .../flake8_simplify/rules/ast_bool_op.rs | 19 + .../rules/flake8_simplify/rules/ast_expr.rs | 2 + .../rules/flake8_simplify/rules/ast_ifexp.rs | 6 + .../flake8_simplify/rules/ast_unary_op.rs | 8 + .../if_else_block_instead_of_dict_get.rs | 9 + .../if_else_block_instead_of_dict_lookup.rs | 29 +- .../rules/if_else_block_instead_of_if_exp.rs | 7 + .../flake8_simplify/rules/key_in_dict.rs | 1 + .../flake8_simplify/rules/needless_bool.rs | 15 +- .../rules/open_file_with_context_handler.rs | 7 +- .../rules/reimplemented_builtin.rs | 15 + .../rules/split_static_string.rs | 2 + .../rules/suppressible_exception.rs | 8 +- .../flake8_simplify/rules/yoda_conditions.rs | 1 + .../rules/relative_imports.rs | 1 + .../src/rules/flake8_type_checking/helpers.rs | 1 + crates/ruff_linter/src/rules/flynt/helpers.rs | 17 +- .../flynt/rules/static_join_to_fstring.rs | 2 + .../ruff_linter/src/rules/isort/annotate.rs | 7 +- .../rules/isort/rules/add_required_imports.rs | 8 +- .../rules/nunique_constant_series_check.rs | 1 + .../rules/manual_dict_comprehension.rs | 1 + .../rules/manual_list_comprehension.rs | 2 + .../rules/perflint/rules/manual_list_copy.rs | 2 + .../perflint/rules/unnecessary_list_cast.rs | 2 + .../pycodestyle/rules/lambda_assignment.rs | 3 + .../rules/multiple_imports_on_one_line.rs | 2 + .../src/rules/pycodestyle/rules/not_tests.rs | 1 + .../rules/pydoclint/rules/check_docstring.rs | 14 +- .../rules/bad_string_format_character.rs | 1 + .../pylint/rules/bad_string_format_type.rs | 7 +- .../src/rules/pylint/rules/if_stmt_min_max.rs | 1 + .../rules/pylint/rules/manual_import_from.rs | 2 + .../src/rules/pylint/rules/nested_min_max.rs | 5 + .../rules/pylint/rules/redefined_loop_name.rs | 4 + .../rules/redefined_slots_in_subclass.rs | 20 +- .../rules/repeated_equality_comparison.rs | 6 +- .../src/rules/pylint/rules/return_in_init.rs | 7 +- .../rules/pylint/rules/unnecessary_lambda.rs | 1 + .../pylint/rules/unspecified_encoding.rs | 1 + .../src/rules/pylint/rules/useless_return.rs | 14 +- ...convert_named_tuple_functional_to_class.rs | 7 + .../convert_typed_dict_functional_to_class.rs | 18 +- .../rules/deprecated_c_element_tree.rs | 7 +- .../pyupgrade/rules/deprecated_mock_import.rs | 6 +- .../src/rules/pyupgrade/rules/f_strings.rs | 1 + .../rules/lru_cache_with_maxsize_none.rs | 3 + .../rules/lru_cache_without_parameters.rs | 1 + .../rules/pyupgrade/rules/native_literals.rs | 6 + .../rules/pyupgrade/rules/os_error_alias.rs | 2 + .../pyupgrade/rules/outdated_version_block.rs | 1 + .../src/rules/pyupgrade/rules/pep695/mod.rs | 7 + .../rules/printf_string_formatting.rs | 7 +- .../pyupgrade/rules/timeout_error_alias.rs | 2 + .../rules/unnecessary_default_type_args.rs | 3 + .../pyupgrade/rules/yield_in_for_loop.rs | 9 +- .../ruff_linter/src/rules/refurb/helpers.rs | 6 + .../refurb/rules/check_and_remove_from_set.rs | 4 + .../rules/refurb/rules/delete_full_slice.rs | 1 + .../rules/if_exp_instead_of_or_operator.rs | 1 + .../src/rules/refurb/rules/read_whole_file.rs | 3 + .../refurb/rules/reimplemented_starmap.rs | 6 + .../src/rules/refurb/rules/repeated_append.rs | 5 + .../rules/single_item_membership_test.rs | 1 + .../src/rules/refurb/rules/slice_copy.rs | 1 + .../rules/slice_to_remove_prefix_or_suffix.rs | 10 + .../refurb/rules/unnecessary_enumerate.rs | 8 + .../rules/refurb/rules/write_whole_file.rs | 3 + .../ruff/rules/assert_with_print_message.rs | 8 + .../rules/collection_literal_concatenation.rs | 4 + .../explicit_f_string_type_conversion.rs | 1 + .../src/rules/ruff/rules/implicit_optional.rs | 3 + .../rules/ruff/rules/in_empty_collection.rs | 1 + .../ruff/rules/map_int_version_parsing.rs | 9 +- .../ruff/rules/mutable_fromkeys_value.rs | 3 + .../src/rules/ruff/rules/never_union.rs | 4 + .../ruff/rules/quadratic_list_summation.rs | 1 + .../src/rules/ruff/rules/sort_dunder_slots.rs | 6 +- .../ruff/rules/unnecessary_nested_literal.rs | 2 + .../rules/unnecessary_regular_expression.rs | 5 + .../ruff/rules/zip_instead_of_pairwise.rs | 1 + .../tryceratops/rules/try_consider_else.rs | 7 +- crates/ruff_python_ast/generate.py | 211 ++ crates/ruff_python_ast/src/comparable.rs | 194 +- crates/ruff_python_ast/src/generated.rs | 2439 ++++++++++++++++- crates/ruff_python_ast/src/helpers.rs | 170 +- crates/ruff_python_ast/src/lib.rs | 2 + crates/ruff_python_ast/src/node.rs | 97 +- crates/ruff_python_ast/src/node_index.rs | 98 + crates/ruff_python_ast/src/nodes.rs | 107 +- crates/ruff_python_ast/src/relocate.rs | 4 +- crates/ruff_python_ast/src/visitor.rs | 82 +- .../src/visitor/transformer.rs | 82 +- .../tests/visitor.rs | 12 +- crates/ruff_python_codegen/src/generator.rs | 113 +- crates/ruff_python_formatter/CONTRIBUTING.md | 2 +- .../src/comments/debug.rs | 4 +- .../src/comments/node_key.rs | 3 + .../src/comments/placement.rs | 2 + .../src/expression/expr_attribute.rs | 8 +- .../src/expression/expr_await.rs | 6 +- .../src/expression/expr_call.rs | 1 + .../src/expression/expr_dict.rs | 6 +- .../src/expression/expr_dict_comp.rs | 1 + .../src/expression/expr_generator.rs | 1 + .../src/expression/expr_if.rs | 1 + .../src/expression/expr_lambda.rs | 1 + .../src/expression/expr_list.rs | 1 + .../src/expression/expr_list_comp.rs | 1 + .../src/expression/expr_name.rs | 1 + .../src/expression/expr_named.rs | 1 + .../src/expression/expr_set.rs | 6 +- .../src/expression/expr_set_comp.rs | 1 + .../src/expression/expr_slice.rs | 2 + .../src/expression/expr_starred.rs | 1 + .../src/expression/expr_subscript.rs | 1 + .../src/expression/expr_tuple.rs | 1 + .../src/expression/expr_unary_op.rs | 1 + .../src/expression/mod.rs | 6 + .../src/module/mod_expression.rs | 6 +- .../src/module/mod_module.rs | 6 +- .../ruff_python_formatter/src/other/alias.rs | 1 + .../src/other/arguments.rs | 1 + .../src/other/comprehension.rs | 1 + .../src/other/decorator.rs | 1 + .../other/except_handler_except_handler.rs | 1 + .../src/other/keyword.rs | 1 + .../src/other/match_case.rs | 1 + .../src/other/parameter.rs | 1 + .../src/other/parameter_with_default.rs | 1 + .../src/other/parameters.rs | 1 + .../src/other/with_item.rs | 1 + .../src/pattern/pattern_keyword.rs | 1 + .../src/pattern/pattern_match_as.rs | 1 + .../src/pattern/pattern_match_class.rs | 1 + .../src/pattern/pattern_match_mapping.rs | 2 + .../src/pattern/pattern_match_or.rs | 6 +- .../src/pattern/pattern_match_sequence.rs | 6 +- .../src/pattern/pattern_match_value.rs | 6 +- crates/ruff_python_formatter/src/range.rs | 2 + .../src/statement/clause.rs | 10 + .../src/statement/stmt_ann_assign.rs | 1 + .../src/statement/stmt_assert.rs | 1 + .../src/statement/stmt_assign.rs | 1 + .../src/statement/stmt_aug_assign.rs | 1 + .../src/statement/stmt_class_def.rs | 1 + .../src/statement/stmt_delete.rs | 6 +- .../src/statement/stmt_for.rs | 1 + .../src/statement/stmt_function_def.rs | 1 + .../src/statement/stmt_if.rs | 2 + .../src/statement/stmt_import.rs | 6 +- .../src/statement/stmt_import_from.rs | 1 + .../src/statement/stmt_match.rs | 1 + .../src/statement/stmt_raise.rs | 1 + .../src/statement/stmt_return.rs | 6 +- .../src/statement/stmt_try.rs | 1 + .../src/statement/stmt_type_alias.rs | 1 + .../src/statement/stmt_while.rs | 1 + .../src/type_param/type_param_param_spec.rs | 1 + .../src/type_param/type_param_type_var.rs | 1 + .../type_param/type_param_type_var_tuple.rs | 1 + .../ruff_python_formatter/tests/normalizer.rs | 6 +- crates/ruff_python_parser/src/lib.rs | 3 +- .../src/parser/expression.rs | 86 +- crates/ruff_python_parser/src/parser/mod.rs | 4 +- .../ruff_python_parser/src/parser/pattern.rs | 62 +- .../ruff_python_parser/src/parser/recovery.rs | 68 +- ...parser__tests__expr_mode_valid_syntax.snap | 2 +- ...arser__tests__ipython_escape_commands.snap | 59 +- ...arser__parser__tests__unicode_aliases.snap | 5 +- .../src/parser/statement.rs | 53 +- .../ruff_python_parser/src/semantic_errors.rs | 7 +- ...arser__string__tests__backspace_alias.snap | 4 +- ...hon_parser__string__tests__bell_alias.snap | 4 +- ..._string__tests__carriage_return_alias.snap | 4 +- ...r_tabulation_with_justification_alias.snap | 4 +- ...n_parser__string__tests__delete_alias.snap | 4 +- ...ests__dont_panic_on_8_in_octal_escape.snap | 5 +- ...er__string__tests__double_quoted_byte.snap | 4 +- ...n_parser__string__tests__escape_alias.snap | 4 +- ...g__tests__escape_char_in_byte_literal.snap | 4 +- ...n_parser__string__tests__escape_octet.snap | 4 +- ...arser__string__tests__form_feed_alias.snap | 4 +- ...string__tests__fstring_constant_range.snap | 10 + ...ing__tests__fstring_escaped_character.snap | 6 + ...tring__tests__fstring_escaped_newline.snap | 6 + ...ing__tests__fstring_line_continuation.snap | 6 + ...__fstring_parse_self_documenting_base.snap | 5 + ...ring_parse_self_documenting_base_more.snap | 9 + ...fstring_parse_self_documenting_format.snap | 7 + ...ing__tests__fstring_unescaped_newline.snap | 6 + ...thon_parser__string__tests__hts_alias.snap | 4 +- ...r__string__tests__parse_empty_fstring.snap | 3 + ...r__string__tests__parse_empty_tstring.snap | 3 + ...tring__tests__parse_f_string_concat_1.snap | 5 + ...tring__tests__parse_f_string_concat_2.snap | 5 + ...tring__tests__parse_f_string_concat_3.snap | 8 + ...tring__tests__parse_f_string_concat_4.snap | 9 + ...ing__tests__parse_f_t_string_concat_1.snap | 6 + ...ing__tests__parse_f_t_string_concat_2.snap | 7 + ..._parser__string__tests__parse_fstring.snap | 8 + ...__string__tests__parse_fstring_equals.snap | 7 + ...ring_nested_concatenation_string_spec.snap | 10 + ...ing__tests__parse_fstring_nested_spec.snap | 8 + ...sts__parse_fstring_nested_string_spec.snap | 9 + ...ring__tests__parse_fstring_not_equals.snap | 7 + ..._tests__parse_fstring_not_nested_spec.snap | 7 + ...ts__parse_fstring_self_doc_prec_space.snap | 5 + ...parse_fstring_self_doc_trailing_space.snap | 5 + ...ring__tests__parse_fstring_yield_expr.snap | 5 + ...r__string__tests__parse_string_concat.snap | 5 +- ..._parse_string_triple_quotes_with_kind.snap | 4 +- ...tring__tests__parse_t_string_concat_1.snap | 5 + ...tring__tests__parse_t_string_concat_2.snap | 5 + ...tring__tests__parse_t_string_concat_3.snap | 8 + ...tring__tests__parse_t_string_concat_4.snap | 9 + ..._parser__string__tests__parse_tstring.snap | 8 + ...__string__tests__parse_tstring_equals.snap | 7 + ...ring_nested_concatenation_string_spec.snap | 10 + ...ing__tests__parse_tstring_nested_spec.snap | 8 + ...sts__parse_tstring_nested_string_spec.snap | 9 + ...ring__tests__parse_tstring_not_equals.snap | 7 + ..._tests__parse_tstring_not_nested_spec.snap | 7 + ...ts__parse_tstring_self_doc_prec_space.snap | 5 + ...parse_tstring_self_doc_trailing_space.snap | 5 + ...ring__tests__parse_tstring_yield_expr.snap | 5 + ...ing__tests__parse_u_f_string_concat_1.snap | 5 + ...ing__tests__parse_u_f_string_concat_2.snap | 6 + ...tring__tests__parse_u_string_concat_1.snap | 5 +- ...tring__tests__parse_u_string_concat_2.snap | 5 +- ...ing__tests__parse_u_t_string_concat_1.snap | 5 + ...ing__tests__parse_u_t_string_concat_2.snap | 6 + ...er__string__tests__raw_byte_literal_1.snap | 4 +- ...er__string__tests__raw_byte_literal_2.snap | 4 +- ...on_parser__string__tests__raw_fstring.snap | 5 + ...on_parser__string__tests__raw_tstring.snap | 5 + ...er__string__tests__single_quoted_byte.snap | 4 +- ..._tests__string_parser_escaped_mac_eol.snap | 4 +- ...tests__string_parser_escaped_unix_eol.snap | 4 +- ...ts__string_parser_escaped_windows_eol.snap | 4 +- ...ing__tests__triple_quoted_raw_fstring.snap | 5 + ...ing__tests__triple_quoted_raw_tstring.snap | 5 + ...string__tests__tstring_constant_range.snap | 10 + ...ing__tests__tstring_escaped_character.snap | 6 + ...tring__tests__tstring_escaped_newline.snap | 6 + ...ing__tests__tstring_line_continuation.snap | 6 + ...__tstring_parse_self_documenting_base.snap | 5 + ...ring_parse_self_documenting_base_more.snap | 9 + ...tstring_parse_self_documenting_format.snap | 7 + ...ing__tests__tstring_unescaped_newline.snap | 6 + crates/ruff_python_parser/src/string.rs | 10 +- ...ann_assign_stmt_invalid_annotation.py.snap | 22 + ...tax@ann_assign_stmt_invalid_target.py.snap | 56 +- ...ntax@ann_assign_stmt_invalid_value.py.snap | 28 +- ...syntax@ann_assign_stmt_missing_rhs.py.snap | 5 +- ..._assign_stmt_type_alias_annotation.py.snap | 14 +- ...tax@args_unparenthesized_generator.py.snap | 41 + .../invalid_syntax@assert_empty_msg.py.snap | 4 +- .../invalid_syntax@assert_empty_test.py.snap | 4 +- ...lid_syntax@assert_invalid_msg_expr.py.snap | 19 +- ...id_syntax@assert_invalid_test_expr.py.snap | 16 +- ..._syntax@assign_stmt_invalid_target.py.snap | 26 +- ...tax@assign_stmt_invalid_value_expr.py.snap | 39 + ..._syntax@assign_stmt_keyword_target.py.snap | 19 +- ...lid_syntax@assign_stmt_missing_rhs.py.snap | 25 +- ...tax@assign_stmt_starred_expr_value.py.snap | 23 + ...alid_syntax@async_unexpected_token.py.snap | 26 +- ...tax@aug_assign_stmt_invalid_target.py.snap | 25 +- ...ntax@aug_assign_stmt_invalid_value.py.snap | 34 +- ...syntax@aug_assign_stmt_missing_rhs.py.snap | 16 +- ..._syntax@case_expect_indented_block.py.snap | 12 +- ...nvalid_syntax@class_def_empty_body.py.snap | 10 +- ...alid_syntax@class_def_missing_name.py.snap | 19 +- ...class_def_unclosed_type_param_list.py.snap | 16 +- ...lid_syntax@class_type_params_py311.py.snap | 23 + ...yntax@clause_expect_indented_block.py.snap | 7 +- ...tax@clause_expect_single_statement.py.snap | 7 +- ...ntax@comma_separated_missing_comma.py.snap | 9 +- ...ted_missing_comma_between_elements.py.snap | 7 +- ...ted_missing_element_between_commas.py.snap | 7 +- ...ma_separated_missing_first_element.py.snap | 7 +- ...prehension_missing_for_after_async.py.snap | 10 +- .../invalid_syntax@debug_shadow_class.py.snap | 12 + ...valid_syntax@debug_shadow_function.py.snap | 28 + ...invalid_syntax@debug_shadow_import.py.snap | 17 + .../invalid_syntax@debug_shadow_match.py.snap | 8 + .../invalid_syntax@debug_shadow_try.py.snap | 9 + ...lid_syntax@debug_shadow_type_alias.py.snap | 12 + .../invalid_syntax@debug_shadow_with.py.snap | 11 + ...ax@decorator_await_expression_py38.py.snap | 16 + ...syntax@decorator_dict_literal_py38.py.snap | 12 + ...d_syntax@decorator_expression_py38.py.snap | 16 + ...yntax@decorator_float_literal_py38.py.snap | 10 + ...yntax@decorator_invalid_expression.py.snap | 24 +- ...yntax@decorator_missing_expression.py.snap | 27 +- ...d_syntax@decorator_missing_newline.py.snap | 26 +- ...ax@decorator_named_expression_py37.py.snap | 22 + ..._non_toplevel_call_expression_py38.py.snap | 16 + ..._syntax@decorator_unexpected_token.py.snap | 10 +- .../invalid_syntax@del_debug_py39.py.snap | 3 + ...valid_syntax@del_incomplete_target.py.snap | 15 + .../invalid_syntax@del_stmt_empty.py.snap | 3 +- ...d_syntax@dotted_name_multiple_dots.py.snap | 12 +- ..._syntax@duplicate_match_class_attr.py.snap | 110 + ...invalid_syntax@duplicate_match_key.py.snap | 190 ++ ...tax@duplicate_type_parameter_names.py.snap | 93 + .../invalid_syntax@except_star_py310.py.snap | 16 + ...tax@except_stmt_invalid_expression.py.snap | 14 +- ...syntax@except_stmt_missing_as_name.py.snap | 10 +- ...ntax@except_stmt_missing_exception.py.snap | 16 +- ...stmt_missing_exception_and_as_name.py.snap | 6 +- ...cept_stmt_unparenthesized_tuple_as.py.snap | 17 + ..._unparenthesized_tuple_no_as_py313.py.snap | 15 + ...essions__arguments__double_starred.py.snap | 29 + ...ments__duplicate_keyword_arguments.py.snap | 21 +- ...ons__arguments__invalid_expression.py.snap | 27 + ...uments__invalid_keyword_expression.py.snap | 34 +- ...ressions__arguments__invalid_order.py.snap | 43 +- ...sions__arguments__missing_argument.py.snap | 8 +- ...ressions__arguments__missing_comma.py.snap | 8 +- ...ons__arguments__missing_expression.py.snap | 22 + ...ax@expressions__arguments__starred.py.snap | 26 +- ...expressions__arguments__unclosed_0.py.snap | 11 + ...expressions__arguments__unclosed_1.py.snap | 12 + ...expressions__arguments__unclosed_2.py.snap | 12 + ...essions__attribute__invalid_member.py.snap | 18 +- ...ressions__attribute__multiple_dots.py.snap | 22 +- ...@expressions__attribute__no_member.py.snap | 11 + ...xpressions__await__no_expression_0.py.snap | 8 + ...xpressions__await__no_expression_1.py.snap | 10 + ...syntax@expressions__await__recover.py.snap | 43 + ...ns__bin_op__invalid_rhs_expression.py.snap | 17 + ...x@expressions__bin_op__missing_lhs.py.snap | 7 + ...expressions__bin_op__missing_rhs_0.py.snap | 9 + ...expressions__bin_op__missing_rhs_1.py.snap | 13 + ...@expressions__bin_op__multiple_ops.py.snap | 20 +- ...ressions__bin_op__named_expression.py.snap | 16 +- ...ssions__bin_op__starred_expression.py.snap | 12 +- ...s__bool_op__invalid_rhs_expression.py.snap | 17 + ...@expressions__bool_op__missing_lhs.py.snap | 4 +- ...@expressions__bool_op__missing_rhs.py.snap | 9 + ...essions__bool_op__named_expression.py.snap | 14 +- ...sions__bool_op__starred_expression.py.snap | 12 +- ...xpressions__compare__invalid_order.py.snap | 18 + ...s__compare__invalid_rhs_expression.py.snap | 17 + ...@expressions__compare__missing_lhs.py.snap | 7 + ...xpressions__compare__missing_rhs_0.py.snap | 9 + ...xpressions__compare__missing_rhs_1.py.snap | 10 + ...xpressions__compare__missing_rhs_2.py.snap | 9 + ...ressions__compare__multiple_equals.py.snap | 12 +- ...essions__compare__named_expression.py.snap | 16 +- ...sions__compare__starred_expression.py.snap | 21 + ...x@expressions__dict__comprehension.py.snap | 114 + ...tax@expressions__dict__double_star.py.snap | 63 + ...s__dict__double_star_comprehension.py.snap | 12 + ...ons__dict__missing_closing_brace_0.py.snap | 9 + ...ons__dict__missing_closing_brace_1.py.snap | 7 + ...ons__dict__missing_closing_brace_2.py.snap | 11 + ...ressions__dict__named_expression_0.py.snap | 15 + ...ressions__dict__named_expression_1.py.snap | 15 + ..._syntax@expressions__dict__recover.py.snap | 52 + ...tax@expressions__emoji_identifiers.py.snap | 10 + ...yntax@expressions__emoji_statement.py.snap | 2 +- ...essions__if__missing_orelse_expr_0.py.snap | 12 + ...essions__if__missing_orelse_expr_1.py.snap | 10 + ...pressions__if__missing_test_expr_0.py.snap | 12 + ...pressions__if__missing_test_expr_1.py.snap | 10 + ...id_syntax@expressions__if__recover.py.snap | 49 + ...essions__lambda_default_parameters.py.snap | 18 +- ...sions__lambda_duplicate_parameters.py.snap | 60 + ...x@expressions__list__comprehension.py.snap | 109 + ...s__list__missing_closing_bracket_0.py.snap | 4 + ...s__list__missing_closing_bracket_1.py.snap | 6 + ...s__list__missing_closing_bracket_2.py.snap | 7 + ...s__list__missing_closing_bracket_3.py.snap | 11 + ..._syntax@expressions__list__recover.py.snap | 33 + ...__list__star_expression_precedence.py.snap | 60 + ...expressions__named__invalid_target.py.snap | 26 + ...sions__named__missing_expression_0.py.snap | 3 + ...sions__named__missing_expression_1.py.snap | 5 + ...sions__named__missing_expression_2.py.snap | 10 + ...sions__named__missing_expression_3.py.snap | 7 + ...sions__named__missing_expression_4.py.snap | 9 + ...ressions__parenthesized__generator.py.snap | 16 + ...nthesized__missing_closing_paren_0.py.snap | 3 + ...nthesized__missing_closing_paren_1.py.snap | 5 + ...nthesized__missing_closing_paren_2.py.snap | 7 + ...nthesized__missing_closing_paren_3.py.snap | 11 + ...ions__parenthesized__parenthesized.py.snap | 8 + ...@expressions__parenthesized__tuple.py.snap | 34 + ..._parenthesized__tuple_starred_expr.py.snap | 174 ++ ...ax@expressions__set__comprehension.py.snap | 109 + ...set__missing_closing_curly_brace_0.py.snap | 4 + ...set__missing_closing_curly_brace_1.py.snap | 6 + ...set__missing_closing_curly_brace_2.py.snap | 7 + ...set__missing_closing_curly_brace_3.py.snap | 11 + ...d_syntax@expressions__set__recover.py.snap | 33 + ...s__set__star_expression_precedence.py.snap | 60 + ...__subscript__invalid_slice_element.py.snap | 37 + ...sions__subscript__unclosed_slice_0.py.snap | 8 + ...sions__subscript__unclosed_slice_1.py.snap | 11 + .../invalid_syntax@expressions__unary.py.snap | 7 +- ...pressions__unary__named_expression.py.snap | 12 +- ...xpressions__unary__no_expression_0.py.snap | 8 + ...xpressions__unary__no_expression_1.py.snap | 8 + ...pressions__yield__named_expression.py.snap | 13 + ...xpressions__yield__star_expression.py.snap | 13 + ...ns__yield_from__starred_expression.py.snap | 11 + ...sions__yield_from__unparenthesized.py.snap | 19 + ...d_syntax@f_string_empty_expression.py.snap | 11 + ...g_invalid_conversion_flag_name_tok.py.snap | 6 + ..._invalid_conversion_flag_other_tok.py.snap | 11 + ...ntax@f_string_invalid_starred_expr.py.snap | 22 + ..._string_lambda_without_parentheses.py.snap | 14 + ...id_syntax@f_string_unclosed_lbrace.py.snap | 24 + ...ing_unclosed_lbrace_in_format_spec.py.snap | 16 + ...nvalid_syntax@for_iter_unpack_py38.py.snap | 26 + ..._syntax@for_stmt_invalid_iter_expr.py.snap | 21 + ...lid_syntax@for_stmt_invalid_target.py.snap | 54 + ...or_stmt_invalid_target_binary_expr.py.snap | 42 +- ...for_stmt_invalid_target_in_keyword.py.snap | 55 +- ...syntax@for_stmt_missing_in_keyword.py.snap | 12 +- ...valid_syntax@for_stmt_missing_iter.py.snap | 8 +- ...lid_syntax@for_stmt_missing_target.py.snap | 7 +- ...id_syntax@from_import_dotted_names.py.snap | 28 +- ...lid_syntax@from_import_empty_names.py.snap | 8 +- ..._syntax@from_import_missing_module.py.snap | 6 +- ...id_syntax@from_import_missing_rpar.py.snap | 22 +- ...@from_import_star_with_other_names.py.snap | 31 +- ...ort_unparenthesized_trailing_comma.py.snap | 17 +- ...lid_syntax@function_def_empty_body.py.snap | 16 +- ...x@function_def_invalid_return_expr.py.snap | 28 + ...ax@function_def_missing_identifier.py.snap | 17 +- ...x@function_def_missing_return_type.py.snap | 9 +- ...nction_def_unclosed_parameter_list.py.snap | 37 + ...ction_def_unclosed_type_param_list.py.snap | 25 +- ...n_def_unparenthesized_return_types.py.snap | 21 +- ..._syntax@function_type_params_py311.py.snap | 19 + .../invalid_syntax@global_stmt_empty.py.snap | 3 +- ...alid_syntax@global_stmt_expression.py.snap | 7 +- ..._syntax@global_stmt_trailing_comma.py.snap | 8 +- ..._syntax@if_stmt_elif_missing_colon.py.snap | 10 +- .../invalid_syntax@if_stmt_empty_body.py.snap | 8 +- ...tax@if_stmt_invalid_elif_test_expr.py.snap | 13 +- ...d_syntax@if_stmt_invalid_test_expr.py.snap | 17 +- ...valid_syntax@if_stmt_missing_colon.py.snap | 10 +- ...nvalid_syntax@if_stmt_missing_test.py.snap | 6 +- ...lid_syntax@if_stmt_misspelled_elif.py.snap | 9 + ...y_concatenated_unterminated_string.py.snap | 19 + ...ated_unterminated_string_multiline.py.snap | 23 + ...syntax@import_alias_missing_asname.py.snap | 5 +- .../invalid_syntax@import_stmt_empty.py.snap | 3 +- ...ax@import_stmt_parenthesized_names.py.snap | 10 +- ...lid_syntax@import_stmt_star_import.py.snap | 14 +- ..._syntax@import_stmt_trailing_comma.py.snap | 8 +- ...id_syntax@invalid_annotation_class.py.snap | 70 + ...syntax@invalid_annotation_function.py.snap | 259 ++ ...@invalid_annotation_function_py314.py.snap | 97 + ...id_syntax@invalid_annotation_py314.py.snap | 28 + ...ntax@invalid_annotation_type_alias.py.snap | 54 + ...nvalid_syntax@invalid_byte_literal.py.snap | 11 +- .../invalid_syntax@invalid_del_target.py.snap | 25 +- ...ax@invalid_fstring_literal_element.py.snap | 9 + ...alid_syntax@invalid_string_literal.py.snap | 8 +- ...id_syntax@irrefutable_case_pattern.py.snap | 55 + ...lid_syntax@iter_unpack_return_py37.py.snap | 19 + ...alid_syntax@iter_unpack_yield_py37.py.snap | 35 + ...ntax@lambda_body_with_starred_expr.py.snap | 47 +- ...syntax@lambda_body_with_yield_expr.py.snap | 22 +- .../invalid_syntax@match_before_py310.py.snap | 7 + ...d_syntax@match_classify_as_keyword.py.snap | 9 +- ..._classify_as_keyword_or_identifier.py.snap | 9 +- ...nvalid_syntax@match_expected_colon.py.snap | 10 +- ...x@match_stmt_expect_indented_block.py.snap | 7 + ...tax@match_stmt_expected_case_block.py.snap | 14 + ...ntax@match_stmt_invalid_guard_expr.py.snap | 29 +- ...ax@match_stmt_invalid_subject_expr.py.snap | 27 +- ...ntax@match_stmt_missing_guard_expr.py.snap | 9 +- ..._syntax@match_stmt_missing_pattern.py.snap | 9 +- ...@match_stmt_no_newline_before_case.py.snap | 7 + ...@match_stmt_single_starred_subject.py.snap | 9 +- ...mixed_bytes_and_non_bytes_literals.py.snap | 16 + ...ultiple_assignment_in_case_pattern.py.snap | 104 + ...ntax@multiple_clauses_on_same_line.py.snap | 42 +- .../invalid_syntax@named_expr_slice.py.snap | 27 + ...yntax@named_expr_slice_parse_error.py.snap | 10 + ...x@nested_async_comprehension_py310.py.snap | 125 + ...nvalid_syntax@node_range_with_gaps.py.snap | 18 + ...nlocal_declaration_at_module_level.py.snap | 6 + ...invalid_syntax@nonlocal_stmt_empty.py.snap | 7 + ...id_syntax@nonlocal_stmt_expression.py.snap | 11 + ...yntax@nonlocal_stmt_trailing_comma.py.snap | 12 + ...id_syntax@param_missing_annotation.py.snap | 22 +- ...valid_syntax@param_missing_default.py.snap | 23 +- ...ntax@param_with_invalid_annotation.py.snap | 39 + ..._syntax@param_with_invalid_default.py.snap | 38 +- ...param_with_invalid_star_annotation.py.snap | 50 + ...x@param_with_star_annotation_py310.py.snap | 12 + ...alid_syntax@params_duplicate_names.py.snap | 26 + ...rams_expected_after_star_separator.py.snap | 45 +- ...@params_kwarg_after_star_separator.py.snap | 11 +- ...alid_syntax@params_multiple_kwargs.py.snap | 14 +- ...ax@params_multiple_slash_separator.py.snap | 31 +- ...tax@params_multiple_star_separator.py.snap | 31 +- ...lid_syntax@params_multiple_varargs.py.snap | 50 +- ..._syntax@params_no_arg_before_slash.py.snap | 19 +- ...x@params_non_default_after_default.py.snap | 20 +- ...lid_syntax@params_star_after_slash.py.snap | 58 +- ...ms_star_separator_after_star_param.py.snap | 35 +- ...ax@params_var_keyword_with_default.py.snap | 22 +- ...params_var_positional_with_default.py.snap | 18 +- ...parenthesized_context_manager_py38.py.snap | 26 + ...id_syntax@parenthesized_kwarg_py38.py.snap | 22 + ...valid_syntax@pep701_f_string_py311.py.snap | 95 + .../invalid_syntax@pos_only_py37.py.snap | 49 + ...syntax@raise_stmt_from_without_exc.py.snap | 5 + ...id_syntax@raise_stmt_invalid_cause.py.snap | 15 +- ...alid_syntax@raise_stmt_invalid_exc.py.snap | 12 +- ...e_stmt_unparenthesized_tuple_cause.py.snap | 11 +- ...ise_stmt_unparenthesized_tuple_exc.py.snap | 14 +- ...nvalid_syntax@re_lex_logical_token.py.snap | 114 + ...yntax@re_lex_logical_token_mac_eol.py.snap | 15 + ...x@re_lex_logical_token_windows_eol.py.snap | 15 + ...x@re_lexing__fstring_format_spec_1.py.snap | 39 + ...tax@re_lexing__line_continuation_1.py.snap | 13 + ...ing__line_continuation_windows_eol.py.snap | 13 + ...re_lexing__triple_quoted_fstring_1.py.snap | 7 + ...re_lexing__triple_quoted_fstring_2.py.snap | 8 + ...re_lexing__triple_quoted_fstring_3.py.snap | 12 + ...tax@rebound_comprehension_variable.py.snap | 125 + ...id_syntax@return_stmt_invalid_expr.py.snap | 19 + ...ple_and_compound_stmt_on_same_line.py.snap | 9 +- ...ompound_stmt_on_same_line_in_block.py.snap | 14 +- ...d_syntax@simple_stmts_on_same_line.py.snap | 19 +- ...simple_stmts_on_same_line_in_block.py.snap | 9 +- .../invalid_syntax@single_star_for.py.snap | 13 + .../invalid_syntax@single_star_return.py.snap | 9 + .../invalid_syntax@single_star_yield.py.snap | 10 + ...x@single_starred_assignment_target.py.snap | 6 + .../invalid_syntax@star_index_py310.py.snap | 51 + .../invalid_syntax@star_slices.py.snap | 9 + ...atements__function_type_parameters.py.snap | 60 + ...ents__if_extra_closing_parentheses.py.snap | 4 + ...syntax@statements__if_extra_indent.py.snap | 12 + ...ements__invalid_assignment_targets.py.snap | 190 ++ ...nvalid_augmented_assignment_target.py.snap | 180 ++ ...ax@statements__match__as_pattern_0.py.snap | 13 +- ...ax@statements__match__as_pattern_1.py.snap | 10 +- ...ax@statements__match__as_pattern_2.py.snap | 13 + ...ax@statements__match__as_pattern_3.py.snap | 14 + ...ax@statements__match__as_pattern_4.py.snap | 13 +- ...ents__match__invalid_class_pattern.py.snap | 58 +- ..._match__invalid_lhs_or_rhs_pattern.py.snap | 143 +- ...ts__match__invalid_mapping_pattern.py.snap | 70 +- ...tements__match__star_pattern_usage.py.snap | 70 +- ...statements__match__unary_add_usage.py.snap | 57 +- ...s__with__ambiguous_lpar_with_items.py.snap | 208 ++ ...statements__with__empty_with_items.py.snap | 8 + ...nts__with__unclosed_ambiguous_lpar.py.snap | 8 + ..._with__unclosed_ambiguous_lpar_eof.py.snap | 4 + ...__with__unparenthesized_with_items.py.snap | 44 + ...d_syntax@t_string_empty_expression.py.snap | 11 + ...g_invalid_conversion_flag_name_tok.py.snap | 6 + ..._invalid_conversion_flag_other_tok.py.snap | 11 + ...ntax@t_string_invalid_starred_expr.py.snap | 22 + ..._string_lambda_without_parentheses.py.snap | 14 + ...id_syntax@t_string_unclosed_lbrace.py.snap | 24 + ...ing_unclosed_lbrace_in_format_spec.py.snap | 16 + ...alid_syntax@try_stmt_invalid_order.py.snap | 5 + ...ax@try_stmt_missing_except_finally.py.snap | 6 + ..._syntax@try_stmt_misspelled_except.py.snap | 22 + ..._syntax@try_stmt_mixed_except_kind.py.snap | 27 + ..._syntax@tuple_context_manager_py38.py.snap | 32 + ..._syntax@type_alias_incomplete_stmt.py.snap | 11 +- ...ntax@type_alias_invalid_value_expr.py.snap | 18 + ...id_syntax@type_param_default_py312.py.snap | 42 + ...ntax@type_param_invalid_bound_expr.py.snap | 34 + ...id_syntax@type_param_missing_bound.py.snap | 16 +- ...syntax@type_param_param_spec_bound.py.snap | 12 +- ...am_param_spec_invalid_default_expr.py.snap | 42 + ...e_param_param_spec_missing_default.py.snap | 16 +- ...aram_type_var_invalid_default_expr.py.snap | 51 + ...ype_param_type_var_missing_default.py.snap | 23 +- ...ax@type_param_type_var_tuple_bound.py.snap | 12 +- ...ype_var_tuple_invalid_default_expr.py.snap | 44 + ...ram_type_var_tuple_missing_default.py.snap | 16 +- .../invalid_syntax@type_params_empty.py.snap | 15 +- .../invalid_syntax@type_stmt_py311.py.snap | 4 + ...arenthesized_named_expr_index_py38.py.snap | 7 + ...nthesized_named_expr_set_comp_py38.py.snap | 12 + ...esized_named_expr_set_literal_py38.py.snap | 22 + ...erminated_fstring_newline_recovery.py.snap | 39 + .../invalid_syntax@walrus_py37.py.snap | 5 + ...yntax@while_stmt_invalid_test_expr.py.snap | 24 +- ...id_syntax@while_stmt_missing_colon.py.snap | 7 +- ...lid_syntax@while_stmt_missing_test.py.snap | 11 +- ..._items_parenthesized_missing_colon.py.snap | 8 +- ..._items_parenthesized_missing_comma.py.snap | 47 +- ...invalid_syntax@write_to_debug_expr.py.snap | 22 + ...ntax@all_async_comprehension_py310.py.snap | 22 + ...iguous_lpar_with_items_binary_expr.py.snap | 56 +- ...@ambiguous_lpar_with_items_if_expr.py.snap | 44 +- ...ntax@ann_assign_stmt_simple_target.py.snap | 18 +- ...tax@args_unparenthesized_generator.py.snap | 45 + ...tax@assign_stmt_starred_expr_value.py.snap | 20 + ...d_syntax@assign_targets_terminator.py.snap | 20 +- .../valid_syntax@async_for_statement.py.snap | 7 +- ...d_syntax@async_function_definition.py.snap | 9 +- .../valid_syntax@async_with_statement.py.snap | 7 +- .../valid_syntax@class_def_arguments.py.snap | 11 +- ...ntax@class_keyword_in_case_pattern.py.snap | 13 + ...lid_syntax@class_type_params_py312.py.snap | 18 + ..._separated_regular_list_terminator.py.snap | 23 +- .../valid_syntax@debug_rename_import.py.snap | 14 + ...id_syntax@decorator_async_function.py.snap | 11 +- ...ax@decorator_await_expression_py39.py.snap | 16 + ...rator_expression_dotted_ident_py38.py.snap | 14 + ...ecorator_expression_eval_hack_py38.py.snap | 14 + ...ator_expression_identity_hack_py38.py.snap | 29 + ...d_syntax@decorator_expression_py39.py.snap | 37 + .../valid_syntax@del_debug_py38.py.snap | 3 + ...alid_syntax@del_targets_terminator.py.snap | 16 +- ...ntax@dotted_name_normalized_spaces.py.snap | 8 +- ...id_syntax@duplicate_match_key_attr.py.snap | 17 + .../valid_syntax@except_star_py311.py.snap | 8 + ...x@except_stmt_as_name_soft_keyword.py.snap | 20 +- ..._unparenthesized_tuple_no_as_py314.py.snap | 15 + ...alid_syntax@expressions__arguments.py.snap | 297 ++ ...alid_syntax@expressions__attribute.py.snap | 42 +- .../valid_syntax@expressions__await.py.snap | 83 +- .../valid_syntax@expressions__bin_op.py.snap | 152 + .../valid_syntax@expressions__bool_op.py.snap | 58 +- .../valid_syntax@expressions__call.py.snap | 94 +- .../valid_syntax@expressions__compare.py.snap | 96 +- ...lid_syntax@expressions__dictionary.py.snap | 164 +- ...ressions__dictionary_comprehension.py.snap | 153 +- ...valid_syntax@expressions__f_string.py.snap | 329 +++ ...alid_syntax@expressions__generator.py.snap | 102 +- .../valid_syntax@expressions__if.py.snap | 101 +- .../valid_syntax@expressions__lambda.py.snap | 330 ++- .../valid_syntax@expressions__list.py.snap | 116 +- ...ax@expressions__list_comprehension.py.snap | 200 +- .../valid_syntax@expressions__name.py.snap | 20 +- .../valid_syntax@expressions__named.py.snap | 53 +- ...syntax@expressions__number_literal.py.snap | 154 +- ..._syntax@expressions__parenthesized.py.snap | 41 +- .../valid_syntax@expressions__set.py.snap | 89 +- ...tax@expressions__set_comprehension.py.snap | 116 +- .../valid_syntax@expressions__slice.py.snap | 93 +- .../valid_syntax@expressions__starred.py.snap | 52 +- .../valid_syntax@expressions__string.py.snap | 34 +- ...alid_syntax@expressions__subscript.py.snap | 111 +- ...valid_syntax@expressions__t_string.py.snap | 378 +++ .../valid_syntax@expressions__tuple.py.snap | 103 +- ...valid_syntax@expressions__unary_op.py.snap | 79 +- .../valid_syntax@expressions__yield.py.snap | 67 + ...lid_syntax@expressions__yield_from.py.snap | 58 +- ...id_syntax@for_in_target_valid_expr.py.snap | 29 +- .../valid_syntax@for_iter_unpack_py38.py.snap | 26 + .../valid_syntax@for_iter_unpack_py39.py.snap | 26 + .../valid_syntax@from_import_no_space.py.snap | 8 +- ...om_import_soft_keyword_module_name.py.snap | 18 +- ...syntax@from_import_stmt_terminator.py.snap | 38 +- ...tax@fstring_format_spec_terminator.py.snap | 18 + ...yntax@function_def_parameter_range.py.snap | 18 +- ...ion_def_parenthesized_return_types.py.snap | 21 +- ...tax@function_def_valid_return_expr.py.snap | 37 + ..._syntax@function_type_params_py312.py.snap | 11 + .../valid_syntax@global_stmt.py.snap | 8 +- ...syntax@import_as_name_soft_keyword.py.snap | 14 +- ...alid_syntax@import_stmt_terminator.py.snap | 21 +- ...ax@irrefutable_case_pattern_at_end.py.snap | 37 + ...lid_syntax@iter_unpack_return_py37.py.snap | 19 + ...lid_syntax@iter_unpack_return_py38.py.snap | 19 + ...alid_syntax@iter_unpack_yield_py37.py.snap | 20 + ...alid_syntax@iter_unpack_yield_py38.py.snap | 35 + ...d_syntax@lambda_with_no_parameters.py.snap | 5 +- ...alid_syntax@lambda_with_valid_body.py.snap | 73 +- .../valid_syntax@match_after_py310.py.snap | 7 + .../valid_syntax@match_as_pattern.py.snap | 14 + ...ntax@match_as_pattern_soft_keyword.py.snap | 22 + ...ax@match_attr_pattern_soft_keyword.py.snap | 42 +- ...tax@match_classify_as_identifier_1.py.snap | 6 +- ...tax@match_classify_as_identifier_2.py.snap | 48 +- ...syntax@match_classify_as_keyword_1.py.snap | 92 + ...syntax@match_classify_as_keyword_2.py.snap | 38 +- ..._classify_as_keyword_or_identifier.py.snap | 44 +- ...nce_pattern_parentheses_terminator.py.snap | 20 +- ...@match_sequence_pattern_terminator.py.snap | 31 + ...lid_syntax@match_stmt_subject_expr.py.snap | 36 +- ...syntax@match_stmt_valid_guard_expr.py.snap | 47 +- ...ultiple_assignment_in_case_pattern.py.snap | 18 +- ...x@nested_async_comprehension_py310.py.snap | 45 + ...x@nested_async_comprehension_py311.py.snap | 65 + ...non_duplicate_type_parameter_names.py.snap | 62 + ...non_rebound_comprehension_variable.py.snap | 12 + ...nlocal_declaration_at_module_level.py.snap | 8 + .../valid_syntax@nonlocal_stmt.py.snap | 12 + .../valid_syntax@other__atom.py.snap | 10 +- .../valid_syntax@other__decorator.py.snap | 128 +- ...valid_syntax@param_with_annotation.py.snap | 30 + .../valid_syntax@param_with_default.py.snap | 58 +- ..._syntax@param_with_star_annotation.py.snap | 28 +- ...x@param_with_star_annotation_py310.py.snap | 70 + ...x@param_with_star_annotation_py311.py.snap | 12 + ...ntax@params_non_default_after_star.py.snap | 46 +- ...seen_keyword_only_param_after_star.py.snap | 27 +- ...parenthesized_context_manager_py39.py.snap | 26 + ...id_syntax@parenthesized_kwarg_py37.py.snap | 8 + ...arenthesized_named_expr_index_py38.py.snap | 7 + ...ntax@parenthesized_named_expr_py38.py.snap | 19 + ...tax@parenthesized_star_index_py310.py.snap | 21 +- ...valid_syntax@pep701_f_string_py311.py.snap | 64 + ...valid_syntax@pep701_f_string_py312.py.snap | 70 + ...valid_syntax@pep750_t_string_py314.py.snap | 70 + .../valid_syntax@pos_only_py38.py.snap | 11 + .../valid_syntax@read_from_debug.py.snap | 8 + ...valid_syntax@simple_stmts_in_block.py.snap | 19 +- ...yntax@simple_stmts_with_semicolons.py.snap | 15 +- .../valid_syntax@single_star_in_tuple.py.snap | 34 + ...x@single_starred_assignment_target.py.snap | 19 + .../valid_syntax@star_index_py311.py.snap | 51 + ...atement__ambiguous_lpar_with_items.py.snap | 619 +++++ ...ax@statement__annotated_assignment.py.snap | 41 +- .../valid_syntax@statement__assert.py.snap | 55 +- ...valid_syntax@statement__assignment.py.snap | 125 + ...ax@statement__augmented_assignment.py.snap | 69 +- .../valid_syntax@statement__class.py.snap | 209 +- .../valid_syntax@statement__delete.py.snap | 43 +- .../valid_syntax@statement__for.py.snap | 93 + ...alid_syntax@statement__from_import.py.snap | 44 +- .../valid_syntax@statement__function.py.snap | 674 ++++- .../valid_syntax@statement__if.py.snap | 111 +- .../valid_syntax@statement__import.py.snap | 26 +- .../valid_syntax@statement__match.py.snap | 1184 ++++++++ .../valid_syntax@statement__raise.py.snap | 72 +- .../valid_syntax@statement__return.py.snap | 50 + .../valid_syntax@statement__simple.py.snap | 39 +- .../valid_syntax@statement__try.py.snap | 229 ++ .../valid_syntax@statement__type.py.snap | 430 ++- .../valid_syntax@statement__while.py.snap | 73 +- .../valid_syntax@statement__with.py.snap | 64 +- ..._syntax@tuple_context_manager_py38.py.snap | 10 + ...id_syntax@type_param_default_py313.py.snap | 28 + ...valid_syntax@type_param_param_spec.py.snap | 32 +- .../valid_syntax@type_param_type_var.py.snap | 47 +- ...d_syntax@type_param_type_var_tuple.py.snap | 40 +- .../valid_syntax@type_stmt_py312.py.snap | 4 + ...arenthesized_named_expr_index_py39.py.snap | 7 + ...ax@unparenthesized_named_expr_py39.py.snap | 19 + ...alid_syntax@valid_annotation_class.py.snap | 40 + ...ax@valid_annotation_function_py313.py.snap | 97 + ...alid_syntax@valid_annotation_py313.py.snap | 28 + .../valid_syntax@walrus_py38.py.snap | 5 + .../src/analyze/function_type.rs | 7 +- .../src/analyze/imports.rs | 13 +- .../src/analyze/typing.rs | 2 + crates/ruff_python_semantic/src/globals.rs | 6 +- crates/ruff_python_semantic/src/imports.rs | 7 +- crates/ruff_python_semantic/src/model/all.rs | 7 +- crates/ty_project/src/lib.rs | 127 +- crates/ty_python_semantic/src/ast_node_ref.rs | 119 +- crates/ty_python_semantic/src/module_name.rs | 1 + crates/ty_python_semantic/src/node_key.rs | 17 +- .../src/semantic_index/builder.rs | 57 +- .../src/semantic_index/definition.rs | 65 +- .../src/semantic_index/place.rs | 76 +- .../src/semantic_index/re_exports.rs | 22 +- crates/ty_python_semantic/src/types/infer.rs | 130 +- crates/ty_python_semantic/src/types/narrow.rs | 3 + .../src/types/signatures.rs | 1 + 824 files changed, 25243 insertions(+), 804 deletions(-) create mode 100644 crates/ruff_python_ast/src/node_index.rs diff --git a/Cargo.lock b/Cargo.lock index ec1b10d268..03aa31a04b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -132,6 +132,12 @@ version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + [[package]] name = "argfile" version = "0.2.1" @@ -2612,6 +2618,7 @@ name = "ruff_db" version = "0.0.0" dependencies = [ "anstyle", + "arc-swap", "camino", "countme", "dashmap 6.1.0", diff --git a/Cargo.toml b/Cargo.toml index 4f55b171b9..1da4d9bdff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,6 +51,7 @@ aho-corasick = { version = "1.1.3" } anstream = { version = "0.6.18" } anstyle = { version = "1.0.10" } anyhow = { version = "1.0.80" } +arc-swap = { version = "1.7.1" } assert_fs = { version = "1.1.0" } argfile = { version = "0.2.0" } bincode = { version = "2.0.0" } diff --git a/crates/ruff_db/Cargo.toml b/crates/ruff_db/Cargo.toml index f36a49810c..e694031591 100644 --- a/crates/ruff_db/Cargo.toml +++ b/crates/ruff_db/Cargo.toml @@ -21,6 +21,7 @@ ruff_source_file = { workspace = true } ruff_text_size = { workspace = true } anstyle = { workspace = true } +arc-swap = { workspace = true } camino = { workspace = true } countme = { workspace = true } dashmap = { workspace = true } diff --git a/crates/ruff_db/src/parsed.rs b/crates/ruff_db/src/parsed.rs index a479713924..f28d280f7e 100644 --- a/crates/ruff_db/src/parsed.rs +++ b/crates/ruff_db/src/parsed.rs @@ -1,7 +1,8 @@ use std::fmt::Formatter; use std::sync::Arc; -use ruff_python_ast::ModModule; +use arc_swap::ArcSwapOption; +use ruff_python_ast::{AnyRootNodeRef, ModModule, NodeIndex}; use ruff_python_parser::{ParseOptions, Parsed, parse_unchecked}; use crate::Db; @@ -23,16 +24,20 @@ use crate::source::source_text; pub fn parsed_module(db: &dyn Db, file: File) -> ParsedModule { let _span = tracing::trace_span!("parsed_module", ?file).entered(); + let parsed = parsed_module_impl(db, file); + + ParsedModule::new(file, parsed) +} + +pub fn parsed_module_impl(db: &dyn Db, file: File) -> Parsed { let source = source_text(db, file); let ty = file.source_type(db); let target_version = db.python_version(); let options = ParseOptions::from(ty).with_target_version(target_version); - let parsed = parse_unchecked(&source, options) + parse_unchecked(&source, options) .try_into_module() - .expect("PySourceType always parses into a module"); - - ParsedModule::new(parsed) + .expect("PySourceType always parses into a module") } /// A wrapper around a parsed module. @@ -41,21 +46,58 @@ pub fn parsed_module(db: &dyn Db, file: File) -> ParsedModule { /// is represented with the [`ParsedModuleRef`] type. #[derive(Clone)] pub struct ParsedModule { - inner: Arc>, + file: File, + inner: Arc>, } impl ParsedModule { - pub fn new(parsed: Parsed) -> Self { + pub fn new(file: File, parsed: Parsed) -> Self { Self { - inner: Arc::new(parsed), + file, + inner: Arc::new(ArcSwapOption::new(Some(indexed::IndexedModule::new( + parsed, + )))), + } + } + /// Loads a reference to the parsed module. + /// + /// Note that holding on to the reference will prevent garbage collection + /// of the AST. This method will reparse the module if it has been collected. + pub fn load(&self, db: &dyn Db) -> ParsedModuleRef { + let parsed = match self.inner.load_full() { + Some(parsed) => parsed, + None => { + // Re-parse the file. + let parsed = indexed::IndexedModule::new(parsed_module_impl(db, self.file)); + tracing::debug!( + "File `{}` was reparsed after being collected in the current Salsa revision", + self.file.path(db) + ); + + self.inner.store(Some(parsed.clone())); + parsed + } + }; + + ParsedModuleRef { + module: self.clone(), + indexed: parsed, } } - /// Loads a reference to the parsed module. - pub fn load(&self, _db: &dyn Db) -> ParsedModuleRef { - ParsedModuleRef { - module_ref: self.inner.clone(), - } + /// Clear the parsed module, dropping the AST once all references to it are dropped. + pub fn clear(&self) { + self.inner.store(None); + } + + /// Returns a pointer for this [`ParsedModule`]. + /// + /// The pointer uniquely identifies the module within the current Salsa revision, + /// regardless of whether particular [`ParsedModuleRef`] instances are garbage collected. + pub fn as_ptr(&self) -> *const () { + // Note that the outer `Arc` in `inner` is stable across garbage collection, while the inner + // `Arc` within the `ArcSwap` may change. + Arc::as_ptr(&self.inner).cast() } } @@ -76,16 +118,19 @@ impl Eq for ParsedModule {} /// Cheap cloneable wrapper around an instance of a module AST. #[derive(Clone)] pub struct ParsedModuleRef { - module_ref: Arc>, + module: ParsedModule, + indexed: Arc, } impl ParsedModuleRef { - pub fn as_arc(&self) -> &Arc> { - &self.module_ref + /// Returns a reference to the [`ParsedModule`] that this instance was loaded from. + pub fn module(&self) -> &ParsedModule { + &self.module } - pub fn into_arc(self) -> Arc> { - self.module_ref + /// Returns a reference to the AST node at the given index. + pub fn get_by_index<'ast>(&'ast self, index: NodeIndex) -> AnyRootNodeRef<'ast> { + self.indexed.get_by_index(index) } } @@ -93,7 +138,247 @@ impl std::ops::Deref for ParsedModuleRef { type Target = Parsed; fn deref(&self) -> &Self::Target { - &self.module_ref + &self.indexed.parsed + } +} + +mod indexed { + use std::sync::Arc; + + use ruff_python_ast::visitor::source_order::*; + use ruff_python_ast::*; + use ruff_python_parser::Parsed; + + /// A wrapper around the AST that allows access to AST nodes by index. + #[derive(Debug)] + pub struct IndexedModule { + index: Box<[AnyRootNodeRef<'static>]>, + pub parsed: Parsed, + } + + impl IndexedModule { + /// Create a new [`IndexedModule`] from the given AST. + #[allow(clippy::unnecessary_cast)] + pub fn new(parsed: Parsed) -> Arc { + let mut visitor = Visitor { + nodes: Vec::new(), + index: 0, + }; + + let mut inner = Arc::new(IndexedModule { + parsed, + index: Box::new([]), + }); + + AnyNodeRef::from(inner.parsed.syntax()).visit_source_order(&mut visitor); + + let index: Box<[AnyRootNodeRef<'_>]> = visitor.nodes.into_boxed_slice(); + + // SAFETY: We cast from `Box<[AnyRootNodeRef<'_>]>` to `Box<[AnyRootNodeRef<'static>]>`, + // faking the 'static lifetime to create the self-referential struct. The node references + // are into the `Arc>`, so are valid for as long as the `IndexedModule` + // is alive. We make sure to restore the correct lifetime in `get_by_index`. + // + // Note that we can never move the data within the `Arc` after this point. + Arc::get_mut(&mut inner).unwrap().index = + unsafe { Box::from_raw(Box::into_raw(index) as *mut [AnyRootNodeRef<'static>]) }; + + inner + } + + /// Returns the node at the given index. + pub fn get_by_index<'ast>(&'ast self, index: NodeIndex) -> AnyRootNodeRef<'ast> { + // Note that this method restores the correct lifetime: the nodes are valid for as + // long as the reference to `IndexedModule` is alive. + self.index[index.as_usize()] + } + } + + /// A visitor that collects nodes in source order. + pub struct Visitor<'a> { + pub index: u32, + pub nodes: Vec>, + } + + impl<'a> Visitor<'a> { + fn visit_node(&mut self, node: &'a T) + where + T: HasNodeIndex + std::fmt::Debug, + AnyRootNodeRef<'a>: From<&'a T>, + { + node.node_index().set(self.index); + self.nodes.push(AnyRootNodeRef::from(node)); + self.index += 1; + } + } + + impl<'a> SourceOrderVisitor<'a> for Visitor<'a> { + #[inline] + fn visit_mod(&mut self, module: &'a Mod) { + self.visit_node(module); + walk_module(self, module); + } + + #[inline] + fn visit_stmt(&mut self, stmt: &'a Stmt) { + self.visit_node(stmt); + walk_stmt(self, stmt); + } + + #[inline] + fn visit_annotation(&mut self, expr: &'a Expr) { + self.visit_node(expr); + walk_annotation(self, expr); + } + + #[inline] + fn visit_expr(&mut self, expr: &'a Expr) { + self.visit_node(expr); + walk_expr(self, expr); + } + + #[inline] + fn visit_decorator(&mut self, decorator: &'a Decorator) { + self.visit_node(decorator); + walk_decorator(self, decorator); + } + + #[inline] + fn visit_comprehension(&mut self, comprehension: &'a Comprehension) { + self.visit_node(comprehension); + walk_comprehension(self, comprehension); + } + + #[inline] + fn visit_except_handler(&mut self, except_handler: &'a ExceptHandler) { + self.visit_node(except_handler); + walk_except_handler(self, except_handler); + } + + #[inline] + fn visit_arguments(&mut self, arguments: &'a Arguments) { + self.visit_node(arguments); + walk_arguments(self, arguments); + } + + #[inline] + fn visit_parameters(&mut self, parameters: &'a Parameters) { + self.visit_node(parameters); + walk_parameters(self, parameters); + } + + #[inline] + fn visit_parameter(&mut self, arg: &'a Parameter) { + self.visit_node(arg); + walk_parameter(self, arg); + } + + fn visit_parameter_with_default( + &mut self, + parameter_with_default: &'a ParameterWithDefault, + ) { + self.visit_node(parameter_with_default); + walk_parameter_with_default(self, parameter_with_default); + } + + #[inline] + fn visit_keyword(&mut self, keyword: &'a Keyword) { + self.visit_node(keyword); + walk_keyword(self, keyword); + } + + #[inline] + fn visit_alias(&mut self, alias: &'a Alias) { + self.visit_node(alias); + walk_alias(self, alias); + } + + #[inline] + fn visit_with_item(&mut self, with_item: &'a WithItem) { + self.visit_node(with_item); + walk_with_item(self, with_item); + } + + #[inline] + fn visit_type_params(&mut self, type_params: &'a TypeParams) { + self.visit_node(type_params); + walk_type_params(self, type_params); + } + + #[inline] + fn visit_type_param(&mut self, type_param: &'a TypeParam) { + self.visit_node(type_param); + walk_type_param(self, type_param); + } + + #[inline] + fn visit_match_case(&mut self, match_case: &'a MatchCase) { + self.visit_node(match_case); + walk_match_case(self, match_case); + } + + #[inline] + fn visit_pattern(&mut self, pattern: &'a Pattern) { + self.visit_node(pattern); + walk_pattern(self, pattern); + } + + #[inline] + fn visit_pattern_arguments(&mut self, pattern_arguments: &'a PatternArguments) { + self.visit_node(pattern_arguments); + walk_pattern_arguments(self, pattern_arguments); + } + + #[inline] + fn visit_pattern_keyword(&mut self, pattern_keyword: &'a PatternKeyword) { + self.visit_node(pattern_keyword); + walk_pattern_keyword(self, pattern_keyword); + } + + #[inline] + fn visit_elif_else_clause(&mut self, elif_else_clause: &'a ElifElseClause) { + self.visit_node(elif_else_clause); + walk_elif_else_clause(self, elif_else_clause); + } + + #[inline] + fn visit_f_string(&mut self, f_string: &'a FString) { + self.visit_node(f_string); + walk_f_string(self, f_string); + } + + #[inline] + fn visit_interpolated_string_element( + &mut self, + interpolated_string_element: &'a InterpolatedStringElement, + ) { + self.visit_node(interpolated_string_element); + walk_interpolated_string_element(self, interpolated_string_element); + } + + #[inline] + fn visit_t_string(&mut self, t_string: &'a TString) { + self.visit_node(t_string); + walk_t_string(self, t_string); + } + + #[inline] + fn visit_string_literal(&mut self, string_literal: &'a StringLiteral) { + self.visit_node(string_literal); + walk_string_literal(self, string_literal); + } + + #[inline] + fn visit_bytes_literal(&mut self, bytes_literal: &'a BytesLiteral) { + self.visit_node(bytes_literal); + walk_bytes_literal(self, bytes_literal); + } + + #[inline] + fn visit_identifier(&mut self, identifier: &'a Identifier) { + self.visit_node(identifier); + walk_identifier(self, identifier); + } } } diff --git a/crates/ruff_graph/src/collector.rs b/crates/ruff_graph/src/collector.rs index 0aad63fbe6..73b37991de 100644 --- a/crates/ruff_graph/src/collector.rs +++ b/crates/ruff_graph/src/collector.rs @@ -39,6 +39,7 @@ impl<'ast> SourceOrderVisitor<'ast> for Collector<'_> { module, level, range: _, + node_index: _, }) => { let module = module.as_deref(); let level = *level; @@ -78,7 +79,11 @@ impl<'ast> SourceOrderVisitor<'ast> for Collector<'_> { } } } - Stmt::Import(ast::StmtImport { names, range: _ }) => { + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => { for alias in names { if let Some(module_name) = ModuleName::new(alias.name.as_str()) { self.imports.push(CollectedImport::Import(module_name)); @@ -122,7 +127,12 @@ impl<'ast> SourceOrderVisitor<'ast> for Collector<'_> { fn visit_expr(&mut self, expr: &'ast Expr) { if self.string_imports { - if let Expr::StringLiteral(ast::ExprStringLiteral { value, range: _ }) = expr { + if let Expr::StringLiteral(ast::ExprStringLiteral { + value, + range: _, + node_index: _, + }) = expr + { // Determine whether the string literal "looks like" an import statement: contains // a dot, and consists solely of valid Python identifiers. let value = value.to_str(); diff --git a/crates/ruff_linter/src/checkers/ast/analyze/except_handler.rs b/crates/ruff_linter/src/checkers/ast/analyze/except_handler.rs index 7ef76d9382..3a7e3a4f5b 100644 --- a/crates/ruff_linter/src/checkers/ast/analyze/except_handler.rs +++ b/crates/ruff_linter/src/checkers/ast/analyze/except_handler.rs @@ -15,6 +15,7 @@ pub(crate) fn except_handler(except_handler: &ExceptHandler, checker: &Checker) name, body, range: _, + node_index: _, }) => { if checker.enabled(Rule::BareExcept) { pycodestyle::rules::bare_except(checker, type_.as_deref(), body, except_handler); diff --git a/crates/ruff_linter/src/checkers/ast/analyze/expression.rs b/crates/ruff_linter/src/checkers/ast/analyze/expression.rs index e29b4db602..f695c198ab 100644 --- a/crates/ruff_linter/src/checkers/ast/analyze/expression.rs +++ b/crates/ruff_linter/src/checkers/ast/analyze/expression.rs @@ -185,12 +185,14 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { elts, ctx, range: _, + node_index: _, parenthesized: _, }) | Expr::List(ast::ExprList { elts, ctx, range: _, + node_index: _, }) => { if ctx.is_store() { let check_too_many_expressions = checker.enabled(Rule::ExpressionsInStarAssignment); @@ -205,7 +207,12 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { ); } } - Expr::Name(ast::ExprName { id, ctx, range }) => { + Expr::Name(ast::ExprName { + id, + ctx, + range, + node_index: _, + }) => { match ctx { ExprContext::Load => { if checker.enabled(Rule::TypingTextStrAlias) { @@ -472,8 +479,10 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { args, keywords, range: _, + node_index: _, }, range: _, + node_index: _, }, ) => { if checker.any_enabled(&[ @@ -1261,6 +1270,7 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { op: Operator::Mod, right, range: _, + node_index: _, }, ) => { if let Expr::StringLiteral(format_string @ ast::ExprStringLiteral { value, .. }) = @@ -1426,6 +1436,7 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { op, operand, range: _, + node_index: _, }, ) => { if checker.any_enabled(&[Rule::NotInTest, Rule::NotIsTest]) { @@ -1452,6 +1463,7 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { ops, comparators, range: _, + node_index: _, }, ) => { if checker.any_enabled(&[Rule::NoneComparison, Rule::TrueFalseComparison]) { @@ -1530,7 +1542,13 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { refurb::rules::math_constant(checker, number_literal); } } - Expr::StringLiteral(string_like @ ast::ExprStringLiteral { value, range: _ }) => { + Expr::StringLiteral( + string_like @ ast::ExprStringLiteral { + value, + range: _, + node_index: _, + }, + ) => { if checker.enabled(Rule::UnicodeKindPrefix) { for string_part in value { pyupgrade::rules::unicode_kind_prefix(checker, string_part); @@ -1551,6 +1569,7 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { body, orelse, range: _, + node_index: _, }, ) => { if checker.enabled(Rule::IfElseBlockInsteadOfDictGet) { @@ -1585,6 +1604,7 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { elt, generators, range: _, + node_index: _, }, ) => { if checker.enabled(Rule::UnnecessaryListIndexLookup) { @@ -1615,6 +1635,7 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { elt, generators, range: _, + node_index: _, }, ) => { if checker.enabled(Rule::UnnecessaryListIndexLookup) { @@ -1646,6 +1667,7 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { value, generators, range: _, + node_index: _, }, ) => { if checker.enabled(Rule::UnnecessaryListIndexLookup) { @@ -1684,6 +1706,7 @@ pub(crate) fn expression(expr: &Expr, checker: &Checker) { generators, elt: _, range: _, + node_index: _, parenthesized: _, }, ) => { diff --git a/crates/ruff_linter/src/checkers/ast/analyze/statement.rs b/crates/ruff_linter/src/checkers/ast/analyze/statement.rs index 69f7dfd8d8..4effbce61d 100644 --- a/crates/ruff_linter/src/checkers/ast/analyze/statement.rs +++ b/crates/ruff_linter/src/checkers/ast/analyze/statement.rs @@ -18,7 +18,11 @@ use ruff_python_ast::PythonVersion; /// Run lint rules over a [`Stmt`] syntax node. pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { match stmt { - Stmt::Global(ast::StmtGlobal { names, range: _ }) => { + Stmt::Global(ast::StmtGlobal { + names, + range: _, + node_index: _, + }) => { if checker.enabled(Rule::GlobalAtModuleLevel) { pylint::rules::global_at_module_level(checker, stmt); } @@ -28,7 +32,13 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { } } } - Stmt::Nonlocal(nonlocal @ ast::StmtNonlocal { names, range: _ }) => { + Stmt::Nonlocal( + nonlocal @ ast::StmtNonlocal { + names, + range: _, + node_index: _, + }, + ) => { if checker.enabled(Rule::AmbiguousVariableName) { for name in names { pycodestyle::rules::ambiguous_variable_name(checker, name, name.range()); @@ -80,6 +90,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { body, type_params: _, range: _, + node_index: _, }, ) => { if checker.enabled(Rule::DjangoNonLeadingReceiverDecorator) { @@ -381,6 +392,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { decorator_list, body, range: _, + node_index: _, }, ) => { if checker.enabled(Rule::NoClassmethodDecorator) { @@ -542,7 +554,11 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { ruff::rules::implicit_class_var_in_dataclass(checker, class_def); } } - Stmt::Import(ast::StmtImport { names, range: _ }) => { + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => { if checker.enabled(Rule::MultipleImportsOnOneLine) { pycodestyle::rules::multiple_imports_on_one_line(checker, stmt, names); } @@ -699,6 +715,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { module, level, range: _, + node_index: _, }, ) => { let level = *level; @@ -1142,6 +1159,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { test, msg, range: _, + node_index: _, }, ) => { if !checker.semantic.in_type_checking_block() { @@ -1243,6 +1261,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { orelse, is_async, range: _, + node_index: _, }, ) => { if checker.enabled(Rule::TooManyNestedBlocks) { @@ -1606,7 +1625,13 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { flake8_pyi::rules::t_suffixed_type_alias(checker, name); } } - Stmt::Delete(delete @ ast::StmtDelete { targets, range: _ }) => { + Stmt::Delete( + delete @ ast::StmtDelete { + targets, + range: _, + node_index: _, + }, + ) => { if checker.enabled(Rule::GlobalStatement) { for target in targets { if let Expr::Name(ast::ExprName { id, .. }) = target { @@ -1618,7 +1643,13 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { refurb::rules::delete_full_slice(checker, delete); } } - Stmt::Expr(expr @ ast::StmtExpr { value, range: _ }) => { + Stmt::Expr( + expr @ ast::StmtExpr { + value, + range: _, + node_index: _, + }, + ) => { if checker.enabled(Rule::UselessComparison) { flake8_bugbear::rules::useless_comparison(checker, value); } @@ -1645,6 +1676,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) { subject: _, cases, range: _, + node_index: _, }) => { if checker.enabled(Rule::NanComparison) { pylint::rules::nan_comparison_match(checker, cases); diff --git a/crates/ruff_linter/src/checkers/ast/mod.rs b/crates/ruff_linter/src/checkers/ast/mod.rs index 3ca0b6ed5b..7a3addd4da 100644 --- a/crates/ruff_linter/src/checkers/ast/mod.rs +++ b/crates/ruff_linter/src/checkers/ast/mod.rs @@ -836,10 +836,15 @@ impl<'a> Visitor<'a> for Checker<'a> { op: _, value: _, range: _, + node_index: _, }) => { self.handle_node_load(target); } - Stmt::Import(ast::StmtImport { names, range: _ }) => { + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => { if self.semantic.at_top_level() { self.importer.visit_import(stmt); } @@ -893,6 +898,7 @@ impl<'a> Visitor<'a> for Checker<'a> { module, level, range: _, + node_index: _, }) => { if self.semantic.at_top_level() { self.importer.visit_import(stmt); @@ -954,7 +960,11 @@ impl<'a> Visitor<'a> for Checker<'a> { } } } - Stmt::Global(ast::StmtGlobal { names, range: _ }) => { + Stmt::Global(ast::StmtGlobal { + names, + range: _, + node_index: _, + }) => { if !self.semantic.scope_id.is_global() { for name in names { let binding_id = self.semantic.global_scope().get(name); @@ -976,7 +986,11 @@ impl<'a> Visitor<'a> for Checker<'a> { } } } - Stmt::Nonlocal(ast::StmtNonlocal { names, range: _ }) => { + Stmt::Nonlocal(ast::StmtNonlocal { + names, + range: _, + node_index: _, + }) => { if !self.semantic.scope_id.is_global() { for name in names { if let Some((scope_id, binding_id)) = self.semantic.nonlocal(name) { @@ -1186,6 +1200,7 @@ impl<'a> Visitor<'a> for Checker<'a> { } Stmt::TypeAlias(ast::StmtTypeAlias { range: _, + node_index: _, name, type_params, value, @@ -1280,6 +1295,7 @@ impl<'a> Visitor<'a> for Checker<'a> { test, msg, range: _, + node_index: _, }) => { let snapshot = self.semantic.flags; self.semantic.flags |= SemanticModelFlags::ASSERT_STATEMENT; @@ -1294,6 +1310,7 @@ impl<'a> Visitor<'a> for Checker<'a> { body, is_async: _, range: _, + node_index: _, }) => { for item in items { self.visit_with_item(item); @@ -1307,6 +1324,7 @@ impl<'a> Visitor<'a> for Checker<'a> { body, orelse, range: _, + node_index: _, }) => { self.visit_boolean_test(test); self.visit_body(body); @@ -1318,6 +1336,7 @@ impl<'a> Visitor<'a> for Checker<'a> { body, elif_else_clauses, range: _, + node_index: _, }, ) => { self.visit_boolean_test(test); @@ -1437,15 +1456,27 @@ impl<'a> Visitor<'a> for Checker<'a> { func, arguments: _, range: _, + node_index: _, }) => { - if let Expr::Name(ast::ExprName { id, ctx, range: _ }) = func.as_ref() { + if let Expr::Name(ast::ExprName { + id, + ctx, + range: _, + node_index: _, + }) = func.as_ref() + { if id == "locals" && ctx.is_load() { let scope = self.semantic.current_scope_mut(); scope.set_uses_locals(); } } } - Expr::Name(ast::ExprName { id, ctx, range: _ }) => match ctx { + Expr::Name(ast::ExprName { + id, + ctx, + range: _, + node_index: _, + }) => match ctx { ExprContext::Load => self.handle_node_load(expr), ExprContext::Store => self.handle_node_store(id, expr), ExprContext::Del => self.handle_node_delete(expr), @@ -1460,6 +1491,7 @@ impl<'a> Visitor<'a> for Checker<'a> { elt, generators, range: _, + node_index: _, }) => { self.visit_generators(GeneratorKind::ListComprehension, generators); self.visit_expr(elt); @@ -1468,6 +1500,7 @@ impl<'a> Visitor<'a> for Checker<'a> { elt, generators, range: _, + node_index: _, }) => { self.visit_generators(GeneratorKind::SetComprehension, generators); self.visit_expr(elt); @@ -1476,6 +1509,7 @@ impl<'a> Visitor<'a> for Checker<'a> { elt, generators, range: _, + node_index: _, parenthesized: _, }) => { self.visit_generators(GeneratorKind::Generator, generators); @@ -1486,6 +1520,7 @@ impl<'a> Visitor<'a> for Checker<'a> { value, generators, range: _, + node_index: _, }) => { self.visit_generators(GeneratorKind::DictComprehension, generators); self.visit_expr(key); @@ -1496,6 +1531,7 @@ impl<'a> Visitor<'a> for Checker<'a> { parameters, body: _, range: _, + node_index: _, }, ) => { // Visit the default arguments, but avoid the body, which will be deferred. @@ -1517,6 +1553,7 @@ impl<'a> Visitor<'a> for Checker<'a> { body, orelse, range: _, + node_index: _, }) => { self.visit_boolean_test(test); self.visit_expr(body); @@ -1526,6 +1563,7 @@ impl<'a> Visitor<'a> for Checker<'a> { op: UnaryOp::Not, operand, range: _, + node_index: _, }) => { self.visit_boolean_test(operand); } @@ -1533,6 +1571,7 @@ impl<'a> Visitor<'a> for Checker<'a> { func, arguments, range: _, + node_index: _, }) => { self.visit_expr(func); @@ -1647,6 +1686,7 @@ impl<'a> Visitor<'a> for Checker<'a> { arg, value, range: _, + node_index: _, } = keyword; if let Some(id) = arg { if matches!(&**id, "bound" | "default") { @@ -1738,7 +1778,12 @@ impl<'a> Visitor<'a> for Checker<'a> { self.visit_non_type_definition(arg); } for arg in args { - if let Expr::Dict(ast::ExprDict { items, range: _ }) = arg { + if let Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) = arg + { for ast::DictItem { key, value } in items { if let Some(key) = key { self.visit_non_type_definition(key); @@ -1776,6 +1821,7 @@ impl<'a> Visitor<'a> for Checker<'a> { value, arg, range: _, + node_index: _, } = keyword; if arg.as_ref().is_some_and(|arg| arg == "type") { self.visit_type_definition(value); @@ -1804,6 +1850,7 @@ impl<'a> Visitor<'a> for Checker<'a> { slice, ctx, range: _, + node_index: _, }) => { // Only allow annotations in `ExprContext::Load`. If we have, e.g., // `obj["foo"]["bar"]`, we need to avoid treating the `obj["foo"]` @@ -1843,6 +1890,7 @@ impl<'a> Visitor<'a> for Checker<'a> { elts, ctx, range: _, + node_index: _, parenthesized: _, }) = slice.as_ref() { @@ -1867,7 +1915,12 @@ impl<'a> Visitor<'a> for Checker<'a> { } } Some(typing::SubscriptKind::TypedDict) => { - if let Expr::Dict(ast::ExprDict { items, range: _ }) = slice.as_ref() { + if let Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) = slice.as_ref() + { for item in items { if let Some(key) = &item.key { self.visit_non_type_definition(key); @@ -1906,6 +1959,7 @@ impl<'a> Visitor<'a> for Checker<'a> { target, value, range: _, + node_index: _, }) => { self.visit_expr(value); @@ -1955,6 +2009,7 @@ impl<'a> Visitor<'a> for Checker<'a> { name, body: _, range: _, + node_index: _, }) => { if let Some(name) = name { // Store the existing binding, if any. @@ -2029,6 +2084,7 @@ impl<'a> Visitor<'a> for Checker<'a> { | Pattern::MatchStar(ast::PatternMatchStar { name: Some(name), range: _, + node_index: _, }) | Pattern::MatchMapping(ast::PatternMatchMapping { rest: Some(name), .. @@ -2088,6 +2144,7 @@ impl<'a> Visitor<'a> for Checker<'a> { default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = bound { self.visit @@ -2104,6 +2161,7 @@ impl<'a> Visitor<'a> for Checker<'a> { default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = default { self.visit @@ -2115,6 +2173,7 @@ impl<'a> Visitor<'a> for Checker<'a> { default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = default { self.visit @@ -2833,6 +2892,7 @@ impl<'a> Checker<'a> { parameters, body, range: _, + node_index: _, })) = self.semantic.current_expression() else { unreachable!("Expected Expr::Lambda"); diff --git a/crates/ruff_linter/src/doc_lines.rs b/crates/ruff_linter/src/doc_lines.rs index 94e1d16f65..c45dc64b4d 100644 --- a/crates/ruff_linter/src/doc_lines.rs +++ b/crates/ruff_linter/src/doc_lines.rs @@ -73,6 +73,7 @@ impl StatementVisitor<'_> for StringLinesVisitor<'_> { if let Stmt::Expr(ast::StmtExpr { value: expr, range: _, + node_index: _, }) = stmt { if expr.is_string_literal_expr() { diff --git a/crates/ruff_linter/src/docstrings/extraction.rs b/crates/ruff_linter/src/docstrings/extraction.rs index a0597b0626..2a7e70a0b5 100644 --- a/crates/ruff_linter/src/docstrings/extraction.rs +++ b/crates/ruff_linter/src/docstrings/extraction.rs @@ -7,7 +7,12 @@ use ruff_python_semantic::{Definition, DefinitionId, Definitions, Member, Member pub(crate) fn docstring_from(suite: &[Stmt]) -> Option<&ast::ExprStringLiteral> { let stmt = suite.first()?; // Require the docstring to be a standalone expression. - let Stmt::Expr(ast::StmtExpr { value, range: _ }) = stmt else { + let Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) = stmt + else { return None; }; // Only match strings. diff --git a/crates/ruff_linter/src/importer/mod.rs b/crates/ruff_linter/src/importer/mod.rs index 775943caf0..31bf7262bc 100644 --- a/crates/ruff_linter/src/importer/mod.rs +++ b/crates/ruff_linter/src/importer/mod.rs @@ -453,6 +453,7 @@ impl<'a> Importer<'a> { names, level, range: _, + node_index: _, }) = stmt { if *level == 0 diff --git a/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs b/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs index bafbf1fb4d..5d367eb45b 100644 --- a/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs +++ b/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs @@ -104,7 +104,12 @@ pub(crate) fn airflow_3_removal_expr(checker: &Checker, expr: &Expr) { check_name(checker, expr, *range); check_class_attribute(checker, attribute_expr); } - Expr::Name(ExprName { id, ctx, range }) => { + Expr::Name(ExprName { + id, + ctx, + range, + node_index: _, + }) => { check_name(checker, expr, *range); if matches!(ctx, ExprContext::Store) { if let ScopeKind::Class(class_def) = checker.semantic().current_scope().kind { @@ -375,8 +380,11 @@ fn check_context_key_usage_in_call(checker: &Checker, call_expr: &ExprCall) { } for removed_key in REMOVED_CONTEXT_KEYS { - let Some(Expr::StringLiteral(ExprStringLiteral { value, range })) = - call_expr.arguments.find_positional(0) + let Some(Expr::StringLiteral(ExprStringLiteral { + value, + range, + node_index: _, + })) = call_expr.arguments.find_positional(0) else { continue; }; diff --git a/crates/ruff_linter/src/rules/airflow/rules/suggested_to_update_3_0.rs b/crates/ruff_linter/src/rules/airflow/rules/suggested_to_update_3_0.rs index f7914999c1..b5e26ea2ab 100644 --- a/crates/ruff_linter/src/rules/airflow/rules/suggested_to_update_3_0.rs +++ b/crates/ruff_linter/src/rules/airflow/rules/suggested_to_update_3_0.rs @@ -102,6 +102,7 @@ pub(crate) fn airflow_3_0_suggested_update_expr(checker: &Checker, expr: &Expr) id: _, ctx: _, range, + node_index: _, }) => { check_name(checker, expr, *range); } diff --git a/crates/ruff_linter/src/rules/flake8_2020/rules/subscript.rs b/crates/ruff_linter/src/rules/flake8_2020/rules/subscript.rs index 1036195ddd..e594c4ffc0 100644 --- a/crates/ruff_linter/src/rules/flake8_2020/rules/subscript.rs +++ b/crates/ruff_linter/src/rules/flake8_2020/rules/subscript.rs @@ -176,6 +176,7 @@ pub(crate) fn subscript(checker: &Checker, value: &Expr, slice: &Expr) { upper: Some(upper), step: None, range: _, + node_index: _, }) => { if let Expr::NumberLiteral(ast::ExprNumberLiteral { value: ast::Number::Int(i), diff --git a/crates/ruff_linter/src/rules/flake8_annotations/helpers.rs b/crates/ruff_linter/src/rules/flake8_annotations/helpers.rs index e627e0f7c5..c0289225f1 100644 --- a/crates/ruff_linter/src/rules/flake8_annotations/helpers.rs +++ b/crates/ruff_linter/src/rules/flake8_annotations/helpers.rs @@ -137,6 +137,7 @@ impl AutoPythonType { let expr = Expr::Name(ast::ExprName { id: Name::from(binding), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, }); Some((expr, vec![no_return_edit])) @@ -203,6 +204,7 @@ fn type_expr(python_type: PythonType) -> Option { Expr::Name(ast::ExprName { id: name.into(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, }) } diff --git a/crates/ruff_linter/src/rules/flake8_annotations/rules/definition.rs b/crates/ruff_linter/src/rules/flake8_annotations/rules/definition.rs index a83206cdc1..60886c0034 100644 --- a/crates/ruff_linter/src/rules/flake8_annotations/rules/definition.rs +++ b/crates/ruff_linter/src/rules/flake8_annotations/rules/definition.rs @@ -562,7 +562,11 @@ fn is_stub_function(function_def: &ast::StmtFunctionDef, checker: &Checker) -> b fn is_empty_body(function_def: &ast::StmtFunctionDef) -> bool { function_def.body.iter().all(|stmt| match stmt { Stmt::Pass(_) => true, - Stmt::Expr(ast::StmtExpr { value, range: _ }) => { + Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) => { matches!( value.as_ref(), Expr::StringLiteral(_) | Expr::EllipsisLiteral(_) @@ -606,6 +610,7 @@ pub(crate) fn definition( let ast::StmtFunctionDef { range: _, + node_index: _, is_async: _, decorator_list, name, diff --git a/crates/ruff_linter/src/rules/flake8_bandit/rules/bad_file_permissions.rs b/crates/ruff_linter/src/rules/flake8_bandit/rules/bad_file_permissions.rs index b06f9104c2..dab899b43a 100644 --- a/crates/ruff_linter/src/rules/flake8_bandit/rules/bad_file_permissions.rs +++ b/crates/ruff_linter/src/rules/flake8_bandit/rules/bad_file_permissions.rs @@ -166,6 +166,7 @@ fn parse_mask(expr: &Expr, semantic: &SemanticModel) -> Result> { op, right, range: _, + node_index: _, }) => { let Some(left_value) = parse_mask(left, semantic)? else { return Ok(None); diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/abstract_base_class.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/abstract_base_class.rs index 2e42008201..b84c909303 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/abstract_base_class.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/abstract_base_class.rs @@ -131,7 +131,11 @@ fn is_abc_class(bases: &[Expr], keywords: &[Keyword], semantic: &SemanticModel) fn is_empty_body(body: &[Stmt]) -> bool { body.iter().all(|stmt| match stmt { Stmt::Pass(_) => true, - Stmt::Expr(ast::StmtExpr { value, range: _ }) => { + Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) => { matches!( value.as_ref(), Expr::StringLiteral(_) | Expr::EllipsisLiteral(_) diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/assert_false.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/assert_false.rs index 94847783b9..8708e4c487 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/assert_false.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/assert_false.rs @@ -52,11 +52,13 @@ impl AlwaysFixableViolation for AssertFalse { fn assertion_error(msg: Option<&Expr>) -> Stmt { Stmt::Raise(ast::StmtRaise { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), exc: Some(Box::new(Expr::Call(ast::ExprCall { func: Box::new(Expr::Name(ast::ExprName { id: "AssertionError".into(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), arguments: Arguments { args: if let Some(msg) = msg { @@ -66,8 +68,10 @@ fn assertion_error(msg: Option<&Expr>) -> Stmt { }, keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }))), cause: None, }) diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/assert_raises_exception.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/assert_raises_exception.rs index 2e9be0eef0..9a74185ad3 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/assert_raises_exception.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/assert_raises_exception.rs @@ -63,6 +63,7 @@ pub(crate) fn assert_raises_exception(checker: &Checker, items: &[WithItem]) { func, arguments, range: _, + node_index: _, }) = &item.context_expr else { continue; diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs index e3868cde2c..6516a92390 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs @@ -113,6 +113,7 @@ fn type_pattern(elts: Vec<&Expr>) -> Expr { elts: elts.into_iter().cloned().collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, } .into() diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/f_string_docstring.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/f_string_docstring.rs index 14e4f73409..8b4d9527f9 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/f_string_docstring.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/f_string_docstring.rs @@ -45,7 +45,12 @@ pub(crate) fn f_string_docstring(checker: &Checker, body: &[Stmt]) { let Some(stmt) = body.first() else { return; }; - let Stmt::Expr(ast::StmtExpr { value, range: _ }) = stmt else { + let Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) = stmt + else { return; }; if !value.is_f_string_expr() { diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs index fd7b5436ef..a4cbba7cc7 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs @@ -111,6 +111,7 @@ impl<'a> Visitor<'a> for SuspiciousVariablesVisitor<'a> { Stmt::Return(ast::StmtReturn { value: Some(value), range: _, + node_index: _, }) => { // Mark `return lambda: x` as safe. if value.is_lambda_expr() { @@ -128,6 +129,7 @@ impl<'a> Visitor<'a> for SuspiciousVariablesVisitor<'a> { func, arguments, range: _, + node_index: _, }) => { match func.as_ref() { Expr::Name(ast::ExprName { id, .. }) => { @@ -167,6 +169,7 @@ impl<'a> Visitor<'a> for SuspiciousVariablesVisitor<'a> { parameters, body, range: _, + node_index: _, }) => { if !self.safe_functions.contains(&expr) { // Collect all loaded variable names. diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_iterator_mutation.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_iterator_mutation.rs index fe3ff08700..83094305b8 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_iterator_mutation.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_iterator_mutation.rs @@ -60,6 +60,7 @@ pub(crate) fn loop_iterator_mutation(checker: &Checker, stmt_for: &StmtFor) { orelse: _, is_async: _, range: _, + node_index: _, } = stmt_for; let (index, target, iter) = match iter.as_ref() { @@ -170,6 +171,7 @@ impl<'a> LoopMutationsVisitor<'a> { for target in targets { if let Expr::Subscript(ExprSubscript { range: _, + node_index: _, value, slice: _, ctx: _, @@ -188,6 +190,7 @@ impl<'a> LoopMutationsVisitor<'a> { for target in targets { if let Expr::Subscript(ExprSubscript { range: _, + node_index: _, value, slice, ctx: _, @@ -217,6 +220,7 @@ impl<'a> LoopMutationsVisitor<'a> { fn handle_call(&mut self, func: &Expr) { if let Expr::Attribute(ExprAttribute { range, + node_index: _, value, attr, ctx: _, @@ -237,7 +241,11 @@ impl<'a> Visitor<'a> for LoopMutationsVisitor<'a> { fn visit_stmt(&mut self, stmt: &'a Stmt) { match stmt { // Ex) `del items[0]` - Stmt::Delete(StmtDelete { range, targets }) => { + Stmt::Delete(StmtDelete { + range, + targets, + node_index: _, + }) => { self.handle_delete(*range, targets); visitor::walk_stmt(self, stmt); } diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs index dec0098e9a..f0a12e755a 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs @@ -97,6 +97,7 @@ impl<'a> Visitor<'a> for NameFinder<'a> { parameters, body, range: _, + node_index: _, }) => { visitor::walk_expr(self, body); diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/return_in_generator.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/return_in_generator.rs index a24e49c293..8b8f529df4 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/return_in_generator.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/return_in_generator.rs @@ -126,6 +126,7 @@ impl StatementVisitor<'_> for ReturnInGeneratorVisitor { Stmt::Return(ast::StmtReturn { value: Some(_), range, + node_index: _, }) => { self.return_ = Some(*range); } diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs index 6cd3ddd478..7643b2846e 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs @@ -153,6 +153,7 @@ impl<'a> Visitor<'a> for GroupNameFinder<'a> { body, elif_else_clauses, range: _, + node_index: _, }) => { // base if plus branches let mut if_stack = Vec::with_capacity(1 + elif_else_clauses.len()); @@ -179,6 +180,7 @@ impl<'a> Visitor<'a> for GroupNameFinder<'a> { subject, cases, range: _, + node_index: _, }) => { self.counter_stack.push(Vec::with_capacity(cases.len())); self.visit_expr(subject); @@ -210,7 +212,11 @@ impl<'a> Visitor<'a> for GroupNameFinder<'a> { Stmt::Continue(_) | Stmt::Break(_) => { self.reset_usage_count(); } - Stmt::Return(ast::StmtReturn { value, range: _ }) => { + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) => { if let Some(expr) = value { self.visit_expr(expr); } @@ -250,11 +256,13 @@ impl<'a> Visitor<'a> for GroupNameFinder<'a> { elt, generators, range: _, + node_index: _, }) | Expr::SetComp(ast::ExprSetComp { elt, generators, range: _, + node_index: _, }) => { for comprehension in generators { self.visit_comprehension(comprehension); @@ -270,6 +278,7 @@ impl<'a> Visitor<'a> for GroupNameFinder<'a> { value, generators, range: _, + node_index: _, }) => { for comprehension in generators { self.visit_comprehension(comprehension); diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/setattr_with_constant.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/setattr_with_constant.rs index a83710800d..6244634ffa 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/setattr_with_constant.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/setattr_with_constant.rs @@ -53,9 +53,11 @@ fn assignment(obj: &Expr, name: &str, value: &Expr, generator: Generator) -> Str attr: Identifier::new(name.to_string(), TextRange::default()), ctx: ExprContext::Store, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })], value: Box::new(value.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); generator.stmt(&stmt) } @@ -92,6 +94,7 @@ pub(crate) fn setattr_with_constant(checker: &Checker, expr: &Expr, func: &Expr, if let Stmt::Expr(ast::StmtExpr { value: child, range: _, + node_index: _, }) = checker.semantic().current_statement() { if expr == child.as_ref() { diff --git a/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_dict_comprehension_for_iterable.rs b/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_dict_comprehension_for_iterable.rs index 7af4bfa6f1..d7defe6c8b 100644 --- a/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_dict_comprehension_for_iterable.rs +++ b/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_dict_comprehension_for_iterable.rs @@ -176,14 +176,17 @@ fn fix_unnecessary_dict_comprehension(value: &Expr, generator: &Comprehension) - }, keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; Expr::Call(ExprCall { func: Box::new(Expr::Name(ExprName { id: "dict.fromkeys".into(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), arguments: args, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) } diff --git a/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs b/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs index 1bf052e206..eea8374c60 100644 --- a/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs +++ b/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs @@ -48,6 +48,7 @@ pub(crate) fn unnecessary_list_call(checker: &Checker, expr: &Expr, call: &ExprC func, arguments, range: _, + node_index: _, } = call; if !arguments.keywords.is_empty() { @@ -60,6 +61,7 @@ pub(crate) fn unnecessary_list_call(checker: &Checker, expr: &Expr, call: &ExprC let Arguments { range: _, + node_index: _, args, keywords: _, } = arguments; diff --git a/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs b/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs index 0e2768eb7a..5357daf99f 100644 --- a/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs +++ b/crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs @@ -52,6 +52,7 @@ pub(crate) fn unnecessary_subscript_reversal(checker: &Checker, call: &ast::Expr upper, step, range: _, + node_index: _, }) = slice.as_ref() else { return; @@ -66,6 +67,7 @@ pub(crate) fn unnecessary_subscript_reversal(checker: &Checker, call: &ast::Expr op: UnaryOp::USub, operand, range: _, + node_index: _, }) = step.as_ref() else { return; diff --git a/crates/ruff_linter/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs b/crates/ruff_linter/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs index 4ac91e9ca5..27c0868332 100644 --- a/crates/ruff_linter/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs +++ b/crates/ruff_linter/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs @@ -72,6 +72,7 @@ pub(crate) fn multiple_starts_ends_with(checker: &Checker, expr: &Expr) { op: BoolOp::Or, values, range: _, + node_index: _, }) = expr else { return; @@ -86,8 +87,10 @@ pub(crate) fn multiple_starts_ends_with(checker: &Checker, expr: &Expr) { args, keywords, range: _, + node_index: _, }, range: _, + node_index: _, }) = &call else { continue; @@ -145,8 +148,10 @@ pub(crate) fn multiple_starts_ends_with(checker: &Checker, expr: &Expr) { args, keywords: _, range: _, + node_index: _, }, range: _, + node_index: _, }) = expr else { unreachable!( @@ -173,18 +178,21 @@ pub(crate) fn multiple_starts_ends_with(checker: &Checker, expr: &Expr) { .collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }); let node1 = Expr::Name(ast::ExprName { id: arg_name.into(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let node2 = Expr::Attribute(ast::ExprAttribute { value: Box::new(node1), attr: Identifier::new(attr_name.to_string(), TextRange::default()), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let node3 = Expr::Call(ast::ExprCall { func: Box::new(node2), @@ -192,8 +200,10 @@ pub(crate) fn multiple_starts_ends_with(checker: &Checker, expr: &Expr) { args: Box::from([node]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let call = node3; @@ -213,6 +223,7 @@ pub(crate) fn multiple_starts_ends_with(checker: &Checker, expr: &Expr) { }) .collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let bool_op = node; diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( diff --git a/crates/ruff_linter/src/rules/flake8_pie/rules/reimplemented_container_builtin.rs b/crates/ruff_linter/src/rules/flake8_pie/rules/reimplemented_container_builtin.rs index 77677672bd..ad817929c9 100644 --- a/crates/ruff_linter/src/rules/flake8_pie/rules/reimplemented_container_builtin.rs +++ b/crates/ruff_linter/src/rules/flake8_pie/rules/reimplemented_container_builtin.rs @@ -63,6 +63,7 @@ pub(crate) fn reimplemented_container_builtin(checker: &Checker, expr: &ExprLamb parameters, body, range: _, + node_index: _, } = expr; if parameters.is_some() { diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_literal_member.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_literal_member.rs index 261a52a619..154a2bdc41 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_literal_member.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_literal_member.rs @@ -88,12 +88,14 @@ pub(crate) fn duplicate_literal_member<'a>(checker: &Checker, expr: &'a Expr) { Expr::Tuple(ast::ExprTuple { elts: unique_nodes.into_iter().cloned().collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, parenthesized: false, }) }), value: subscript.value.clone(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, }); let fix = Fix::applicable_edit( diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_union_member.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_union_member.rs index 1064ca22b8..27c6d41c78 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_union_member.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_union_member.rs @@ -165,6 +165,7 @@ fn generate_pep604_fix( op: Operator::BitOr, right: Box::new(right.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })) } else { Some(right.clone()) diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/exit_annotations.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/exit_annotations.rs index 7e7b670913..3127f3d411 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/exit_annotations.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/exit_annotations.rs @@ -347,6 +347,7 @@ fn check_positional_args_for_overloaded_method( // If any overloads have any variadic arguments, don't do any checking let Parameters { range: _, + node_index: _, posonlyargs, args, vararg: None, diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/mod.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/mod.rs index ce7b0700ac..77e902da12 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/mod.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/mod.rs @@ -133,14 +133,17 @@ fn generate_union_fix( // Construct the expression as `Subscript[typing.Union, Tuple[expr, [expr, ...]]]` let new_expr = Expr::Subscript(ExprSubscript { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), value: Box::new(Expr::Name(ExprName { id: Name::new(binding), ctx: ExprContext::Store, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), slice: Box::new(Expr::Tuple(ExprTuple { elts: nodes.into_iter().cloned().collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, parenthesized: false, })), diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/non_empty_stub_body.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/non_empty_stub_body.rs index cfc005941a..3e3efd8c66 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/non_empty_stub_body.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/non_empty_stub_body.rs @@ -59,7 +59,12 @@ pub(crate) fn non_empty_stub_body(checker: &Checker, body: &[Stmt]) { } // Ignore `...` (the desired case). - if let Stmt::Expr(ast::StmtExpr { value, range: _ }) = stmt { + if let Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) = stmt + { if value.is_ellipsis_literal_expr() { return; } diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_none_literal.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_none_literal.rs index 81ef4434fe..12c4b01fb9 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_none_literal.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_none_literal.rs @@ -205,11 +205,13 @@ fn create_fix( let new_literal_expr = Expr::Subscript(ast::ExprSubscript { value: Box::new(literal_subscript.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, slice: Box::new(if literal_elements.len() > 1 { Expr::Tuple(ast::ExprTuple { elts: literal_elements.into_iter().cloned().collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, parenthesized: true, }) @@ -233,6 +235,7 @@ fn create_fix( UnionKind::BitOr => { let none_expr = Expr::NoneLiteral(ExprNoneLiteral { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let union_expr = pep_604_union(&[new_literal_expr, none_expr]); let content = checker.generator().expr(&union_expr); diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_numeric_union.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_numeric_union.rs index c384433ddd..8c22d3b009 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_numeric_union.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_numeric_union.rs @@ -252,6 +252,7 @@ fn generate_pep604_fix( op: Operator::BitOr, right: Box::new(right.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })) } else { Some(right.clone()) diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/simple_defaults.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/simple_defaults.rs index ad9d6137bd..93498e8b16 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/simple_defaults.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/simple_defaults.rs @@ -300,7 +300,11 @@ fn is_valid_default_value_with_annotation( } Expr::List(ast::ExprList { elts, .. }) | Expr::Tuple(ast::ExprTuple { elts, .. }) - | Expr::Set(ast::ExprSet { elts, range: _ }) => { + | Expr::Set(ast::ExprSet { + elts, + range: _, + node_index: _, + }) => { return allow_container && elts.len() <= 10 && elts @@ -320,6 +324,7 @@ fn is_valid_default_value_with_annotation( op: UnaryOp::USub, operand, range: _, + node_index: _, }) => { match operand.as_ref() { // Ex) `-1`, `-3.14`, `2j` @@ -342,6 +347,7 @@ fn is_valid_default_value_with_annotation( op: Operator::Add | Operator::Sub, right, range: _, + node_index: _, }) => { // Ex) `1 + 2j`, `1 - 2j`, `-1 - 2j`, `-1 + 2j` if let Expr::NumberLiteral(ast::ExprNumberLiteral { @@ -360,6 +366,7 @@ fn is_valid_default_value_with_annotation( op: UnaryOp::USub, operand, range: _, + node_index: _, }) = left.as_ref() { // Ex) `-1 + 2j`, `-1 - 2j` @@ -398,6 +405,7 @@ fn is_valid_pep_604_union(annotation: &Expr) -> bool { op: Operator::BitOr, right, range: _, + node_index: _, }) => is_valid_pep_604_union_member(left) && is_valid_pep_604_union_member(right), Expr::Name(_) | Expr::Subscript(_) | Expr::Attribute(_) | Expr::NoneLiteral(_) => true, _ => false, @@ -410,6 +418,7 @@ fn is_valid_pep_604_union(annotation: &Expr) -> bool { op: Operator::BitOr, right, range: _, + node_index: _, }) = annotation else { return false; diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs index 0062f07063..0765eeb48d 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs @@ -140,10 +140,12 @@ pub(crate) fn unnecessary_literal_union<'a>(checker: &Checker, expr: &'a Expr) { slice: Box::new(Expr::Tuple(ast::ExprTuple { elts: literal_exprs.into_iter().cloned().collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, parenthesized: true, })), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, }); @@ -162,10 +164,12 @@ pub(crate) fn unnecessary_literal_union<'a>(checker: &Checker, expr: &'a Expr) { slice: Box::new(Expr::Tuple(ast::ExprTuple { elts, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, parenthesized: true, })), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, })) } else { diff --git a/crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_type_union.rs b/crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_type_union.rs index c2b7628b2f..56d838b950 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_type_union.rs +++ b/crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_type_union.rs @@ -134,10 +134,12 @@ pub(crate) fn unnecessary_type_union<'a>(checker: &Checker, union: &'a Expr) { id: Name::new_static("type"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), slice: Box::new(pep_604_union(&elts)), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); if other_exprs.is_empty() { @@ -157,6 +159,7 @@ pub(crate) fn unnecessary_type_union<'a>(checker: &Checker, union: &'a Expr) { id: Name::new_static("type"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), slice: Box::new(Expr::Subscript(ast::ExprSubscript { value: subscript.value.clone(), @@ -168,18 +171,22 @@ pub(crate) fn unnecessary_type_union<'a>(checker: &Checker, union: &'a Expr) { id: type_member, ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) }) .collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, })), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); if other_exprs.is_empty() { @@ -195,10 +202,12 @@ pub(crate) fn unnecessary_type_union<'a>(checker: &Checker, union: &'a Expr) { elts: exprs.into_iter().cloned().collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, })), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); checker.generator().expr(&union) diff --git a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/assertion.rs b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/assertion.rs index 795c3c7e5c..9e72a7e358 100644 --- a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/assertion.rs +++ b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/assertion.rs @@ -619,11 +619,13 @@ fn is_composite_condition(test: &Expr) -> CompositionKind { op: UnaryOp::Not, operand, range: _, + node_index: _, }) => { if let Expr::BoolOp(ast::ExprBoolOp { op: BoolOp::Or, values, range: _, + node_index: _, }) = operand.as_ref() { // Only split cases without mixed `and` and `or`. diff --git a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/fixture.rs b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/fixture.rs index 634bf422e1..433aca9834 100644 --- a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/fixture.rs +++ b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/fixture.rs @@ -622,7 +622,11 @@ struct SkipFunctionsVisitor<'a> { impl<'a> Visitor<'a> for SkipFunctionsVisitor<'a> { fn visit_stmt(&mut self, stmt: &'a Stmt) { match stmt { - Stmt::Return(ast::StmtReturn { value, range: _ }) => { + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) => { if value.is_some() { self.has_return_with_value = true; } @@ -637,7 +641,11 @@ impl<'a> Visitor<'a> for SkipFunctionsVisitor<'a> { Expr::YieldFrom(_) => { self.has_yield_from = true; } - Expr::Yield(ast::ExprYield { value, range: _ }) => { + Expr::Yield(ast::ExprYield { + value, + range: _, + node_index: _, + }) => { self.yield_statements.push(expr); if value.is_some() { self.has_return_with_value = true; @@ -686,6 +694,7 @@ fn check_fixture_decorator(checker: &Checker, func_name: &str, decorator: &Decor func, arguments, range: _, + node_index: _, }) => { if checker.enabled(Rule::PytestFixtureIncorrectParenthesesStyle) { if !checker.settings.flake8_pytest_style.fixture_parentheses diff --git a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/marks.rs b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/marks.rs index 979cb7dff6..8b80c6b289 100644 --- a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/marks.rs +++ b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/marks.rs @@ -146,8 +146,10 @@ fn check_mark_parentheses(checker: &Checker, decorator: &Decorator, marker: &str args, keywords, range: _, + node_index: _, }, range: _, + node_index: _, }) => { if !checker.settings.flake8_pytest_style.mark_parentheses && args.is_empty() diff --git a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/parametrize.rs b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/parametrize.rs index 197802ed99..66590cc684 100644 --- a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/parametrize.rs +++ b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/parametrize.rs @@ -301,6 +301,7 @@ fn elts_to_csv(elts: &[Expr], generator: Generator, flags: StringLiteralFlags) - }) .into_boxed_str(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), flags, }); Some(generator.expr(&node)) @@ -363,12 +364,14 @@ fn check_names(checker: &Checker, call: &ExprCall, expr: &Expr, argvalues: &Expr Expr::from(ast::StringLiteral { value: Box::from(*name), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), flags: checker.default_string_flags(), }) }) .collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }); diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( @@ -398,12 +401,14 @@ fn check_names(checker: &Checker, call: &ExprCall, expr: &Expr, argvalues: &Expr Expr::from(ast::StringLiteral { value: Box::from(*name), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), flags: checker.default_string_flags(), }) }) .collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( checker.generator().expr(&node), @@ -432,6 +437,7 @@ fn check_names(checker: &Checker, call: &ExprCall, expr: &Expr, argvalues: &Expr elts: elts.clone(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( checker.generator().expr(&node), @@ -476,6 +482,7 @@ fn check_names(checker: &Checker, call: &ExprCall, expr: &Expr, argvalues: &Expr elts: elts.clone(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }); diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( diff --git a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/patch.rs b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/patch.rs index 3936dbfff2..fef3f695eb 100644 --- a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/patch.rs +++ b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/patch.rs @@ -84,6 +84,7 @@ fn check_patch_call(checker: &Checker, call: &ast::ExprCall, index: usize) { parameters, body, range: _, + node_index: _, }) = call .arguments .find_argument_value("new", index) diff --git a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/unittest_assert.rs b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/unittest_assert.rs index 1ff51ccbd2..650452c6a0 100644 --- a/crates/ruff_linter/src/rules/flake8_pytest_style/rules/unittest_assert.rs +++ b/crates/ruff_linter/src/rules/flake8_pytest_style/rules/unittest_assert.rs @@ -166,6 +166,7 @@ fn assert(expr: &Expr, msg: Option<&Expr>) -> Stmt { test: Box::new(expr.clone()), msg: msg.map(|msg| Box::new(msg.clone())), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) } @@ -175,6 +176,7 @@ fn compare(left: &Expr, cmp_op: CmpOp, right: &Expr) -> Expr { ops: Box::from([cmp_op]), comparators: Box::from([right.clone()]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) } @@ -294,6 +296,7 @@ impl UnittestAssert { op: UnaryOp::Not, operand: Box::new(expr.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }), msg, ) @@ -367,6 +370,7 @@ impl UnittestAssert { }; let node = Expr::NoneLiteral(ast::ExprNoneLiteral { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let expr = compare(expr, cmp_op, &node); Ok(assert(&expr, msg)) @@ -383,6 +387,7 @@ impl UnittestAssert { id: Name::new_static("isinstance"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node1 = ast::ExprCall { func: Box::new(node.into()), @@ -390,8 +395,10 @@ impl UnittestAssert { args: Box::from([(**obj).clone(), (**cls).clone()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let isinstance = node1.into(); if matches!(self, UnittestAssert::IsInstance) { @@ -401,6 +408,7 @@ impl UnittestAssert { op: UnaryOp::Not, operand: Box::new(isinstance), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let expr = node.into(); Ok(assert(&expr, msg)) @@ -421,12 +429,14 @@ impl UnittestAssert { id: Name::new_static("re"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node1 = ast::ExprAttribute { value: Box::new(node.into()), attr: Identifier::new("search".to_string(), TextRange::default()), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node2 = ast::ExprCall { func: Box::new(node1.into()), @@ -434,8 +444,10 @@ impl UnittestAssert { args: Box::from([(**regex).clone(), (**text).clone()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let re_search = node2.into(); if matches!(self, UnittestAssert::Regex | UnittestAssert::RegexpMatches) { @@ -445,6 +457,7 @@ impl UnittestAssert { op: UnaryOp::Not, operand: Box::new(re_search), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; Ok(assert(&node.into(), msg)) } diff --git a/crates/ruff_linter/src/rules/flake8_quotes/rules/unnecessary_escaped_quote.rs b/crates/ruff_linter/src/rules/flake8_quotes/rules/unnecessary_escaped_quote.rs index 5c7d6c91d0..62ed604dec 100644 --- a/crates/ruff_linter/src/rules/flake8_quotes/rules/unnecessary_escaped_quote.rs +++ b/crates/ruff_linter/src/rules/flake8_quotes/rules/unnecessary_escaped_quote.rs @@ -67,6 +67,7 @@ pub(crate) fn unnecessary_escaped_quote(checker: &Checker, string_like: StringLi ast::StringLikePart::FString(ast::FString { elements, range, + node_index: _, flags, }) => { check_interpolated_string(checker, AnyStringFlags::from(*flags), *range, elements); @@ -74,6 +75,7 @@ pub(crate) fn unnecessary_escaped_quote(checker: &Checker, string_like: StringLi ast::StringLikePart::TString(ast::TString { elements, range, + node_index: _, flags, }) => { check_interpolated_string(checker, AnyStringFlags::from(*flags), *range, elements); diff --git a/crates/ruff_linter/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs b/crates/ruff_linter/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs index 37ae01b46b..d543b30dcd 100644 --- a/crates/ruff_linter/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs +++ b/crates/ruff_linter/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs @@ -58,6 +58,7 @@ pub(crate) fn unnecessary_paren_on_raise_exception(checker: &Checker, expr: &Exp func, arguments, range: _, + node_index: _, }) = expr else { return; diff --git a/crates/ruff_linter/src/rules/flake8_return/visitor.rs b/crates/ruff_linter/src/rules/flake8_return/visitor.rs index 38ddae2af4..e939209f53 100644 --- a/crates/ruff_linter/src/rules/flake8_return/visitor.rs +++ b/crates/ruff_linter/src/rules/flake8_return/visitor.rs @@ -95,8 +95,16 @@ impl<'a> Visitor<'a> for ReturnVisitor<'_, 'a> { // But don't recurse into the body. return; } - Stmt::Global(ast::StmtGlobal { names, range: _ }) - | Stmt::Nonlocal(ast::StmtNonlocal { names, range: _ }) => { + Stmt::Global(ast::StmtGlobal { + names, + range: _, + node_index: _, + }) + | Stmt::Nonlocal(ast::StmtNonlocal { + names, + range: _, + node_index: _, + }) => { self.stack .non_locals .extend(names.iter().map(Identifier::as_str)); diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_bool_op.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_bool_op.rs index e2a3582137..7576c71fc1 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_bool_op.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_bool_op.rs @@ -307,8 +307,10 @@ fn isinstance_target<'a>(call: &'a Expr, semantic: &'a SemanticModel) -> Option< args, keywords, range: _, + node_index: _, }, range: _, + node_index: _, } = call.as_call_expr()?; if args.len() != 2 { return None; @@ -330,6 +332,7 @@ pub(crate) fn duplicate_isinstance_call(checker: &Checker, expr: &Expr) { op: BoolOp::Or, values, range: _, + node_index: _, }) = expr else { return; @@ -418,6 +421,7 @@ pub(crate) fn duplicate_isinstance_call(checker: &Checker, expr: &Expr) { .collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }; let isinstance_call = ast::ExprCall { @@ -426,6 +430,7 @@ pub(crate) fn duplicate_isinstance_call(checker: &Checker, expr: &Expr) { id: Name::new_static("isinstance"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), ), @@ -433,8 +438,10 @@ pub(crate) fn duplicate_isinstance_call(checker: &Checker, expr: &Expr) { args: Box::from([target.clone(), tuple.into()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(); @@ -451,6 +458,7 @@ pub(crate) fn duplicate_isinstance_call(checker: &Checker, expr: &Expr) { .chain(after) .collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(); let fixed_source = checker.generator().expr(&bool_op); @@ -472,6 +480,7 @@ fn match_eq_target(expr: &Expr) -> Option<(&Name, &Expr)> { ops, comparators, range: _, + node_index: _, }) = expr else { return None; @@ -497,6 +506,7 @@ pub(crate) fn compare_with_tuple(checker: &Checker, expr: &Expr) { op: BoolOp::Or, values, range: _, + node_index: _, }) = expr else { return; @@ -542,18 +552,21 @@ pub(crate) fn compare_with_tuple(checker: &Checker, expr: &Expr) { elts: comparators.into_iter().cloned().collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }; let node1 = ast::ExprName { id: id.clone(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node2 = ast::ExprCompare { left: Box::new(node1.into()), ops: Box::from([CmpOp::In]), comparators: Box::from([node.into()]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let in_expr = node2.into(); let mut diagnostic = checker.report_diagnostic( @@ -576,6 +589,7 @@ pub(crate) fn compare_with_tuple(checker: &Checker, expr: &Expr) { op: BoolOp::Or, values: iter::once(in_expr).chain(unmatched).collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; node.into() }; @@ -592,6 +606,7 @@ pub(crate) fn expr_and_not_expr(checker: &Checker, expr: &Expr) { op: BoolOp::And, values, range: _, + node_index: _, }) = expr else { return; @@ -608,6 +623,7 @@ pub(crate) fn expr_and_not_expr(checker: &Checker, expr: &Expr) { op: UnaryOp::Not, operand, range: _, + node_index: _, }) = expr { negated_expr.push(operand); @@ -648,6 +664,7 @@ pub(crate) fn expr_or_not_expr(checker: &Checker, expr: &Expr) { op: BoolOp::Or, values, range: _, + node_index: _, }) = expr else { return; @@ -664,6 +681,7 @@ pub(crate) fn expr_or_not_expr(checker: &Checker, expr: &Expr) { op: UnaryOp::Not, operand, range: _, + node_index: _, }) = expr { negated_expr.push(operand); @@ -733,6 +751,7 @@ fn is_short_circuit( op, values, range: _, + node_index: _, }) = expr else { return None; diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_expr.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_expr.rs index ff1b0e83ea..d32f2cb1b0 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_expr.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_expr.rs @@ -232,6 +232,7 @@ fn check_os_environ_subscript(checker: &Checker, expr: &Expr) { } }), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let new_env_var = node.into(); diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( @@ -246,6 +247,7 @@ pub(crate) fn dict_get_with_none_default(checker: &Checker, expr: &Expr) { func, arguments: Arguments { args, keywords, .. }, range: _, + node_index: _, }) = expr else { return; diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_ifexp.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_ifexp.rs index abcd4b214a..7ba5d6410a 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_ifexp.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_ifexp.rs @@ -188,6 +188,7 @@ pub(crate) fn if_expr_with_true_false( id: Name::new_static("bool"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), ), @@ -195,8 +196,10 @@ pub(crate) fn if_expr_with_true_false( args: Box::from([test.clone()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), ), @@ -224,6 +227,7 @@ pub(crate) fn if_expr_with_false_true( op: UnaryOp::Not, operand: Box::new(test.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), ), @@ -243,6 +247,7 @@ pub(crate) fn twisted_arms_in_ifexpr( op, operand, range: _, + node_index: _, }) = &test else { return; @@ -277,6 +282,7 @@ pub(crate) fn twisted_arms_in_ifexpr( body: Box::new(node1), orelse: Box::new(node), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( checker.generator().expr(&node3.into()), diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_unary_op.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_unary_op.rs index 4b7c249b2b..37f3c16a8e 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_unary_op.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/ast_unary_op.rs @@ -153,6 +153,7 @@ pub(crate) fn negation_with_equal_op(checker: &Checker, expr: &Expr, op: UnaryOp ops, comparators, range: _, + node_index: _, }) = operand else { return; @@ -185,6 +186,7 @@ pub(crate) fn negation_with_equal_op(checker: &Checker, expr: &Expr, op: UnaryOp ops: Box::from([CmpOp::NotEq]), comparators: comparators.clone(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( checker.generator().expr(&node.into()), @@ -207,6 +209,7 @@ pub(crate) fn negation_with_not_equal_op( ops, comparators, range: _, + node_index: _, }) = operand else { return; @@ -239,6 +242,7 @@ pub(crate) fn negation_with_not_equal_op( ops: Box::from([CmpOp::Eq]), comparators: comparators.clone(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( checker.generator().expr(&node.into()), @@ -255,6 +259,7 @@ pub(crate) fn double_negation(checker: &Checker, expr: &Expr, op: UnaryOp, opera op: operand_op, operand, range: _, + node_index: _, }) = operand else { return; @@ -279,6 +284,7 @@ pub(crate) fn double_negation(checker: &Checker, expr: &Expr, op: UnaryOp, opera id: Name::new_static("bool"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node1 = ast::ExprCall { func: Box::new(node.into()), @@ -286,8 +292,10 @@ pub(crate) fn double_negation(checker: &Checker, expr: &Expr, op: UnaryOp, opera args: Box::from([*operand.clone()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; diagnostic.set_fix(Fix::safe_edit(Edit::range_replacement( checker.generator().expr(&node1.into()), diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_get.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_get.rs index 12eb987bde..a4ab3ff311 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_get.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_get.rs @@ -123,6 +123,7 @@ pub(crate) fn if_else_block_instead_of_dict_get(checker: &Checker, stmt_if: &ast ops, comparators: test_dict, range: _, + node_index: _, }) = &**test else { return; @@ -187,6 +188,7 @@ pub(crate) fn if_else_block_instead_of_dict_get(checker: &Checker, stmt_if: &ast attr: Identifier::new("get".to_string(), TextRange::default()), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node3 = ast::ExprCall { func: Box::new(node2.into()), @@ -194,14 +196,17 @@ pub(crate) fn if_else_block_instead_of_dict_get(checker: &Checker, stmt_if: &ast args: Box::from([node1, node]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node4 = expected_var.clone(); let node5 = ast::StmtAssign { targets: vec![node4], value: Box::new(node3.into()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let contents = checker.generator().stmt(&node5.into()); @@ -246,6 +251,7 @@ pub(crate) fn if_exp_instead_of_dict_get( ops, comparators: test_dict, range: _, + node_index: _, }) = test else { return; @@ -291,6 +297,7 @@ pub(crate) fn if_exp_instead_of_dict_get( attr: Identifier::new("get".to_string(), TextRange::default()), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let fixed_node = ast::ExprCall { func: Box::new(dict_get_node.into()), @@ -298,8 +305,10 @@ pub(crate) fn if_exp_instead_of_dict_get( args: Box::from([dict_key_node, default_value_node]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let contents = checker.generator().expr(&fixed_node.into()); diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_lookup.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_lookup.rs index 2d116658db..f9806190de 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_lookup.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_lookup.rs @@ -57,6 +57,7 @@ pub(crate) fn if_else_block_instead_of_dict_lookup(checker: &Checker, stmt_if: & ops, comparators, range: _, + node_index: _, }) = test.as_ref() else { return; @@ -73,7 +74,14 @@ pub(crate) fn if_else_block_instead_of_dict_lookup(checker: &Checker, stmt_if: & let Some(literal_expr) = expr.as_literal_expr() else { return; }; - let [Stmt::Return(ast::StmtReturn { value, range: _ })] = body.as_slice() else { + let [ + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }), + ] = body.as_slice() + else { return; }; @@ -99,7 +107,14 @@ pub(crate) fn if_else_block_instead_of_dict_lookup(checker: &Checker, stmt_if: & for clause in elif_else_clauses { let ElifElseClause { test, body, .. } = clause; - let [Stmt::Return(ast::StmtReturn { value, range: _ })] = body.as_slice() else { + let [ + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }), + ] = body.as_slice() + else { return; }; @@ -107,7 +122,14 @@ pub(crate) fn if_else_block_instead_of_dict_lookup(checker: &Checker, stmt_if: & // `else` None => { // The else must also be a single effect-free return statement - let [Stmt::Return(ast::StmtReturn { value, range: _ })] = body.as_slice() else { + let [ + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }), + ] = body.as_slice() + else { return; }; if value.as_ref().is_some_and(|value| { @@ -122,6 +144,7 @@ pub(crate) fn if_else_block_instead_of_dict_lookup(checker: &Checker, stmt_if: & ops, comparators, range: _, + node_index: _, })) => { let Expr::Name(ast::ExprName { id, .. }) = left.as_ref() else { return; diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_if_exp.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_if_exp.rs index 7de2bb14d3..44c89d37c3 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_if_exp.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_if_exp.rs @@ -96,6 +96,7 @@ pub(crate) fn if_else_block_instead_of_if_exp(checker: &Checker, stmt_if: &ast:: body, elif_else_clauses, range: _, + node_index: _, } = stmt_if; // `test: None` to only match an `else` clause @@ -268,11 +269,13 @@ fn assignment_ternary( body: Box::new(body_value.clone()), orelse: Box::new(orelse_value.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node1 = ast::StmtAssign { targets: vec![target_var.clone()], value: Box::new(node.into()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; node1.into() } @@ -282,11 +285,13 @@ fn assignment_binary_and(target_var: &Expr, left_value: &Expr, right_value: &Exp op: BoolOp::And, values: vec![left_value.clone(), right_value.clone()], range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let node1 = ast::StmtAssign { targets: vec![target_var.clone()], value: Box::new(node.into()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; node1.into() } @@ -294,10 +299,12 @@ fn assignment_binary_and(target_var: &Expr, left_value: &Expr, right_value: &Exp fn assignment_binary_or(target_var: &Expr, left_value: &Expr, right_value: &Expr) -> Stmt { (ast::StmtAssign { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), targets: vec![target_var.clone()], value: Box::new( (ast::ExprBoolOp { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), op: BoolOp::Or, values: vec![left_value.clone(), right_value.clone()], }) diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/key_in_dict.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/key_in_dict.rs index ff15fe6590..da647235e1 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/key_in_dict.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/key_in_dict.rs @@ -60,6 +60,7 @@ fn key_in_dict(checker: &Checker, left: &Expr, right: &Expr, operator: CmpOp, pa func, arguments: Arguments { args, keywords, .. }, range: _, + node_index: _, }) = &right else { return; diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/needless_bool.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/needless_bool.rs index f313430121..679797a258 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/needless_bool.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/needless_bool.rs @@ -132,11 +132,13 @@ pub(crate) fn needless_bool(checker: &Checker, stmt: &Stmt) { body: elif_body, test: Some(elif_test), range: elif_range, + node_index: _, }, ElifElseClause { body: else_body, test: None, range: else_range, + node_index: _, }, ] => ( elif_test, @@ -254,6 +256,7 @@ pub(crate) fn needless_bool(checker: &Checker, stmt: &Stmt) { left: left.clone(), comparators: Box::new([right.clone()]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })) } @@ -261,6 +264,7 @@ pub(crate) fn needless_bool(checker: &Checker, stmt: &Stmt) { op: ast::UnaryOp::Not, operand: Box::new(if_test.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), } } else if if_test.is_compare_expr() { @@ -273,6 +277,7 @@ pub(crate) fn needless_bool(checker: &Checker, stmt: &Stmt) { id: Name::new_static("bool"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let call_node = ast::ExprCall { func: Box::new(func_node.into()), @@ -280,8 +285,10 @@ pub(crate) fn needless_bool(checker: &Checker, stmt: &Stmt) { args: Box::from([if_test.clone()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; Some(Expr::Call(call_node)) } else { @@ -294,6 +301,7 @@ pub(crate) fn needless_bool(checker: &Checker, stmt: &Stmt) { Stmt::Return(ast::StmtReturn { value: Some(Box::new(expr.clone())), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) }); @@ -336,7 +344,12 @@ fn is_one_line_return_bool(stmts: &[Stmt]) -> Option { let [stmt] = stmts else { return None; }; - let Stmt::Return(ast::StmtReturn { value, range: _ }) = stmt else { + let Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) = stmt + else { return None; }; let Some(Expr::BooleanLiteral(ast::ExprBooleanLiteral { value, .. })) = value.as_deref() else { diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs index 7005485d2b..33c789455f 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs @@ -49,7 +49,12 @@ fn match_async_exit_stack(semantic: &SemanticModel) -> bool { let Some(expr) = semantic.current_expression_grandparent() else { return false; }; - let Expr::Await(ast::ExprAwait { value, range: _ }) = expr else { + let Expr::Await(ast::ExprAwait { + value, + range: _, + node_index: _, + }) = expr + else { return false; }; let Expr::Call(ast::ExprCall { func, .. }) = value.as_ref() else { diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/reimplemented_builtin.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/reimplemented_builtin.rs index f3737535ed..435874d007 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/reimplemented_builtin.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/reimplemented_builtin.rs @@ -133,6 +133,7 @@ pub(crate) fn convert_for_loop_to_any_all(checker: &Checker, stmt: &Stmt) { op: UnaryOp::Not, operand, range: _, + node_index: _, }) = &loop_.test { *operand.clone() @@ -141,6 +142,7 @@ pub(crate) fn convert_for_loop_to_any_all(checker: &Checker, stmt: &Stmt) { ops, comparators, range: _, + node_index: _, }) = &loop_.test { if let ([op], [comparator]) = (&**ops, &**comparators) { @@ -161,6 +163,7 @@ pub(crate) fn convert_for_loop_to_any_all(checker: &Checker, stmt: &Stmt) { ops: Box::from([op]), comparators: Box::from([comparator.clone()]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; node.into() } else { @@ -168,6 +171,7 @@ pub(crate) fn convert_for_loop_to_any_all(checker: &Checker, stmt: &Stmt) { op: UnaryOp::Not, operand: Box::new(loop_.test.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; node.into() } @@ -176,6 +180,7 @@ pub(crate) fn convert_for_loop_to_any_all(checker: &Checker, stmt: &Stmt) { op: UnaryOp::Not, operand: Box::new(loop_.test.clone()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; node.into() } @@ -276,6 +281,7 @@ fn match_loop(stmt: &Stmt) -> Option { test: nested_test, elif_else_clauses: nested_elif_else_clauses, range: _, + node_index: _, }), ] = body.as_slice() else { @@ -288,6 +294,7 @@ fn match_loop(stmt: &Stmt) -> Option { Stmt::Return(ast::StmtReturn { value: Some(value), range: _, + node_index: _, }), ] = nested_body.as_slice() else { @@ -325,6 +332,7 @@ fn match_else_return(stmt: &Stmt) -> Option { Stmt::Return(ast::StmtReturn { value: Some(next_value), range: _, + node_index: _, }), ] = orelse.as_slice() else { @@ -368,6 +376,7 @@ fn match_sibling_return<'a>(stmt: &'a Stmt, sibling: &'a Stmt) -> Option Expr { Expr::from(StringLiteral { value: Box::from(*elt), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), // intentionally omit the triple quote flag, if set, to avoid strange // replacements like // @@ -140,6 +141,7 @@ fn construct_replacement(elts: &[&str], flags: StringLiteralFlags) -> Expr { .collect(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) } diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/suppressible_exception.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/suppressible_exception.rs index 3980e2692a..1d01784e80 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/suppressible_exception.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/suppressible_exception.rs @@ -65,7 +65,13 @@ impl Violation for SuppressibleException { fn is_empty(body: &[Stmt]) -> bool { match body { [Stmt::Pass(_)] => true, - [Stmt::Expr(ast::StmtExpr { value, range: _ })] => value.is_ellipsis_literal_expr(), + [ + Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }), + ] => value.is_ellipsis_literal_expr(), _ => false, } } diff --git a/crates/ruff_linter/src/rules/flake8_simplify/rules/yoda_conditions.rs b/crates/ruff_linter/src/rules/flake8_simplify/rules/yoda_conditions.rs index 687af811c9..a21b960af0 100644 --- a/crates/ruff_linter/src/rules/flake8_simplify/rules/yoda_conditions.rs +++ b/crates/ruff_linter/src/rules/flake8_simplify/rules/yoda_conditions.rs @@ -116,6 +116,7 @@ impl From<&Expr> for ConstantLikelihood { op: UnaryOp::UAdd | UnaryOp::USub | UnaryOp::Invert, operand, range: _, + node_index: _, }) => ConstantLikelihood::from(&**operand), _ => ConstantLikelihood::Unlikely, } diff --git a/crates/ruff_linter/src/rules/flake8_tidy_imports/rules/relative_imports.rs b/crates/ruff_linter/src/rules/flake8_tidy_imports/rules/relative_imports.rs index 73dd4b82b9..1e6ac5e4ca 100644 --- a/crates/ruff_linter/src/rules/flake8_tidy_imports/rules/relative_imports.rs +++ b/crates/ruff_linter/src/rules/flake8_tidy_imports/rules/relative_imports.rs @@ -101,6 +101,7 @@ fn fix_banned_relative_import( names: names.clone(), level: 0, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let content = generator.stmt(&node.into()); Some(Fix::unsafe_edit(Edit::range_replacement( diff --git a/crates/ruff_linter/src/rules/flake8_type_checking/helpers.rs b/crates/ruff_linter/src/rules/flake8_type_checking/helpers.rs index 2b3d60c56e..21da4fb514 100644 --- a/crates/ruff_linter/src/rules/flake8_type_checking/helpers.rs +++ b/crates/ruff_linter/src/rules/flake8_type_checking/helpers.rs @@ -367,6 +367,7 @@ impl<'a> QuoteAnnotator<'a> { let annotation = subgenerator.expr(&expr_without_forward_references); generator.expr(&Expr::from(ast::StringLiteral { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), value: annotation.into_boxed_str(), flags: self.flags, })) diff --git a/crates/ruff_linter/src/rules/flynt/helpers.rs b/crates/ruff_linter/src/rules/flynt/helpers.rs index 4afb764c4c..58137a3816 100644 --- a/crates/ruff_linter/src/rules/flynt/helpers.rs +++ b/crates/ruff_linter/src/rules/flynt/helpers.rs @@ -9,6 +9,7 @@ fn to_interpolated_string_interpolation_element(inner: &Expr) -> ast::Interpolat conversion: ConversionFlag::None, format_spec: None, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) } @@ -17,6 +18,7 @@ pub(super) fn to_interpolated_string_literal_element(s: &str) -> ast::Interpolat ast::InterpolatedStringElement::Literal(ast::InterpolatedStringLiteralElement { value: Box::from(s), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) } @@ -31,8 +33,10 @@ fn is_simple_call(expr: &Expr) -> bool { args, keywords, range: _, + node_index: _, }, range: _, + node_index: _, }) => args.is_empty() && keywords.is_empty() && is_simple_callee(func), _ => false, } @@ -53,12 +57,17 @@ pub(super) fn to_interpolated_string_element( expr: &Expr, ) -> Option { match expr { - Expr::StringLiteral(ast::ExprStringLiteral { value, range }) => Some( - ast::InterpolatedStringElement::Literal(ast::InterpolatedStringLiteralElement { + Expr::StringLiteral(ast::ExprStringLiteral { + value, + range, + node_index, + }) => Some(ast::InterpolatedStringElement::Literal( + ast::InterpolatedStringLiteralElement { value: value.to_string().into_boxed_str(), range: *range, - }), - ), + node_index: node_index.clone(), + }, + )), // These should be pretty safe to wrap in a formatted value. Expr::NumberLiteral(_) | Expr::BooleanLiteral(_) | Expr::Name(_) | Expr::Attribute(_) => { Some(to_interpolated_string_interpolation_element(expr)) diff --git a/crates/ruff_linter/src/rules/flynt/rules/static_join_to_fstring.rs b/crates/ruff_linter/src/rules/flynt/rules/static_join_to_fstring.rs index aa07cb58af..f0e3399777 100644 --- a/crates/ruff_linter/src/rules/flynt/rules/static_join_to_fstring.rs +++ b/crates/ruff_linter/src/rules/flynt/rules/static_join_to_fstring.rs @@ -91,6 +91,7 @@ fn build_fstring(joiner: &str, joinees: &[Expr], flags: FStringFlags) -> Option< .into_boxed_str(), flags: flags?, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; return Some(node.into()); } @@ -113,6 +114,7 @@ fn build_fstring(joiner: &str, joinees: &[Expr], flags: FStringFlags) -> Option< let node = ast::FString { elements: f_string_elements.into(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), flags, }; Some(node.into()) diff --git a/crates/ruff_linter/src/rules/isort/annotate.rs b/crates/ruff_linter/src/rules/isort/annotate.rs index f3f1a247b2..ccbcc84b19 100644 --- a/crates/ruff_linter/src/rules/isort/annotate.rs +++ b/crates/ruff_linter/src/rules/isort/annotate.rs @@ -23,7 +23,11 @@ pub(crate) fn annotate_imports<'a>( .iter() .map(|import| { match import { - Stmt::Import(ast::StmtImport { names, range }) => { + Stmt::Import(ast::StmtImport { + names, + range, + node_index: _, + }) => { // Find comments above. let mut atop = vec![]; while let Some(comment) = @@ -59,6 +63,7 @@ pub(crate) fn annotate_imports<'a>( names, level, range: _, + node_index: _, }) => { // Find comments above. let mut atop = vec![]; diff --git a/crates/ruff_linter/src/rules/isort/rules/add_required_imports.rs b/crates/ruff_linter/src/rules/isort/rules/add_required_imports.rs index 3948202883..bff7e42137 100644 --- a/crates/ruff_linter/src/rules/isort/rules/add_required_imports.rs +++ b/crates/ruff_linter/src/rules/isort/rules/add_required_imports.rs @@ -58,7 +58,12 @@ impl AlwaysFixableViolation for MissingRequiredImport { fn includes_import(stmt: &Stmt, target: &NameImport) -> bool { match target { NameImport::Import(target) => { - let Stmt::Import(ast::StmtImport { names, range: _ }) = &stmt else { + let Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) = &stmt + else { return false; }; names.iter().any(|alias| { @@ -72,6 +77,7 @@ fn includes_import(stmt: &Stmt, target: &NameImport) -> bool { names, level, range: _, + node_index: _, }) = &stmt else { return false; diff --git a/crates/ruff_linter/src/rules/pandas_vet/rules/nunique_constant_series_check.rs b/crates/ruff_linter/src/rules/pandas_vet/rules/nunique_constant_series_check.rs index 5656e4489f..2d7ceba14b 100644 --- a/crates/ruff_linter/src/rules/pandas_vet/rules/nunique_constant_series_check.rs +++ b/crates/ruff_linter/src/rules/pandas_vet/rules/nunique_constant_series_check.rs @@ -87,6 +87,7 @@ pub(crate) fn nunique_constant_series_check( Expr::NumberLiteral(ast::ExprNumberLiteral { value: ast::Number::Int(Int::ONE), range: _, + node_index: _, }) ) { return; diff --git a/crates/ruff_linter/src/rules/perflint/rules/manual_dict_comprehension.rs b/crates/ruff_linter/src/rules/perflint/rules/manual_dict_comprehension.rs index be8c6feb0f..07423b3a67 100644 --- a/crates/ruff_linter/src/rules/perflint/rules/manual_dict_comprehension.rs +++ b/crates/ruff_linter/src/rules/perflint/rules/manual_dict_comprehension.rs @@ -121,6 +121,7 @@ pub(crate) fn manual_dict_comprehension(checker: &Checker, for_stmt: &ast::StmtF targets, value, range, + node_index: _, }) = stmt else { return; diff --git a/crates/ruff_linter/src/rules/perflint/rules/manual_list_comprehension.rs b/crates/ruff_linter/src/rules/perflint/rules/manual_list_comprehension.rs index da95d98ad3..0283c5a229 100644 --- a/crates/ruff_linter/src/rules/perflint/rules/manual_list_comprehension.rs +++ b/crates/ruff_linter/src/rules/perflint/rules/manual_list_comprehension.rs @@ -148,8 +148,10 @@ pub(crate) fn manual_list_comprehension(checker: &Checker, for_stmt: &ast::StmtF args, keywords, range: _, + node_index: _, }, range, + node_index: _, }) = value.as_ref() else { return; diff --git a/crates/ruff_linter/src/rules/perflint/rules/manual_list_copy.rs b/crates/ruff_linter/src/rules/perflint/rules/manual_list_copy.rs index 7e9c9b103e..3322830aca 100644 --- a/crates/ruff_linter/src/rules/perflint/rules/manual_list_copy.rs +++ b/crates/ruff_linter/src/rules/perflint/rules/manual_list_copy.rs @@ -69,8 +69,10 @@ pub(crate) fn manual_list_copy(checker: &Checker, for_stmt: &ast::StmtFor) { args, keywords, range: _, + node_index: _, }, range, + node_index: _, }) = value.as_ref() else { return; diff --git a/crates/ruff_linter/src/rules/perflint/rules/unnecessary_list_cast.rs b/crates/ruff_linter/src/rules/perflint/rules/unnecessary_list_cast.rs index 5e9964e292..08d3ccacce 100644 --- a/crates/ruff_linter/src/rules/perflint/rules/unnecessary_list_cast.rs +++ b/crates/ruff_linter/src/rules/perflint/rules/unnecessary_list_cast.rs @@ -58,8 +58,10 @@ pub(crate) fn unnecessary_list_cast(checker: &Checker, iter: &Expr, body: &[Stmt args, keywords: _, range: _, + node_index: _, }, range: list_range, + node_index: _, }) = iter else { return; diff --git a/crates/ruff_linter/src/rules/pycodestyle/rules/lambda_assignment.rs b/crates/ruff_linter/src/rules/pycodestyle/rules/lambda_assignment.rs index 6b4ce91ade..c8cbc21ce6 100644 --- a/crates/ruff_linter/src/rules/pycodestyle/rules/lambda_assignment.rs +++ b/crates/ruff_linter/src/rules/pycodestyle/rules/lambda_assignment.rs @@ -187,6 +187,7 @@ fn function( ExprEllipsisLiteral::default(), ))), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let parameters = lambda.parameters.as_deref().cloned().unwrap_or_default(); if let Some(annotation) = annotation { @@ -234,6 +235,7 @@ fn function( returns: Some(Box::new(return_type)), type_params: None, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let generated = checker.generator().stmt(&func); @@ -249,6 +251,7 @@ fn function( returns: None, type_params: None, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let generated = checker.generator().stmt(&function); diff --git a/crates/ruff_linter/src/rules/pycodestyle/rules/multiple_imports_on_one_line.rs b/crates/ruff_linter/src/rules/pycodestyle/rules/multiple_imports_on_one_line.rs index 01a57c99c9..dd7dc69b5b 100644 --- a/crates/ruff_linter/src/rules/pycodestyle/rules/multiple_imports_on_one_line.rs +++ b/crates/ruff_linter/src/rules/pycodestyle/rules/multiple_imports_on_one_line.rs @@ -75,6 +75,7 @@ fn split_imports( .map(|alias| { let Alias { range: _, + node_index: _, name, asname, } = alias; @@ -99,6 +100,7 @@ fn split_imports( .map(|alias| { let Alias { range: _, + node_index: _, name, asname, } = alias; diff --git a/crates/ruff_linter/src/rules/pycodestyle/rules/not_tests.rs b/crates/ruff_linter/src/rules/pycodestyle/rules/not_tests.rs index d9f6b84d48..30460c1b7c 100644 --- a/crates/ruff_linter/src/rules/pycodestyle/rules/not_tests.rs +++ b/crates/ruff_linter/src/rules/pycodestyle/rules/not_tests.rs @@ -88,6 +88,7 @@ pub(crate) fn not_tests(checker: &Checker, unary_op: &ast::ExprUnaryOp) { ops, comparators, range: _, + node_index: _, }) = unary_op.operand.as_ref() else { return; diff --git a/crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs b/crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs index e6c6a17b0d..5c392ae93a 100644 --- a/crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs +++ b/crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs @@ -673,6 +673,7 @@ impl<'a> Visitor<'a> for BodyVisitor<'a> { } Stmt::Return(ast::StmtReturn { range, + node_index: _, value: Some(value), }) => { self.returns.push(ReturnEntry { @@ -684,7 +685,11 @@ impl<'a> Visitor<'a> for BodyVisitor<'a> { }, }); } - Stmt::Return(ast::StmtReturn { range, value: None }) => { + Stmt::Return(ast::StmtReturn { + range, + node_index: _, + value: None, + }) => { self.returns.push(ReturnEntry { range: *range, kind: ReturnEntryKind::ImplicitNone, @@ -701,6 +706,7 @@ impl<'a> Visitor<'a> for BodyVisitor<'a> { match expr { Expr::Yield(ast::ExprYield { range, + node_index: _, value: Some(value), }) => { self.yields.push(YieldEntry { @@ -708,7 +714,11 @@ impl<'a> Visitor<'a> for BodyVisitor<'a> { is_none_yield: value.is_none_literal_expr(), }); } - Expr::Yield(ast::ExprYield { range, value: None }) => { + Expr::Yield(ast::ExprYield { + range, + node_index: _, + value: None, + }) => { self.yields.push(YieldEntry { range: *range, is_none_yield: true, diff --git a/crates/ruff_linter/src/rules/pylint/rules/bad_string_format_character.rs b/crates/ruff_linter/src/rules/pylint/rules/bad_string_format_character.rs index 300f937d15..a94e8290e9 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/bad_string_format_character.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/bad_string_format_character.rs @@ -92,6 +92,7 @@ pub(crate) fn call(checker: &Checker, string: &str, range: TextRange) { pub(crate) fn percent(checker: &Checker, expr: &Expr, format_string: &ExprStringLiteral) { for StringLiteral { value: _, + node_index: _, range, flags, } in &format_string.value diff --git a/crates/ruff_linter/src/rules/pylint/rules/bad_string_format_type.rs b/crates/ruff_linter/src/rules/pylint/rules/bad_string_format_type.rs index 2d9e165651..a747b9b12a 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/bad_string_format_type.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/bad_string_format_type.rs @@ -219,6 +219,7 @@ pub(crate) fn bad_string_format_type( let mut format_strings = vec![]; for StringLiteral { value: _, + node_index: _, range, flags, } in &format_string.value @@ -236,7 +237,11 @@ pub(crate) fn bad_string_format_type( // Parse the parameters. let is_valid = match &*bin_op.right { Expr::Tuple(ast::ExprTuple { elts, .. }) => is_valid_tuple(&format_strings, elts), - Expr::Dict(ast::ExprDict { items, range: _ }) => is_valid_dict(&format_strings, items), + Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) => is_valid_dict(&format_strings, items), _ => is_valid_constant(&format_strings, &bin_op.right), }; if !is_valid { diff --git a/crates/ruff_linter/src/rules/pylint/rules/if_stmt_min_max.rs b/crates/ruff_linter/src/rules/pylint/rules/if_stmt_min_max.rs index 733f809e6b..7a5e7ee9ce 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/if_stmt_min_max.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/if_stmt_min_max.rs @@ -87,6 +87,7 @@ pub(crate) fn if_stmt_min_max(checker: &Checker, stmt_if: &ast::StmtIf) { body, elif_else_clauses, range: _, + node_index: _, } = stmt_if; if !elif_else_clauses.is_empty() { diff --git a/crates/ruff_linter/src/rules/pylint/rules/manual_import_from.rs b/crates/ruff_linter/src/rules/pylint/rules/manual_import_from.rs index 89c9be036b..5f5cc9ccc9 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/manual_import_from.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/manual_import_from.rs @@ -72,9 +72,11 @@ pub(crate) fn manual_from_import(checker: &Checker, stmt: &Stmt, alias: &Alias, name: asname.clone(), asname: None, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }], level: 0, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; diagnostic.set_fix(Fix::safe_edit(Edit::range_replacement( checker.generator().stmt(&node.into()), diff --git a/crates/ruff_linter/src/rules/pylint/rules/nested_min_max.rs b/crates/ruff_linter/src/rules/pylint/rules/nested_min_max.rs index 154550c41f..9383906df9 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/nested_min_max.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/nested_min_max.rs @@ -112,8 +112,10 @@ fn collect_nested_args(min_max: MinMax, args: &[Expr], semantic: &SemanticModel) args, keywords, range: _, + node_index: _, }, range: _, + node_index: _, }) = arg { if MinMax::try_from_call(func, keywords, semantic) == Some(min_max) { @@ -123,6 +125,7 @@ fn collect_nested_args(min_max: MinMax, args: &[Expr], semantic: &SemanticModel) value: Box::new(arg.clone()), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); new_args.push(new_arg); continue; @@ -181,8 +184,10 @@ pub(crate) fn nested_min_max( args: collect_nested_args(min_max, args, checker.semantic()).into_boxed_slice(), keywords: Box::from(keywords), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement( checker.generator().expr(&flattened_expr), diff --git a/crates/ruff_linter/src/rules/pylint/rules/redefined_loop_name.rs b/crates/ruff_linter/src/rules/pylint/rules/redefined_loop_name.rs index b7dd04e992..1be0f21c5b 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/redefined_loop_name.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/redefined_loop_name.rs @@ -280,11 +280,13 @@ fn assignment_targets_from_expr<'a>( ctx: ExprContext::Store, value, range: _, + node_index: _, }) => Box::new(iter::once(value.as_ref())), Expr::Name(ast::ExprName { ctx: ExprContext::Store, id, range: _, + node_index: _, }) => { // Ignore dummy variables. if dummy_variable_rgx.is_match(id) { @@ -297,6 +299,7 @@ fn assignment_targets_from_expr<'a>( ctx: ExprContext::Store, elts, range: _, + node_index: _, }) => Box::new( elts.iter() .flat_map(|elt| assignment_targets_from_expr(elt, dummy_variable_rgx)), @@ -305,6 +308,7 @@ fn assignment_targets_from_expr<'a>( ctx: ExprContext::Store, elts, range: _, + node_index: _, parenthesized: _, }) => Box::new( elts.iter() diff --git a/crates/ruff_linter/src/rules/pylint/rules/redefined_slots_in_subclass.rs b/crates/ruff_linter/src/rules/pylint/rules/redefined_slots_in_subclass.rs index a2eb232456..a449a3054d 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/redefined_slots_in_subclass.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/redefined_slots_in_subclass.rs @@ -167,7 +167,11 @@ fn slots_attributes(expr: &Expr) -> impl Iterator { Expr::Tuple(ast::ExprTuple { elts, .. }) | Expr::List(ast::ExprList { elts, .. }) | Expr::Set(ast::ExprSet { elts, .. }) => Some(elts.iter().filter_map(|elt| match elt { - Expr::StringLiteral(ast::ExprStringLiteral { value, range }) => Some(Slot { + Expr::StringLiteral(ast::ExprStringLiteral { + value, + range, + node_index: _, + }) => Some(Slot { name: value.to_str(), range: *range, }), @@ -183,12 +187,14 @@ fn slots_attributes(expr: &Expr) -> impl Iterator { .unwrap() .iter_keys() .filter_map(|key| match key { - Some(Expr::StringLiteral(ast::ExprStringLiteral { value, range })) => { - Some(Slot { - name: value.to_str(), - range: *range, - }) - } + Some(Expr::StringLiteral(ast::ExprStringLiteral { + value, + range, + node_index: _, + })) => Some(Slot { + name: value.to_str(), + range: *range, + }), _ => None, }), ), diff --git a/crates/ruff_linter/src/rules/pylint/rules/repeated_equality_comparison.rs b/crates/ruff_linter/src/rules/pylint/rules/repeated_equality_comparison.rs index 4f279fa6b1..5b4bda45a9 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/repeated_equality_comparison.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/repeated_equality_comparison.rs @@ -5,7 +5,7 @@ use ast::ExprContext; use ruff_macros::{ViolationMetadata, derive_message_formats}; use ruff_python_ast::comparable::ComparableExpr; use ruff_python_ast::helpers::{any_over_expr, contains_effect}; -use ruff_python_ast::{self as ast, BoolOp, CmpOp, Expr}; +use ruff_python_ast::{self as ast, AtomicNodeIndex, BoolOp, CmpOp, Expr}; use ruff_python_semantic::SemanticModel; use ruff_text_size::{Ranged, TextRange}; @@ -164,11 +164,13 @@ pub(crate) fn repeated_equality_comparison(checker: &Checker, bool_op: &ast::Exp Expr::Set(ast::ExprSet { elts: comparators.iter().copied().cloned().collect(), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }) } else { Expr::Tuple(ast::ExprTuple { elts: comparators.iter().copied().cloned().collect(), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), ctx: ExprContext::Load, parenthesized: true, }) @@ -186,10 +188,12 @@ pub(crate) fn repeated_equality_comparison(checker: &Checker, bool_op: &ast::Exp }, comparators: Box::from([comparator]), range: bool_op.range(), + node_index: AtomicNodeIndex::dummy(), }))) .chain(after) .collect(), range: bool_op.range(), + node_index: AtomicNodeIndex::dummy(), })), bool_op.range(), ))); diff --git a/crates/ruff_linter/src/rules/pylint/rules/return_in_init.rs b/crates/ruff_linter/src/rules/pylint/rules/return_in_init.rs index cf14390acd..ec80640c1d 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/return_in_init.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/return_in_init.rs @@ -46,7 +46,12 @@ impl Violation for ReturnInInit { /// PLE0101 pub(crate) fn return_in_init(checker: &Checker, stmt: &Stmt) { - if let Stmt::Return(ast::StmtReturn { value, range: _ }) = stmt { + if let Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) = stmt + { if let Some(expr) = value { if expr.is_none_literal_expr() { // Explicit `return None`. diff --git a/crates/ruff_linter/src/rules/pylint/rules/unnecessary_lambda.rs b/crates/ruff_linter/src/rules/pylint/rules/unnecessary_lambda.rs index b48e6ef8c9..d1be080b4f 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/unnecessary_lambda.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/unnecessary_lambda.rs @@ -63,6 +63,7 @@ pub(crate) fn unnecessary_lambda(checker: &Checker, lambda: &ExprLambda) { parameters, body, range: _, + node_index: _, } = lambda; // The lambda should consist of a single function call. diff --git a/crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs b/crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs index 088041dcf1..cc9ff1cb29 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs @@ -173,6 +173,7 @@ fn generate_keyword_fix(checker: &Checker, call: &ast::ExprCall) -> Fix { value: Box::from("utf-8"), flags: checker.default_string_flags(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })) ), &call.arguments, diff --git a/crates/ruff_linter/src/rules/pylint/rules/useless_return.rs b/crates/ruff_linter/src/rules/pylint/rules/useless_return.rs index cef3d35b66..c33acea2d4 100644 --- a/crates/ruff_linter/src/rules/pylint/rules/useless_return.rs +++ b/crates/ruff_linter/src/rules/pylint/rules/useless_return.rs @@ -61,7 +61,12 @@ pub(crate) fn useless_return( }; // Verify that the last statement is a return statement. - let Stmt::Return(ast::StmtReturn { value, range: _ }) = &last_stmt else { + let Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) = &last_stmt + else { return; }; @@ -72,7 +77,12 @@ pub(crate) fn useless_return( // Skip functions that consist of a docstring and a return statement. if body.len() == 2 { - if let Stmt::Expr(ast::StmtExpr { value, range: _ }) = &body[0] { + if let Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) = &body[0] + { if value.is_string_literal_expr() { return; } diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs index f88bfa38d4..92f163a575 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs @@ -87,6 +87,7 @@ pub(crate) fn convert_named_tuple_functional_to_class( // Ex) `NamedTuple("MyType")` ([_typename], []) => vec![Stmt::Pass(ast::StmtPass { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })], // Ex) `NamedTuple("MyType", [("a", int), ("b", str)])` ([_typename, fields], []) => { @@ -145,6 +146,7 @@ fn match_named_tuple_assign<'a>( func, arguments: Arguments { args, keywords, .. }, range: _, + node_index: _, }) = value else { return None; @@ -163,6 +165,7 @@ fn create_field_assignment_stmt(field: Name, annotation: &Expr) -> Stmt { id: field, ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), ), @@ -170,6 +173,7 @@ fn create_field_assignment_stmt(field: Name, annotation: &Expr) -> Stmt { value: None, simple: true, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into() } @@ -180,6 +184,7 @@ fn create_fields_from_fields_arg(fields: &Expr) -> Option> { if fields.is_empty() { let node = Stmt::Pass(ast::StmtPass { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); Some(vec![node]) } else { @@ -231,11 +236,13 @@ fn create_class_def_stmt(typename: &str, body: Vec, base_class: &Expr) -> args: Box::from([base_class.clone()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), body, type_params: None, decorator_list: vec![], range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into() } diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs index d45e4dd5cf..97f1619078 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs @@ -131,6 +131,7 @@ fn match_typed_dict_assign<'a>( func, arguments, range: _, + node_index: _, }) = value else { return None; @@ -149,6 +150,7 @@ fn create_field_assignment_stmt(field: &str, annotation: &Expr) -> Stmt { id: field.into(), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), ), @@ -156,6 +158,7 @@ fn create_field_assignment_stmt(field: &str, annotation: &Expr) -> Stmt { value: None, simple: true, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into() } @@ -176,11 +179,13 @@ fn create_class_def_stmt( None => Box::from([]), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), body, type_params: None, decorator_list: vec![], range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into() } @@ -189,6 +194,7 @@ fn fields_from_dict_literal(items: &[ast::DictItem]) -> Option> { if items.is_empty() { let node = Stmt::Pass(ast::StmtPass { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); Some(vec![node]) } else { @@ -222,6 +228,7 @@ fn fields_from_dict_call(func: &Expr, keywords: &[Keyword]) -> Option> if keywords.is_empty() { let node = Stmt::Pass(ast::StmtPass { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); Some(vec![node]) } else { @@ -234,6 +241,7 @@ fn fields_from_keywords(keywords: &[Keyword]) -> Option> { if keywords.is_empty() { let node = Stmt::Pass(ast::StmtPass { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); return Some(vec![node]); } @@ -256,13 +264,16 @@ fn match_fields_and_total(arguments: &Arguments) -> Option<(Vec, Option<&K ([_typename, fields], [..]) => { let total = arguments.find_keyword("total"); match fields { - Expr::Dict(ast::ExprDict { items, range: _ }) => { - Some((fields_from_dict_literal(items)?, total)) - } + Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) => Some((fields_from_dict_literal(items)?, total)), Expr::Call(ast::ExprCall { func, arguments: Arguments { keywords, .. }, range: _, + node_index: _, }) => Some((fields_from_dict_call(func, keywords)?, total)), _ => None, } @@ -271,6 +282,7 @@ fn match_fields_and_total(arguments: &Arguments) -> Option<(Vec, Option<&K ([_typename], []) => { let node = Stmt::Pass(ast::StmtPass { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); Some((vec![node], None)) } diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs index 7672680c72..ab1bd978f7 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs @@ -53,7 +53,11 @@ where /// UP023 pub(crate) fn deprecated_c_element_tree(checker: &Checker, stmt: &Stmt) { match stmt { - Stmt::Import(ast::StmtImport { names, range: _ }) => { + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => { // Ex) `import xml.etree.cElementTree as ET` for name in names { if &name.name == "xml.etree.cElementTree" && name.asname.is_some() { @@ -66,6 +70,7 @@ pub(crate) fn deprecated_c_element_tree(checker: &Checker, stmt: &Stmt) { names, level, range: _, + node_index: _, }) => { if *level > 0 { // Ex) `import .xml.etree.cElementTree as ET` diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_mock_import.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_mock_import.rs index 8da16d71ba..0ef84304fc 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_mock_import.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_mock_import.rs @@ -274,7 +274,11 @@ pub(crate) fn deprecated_mock_attribute(checker: &Checker, attribute: &ast::Expr /// UP026 pub(crate) fn deprecated_mock_import(checker: &Checker, stmt: &Stmt) { match stmt { - Stmt::Import(ast::StmtImport { names, range: _ }) => { + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => { // Find all `mock` imports. if names .iter() diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/f_strings.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/f_strings.rs index 0edc9bb2e8..f34751ce93 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/f_strings.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/f_strings.rs @@ -85,6 +85,7 @@ impl<'a> FormatSummaryValues<'a> { arg, value, range: _, + node_index: _, } = keyword; let key = arg.as_ref()?; if contains_quotes(locator.slice(value)) || locator.contains_line_break(value.range()) { diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs index abdc427515..9b1fd26801 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs @@ -64,8 +64,10 @@ pub(crate) fn lru_cache_with_maxsize_none(checker: &Checker, decorator_list: &[D args, keywords, range: _, + node_index: _, }, range: _, + node_index: _, }) = &decorator.expression else { continue; @@ -85,6 +87,7 @@ pub(crate) fn lru_cache_with_maxsize_none(checker: &Checker, decorator_list: &[D arg, value, range: _, + node_index: _, } = &keywords[0]; if arg.as_ref().is_some_and(|arg| arg == "maxsize") && value.is_none_literal_expr() { let mut diagnostic = checker.report_diagnostic( diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs index c4c84ddd90..8941677219 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs @@ -59,6 +59,7 @@ pub(crate) fn lru_cache_without_parameters(checker: &Checker, decorator_list: &[ func, arguments, range: _, + node_index: _, }) = &decorator.expression else { continue; diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/native_literals.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/native_literals.rs index 5b91362679..4b2bbb1068 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/native_literals.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/native_literals.rs @@ -39,23 +39,27 @@ impl LiteralType { LiteralType::Str => ast::StringLiteral { value: Box::default(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), flags: checker.default_string_flags(), } .into(), LiteralType::Bytes => ast::BytesLiteral { value: Box::default(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), flags: checker.default_bytes_flags(), } .into(), LiteralType::Int => ast::ExprNumberLiteral { value: ast::Number::Int(Int::from(0u8)), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), LiteralType::Float => ast::ExprNumberLiteral { value: ast::Number::Float(0.0), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), LiteralType::Bool => ast::ExprBooleanLiteral::default().into(), @@ -160,8 +164,10 @@ pub(crate) fn native_literals( args, keywords, range: _, + node_index: _, }, range: call_range, + node_index: _, } = call; if !keywords.is_empty() || args.len() > 1 { diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/os_error_alias.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/os_error_alias.rs index 286fb88d4e..c08a49462f 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/os_error_alias.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/os_error_alias.rs @@ -116,6 +116,7 @@ fn tuple_diagnostic(checker: &Checker, tuple: &ast::ExprTuple, aliases: &[&Expr] id: Name::new_static("OSError"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; remaining.insert(0, node.into()); } @@ -127,6 +128,7 @@ fn tuple_diagnostic(checker: &Checker, tuple: &ast::ExprTuple, aliases: &[&Expr] elts: remaining, ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }; format!("({})", checker.generator().expr(&node.into())) diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/outdated_version_block.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/outdated_version_block.rs index 025d9be062..c8a44d8d5c 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/outdated_version_block.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/outdated_version_block.rs @@ -93,6 +93,7 @@ pub(crate) fn outdated_version_block(checker: &Checker, stmt_if: &StmtIf) { ops, comparators, range: _, + node_index: _, }) = &branch.test else { continue; diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/pep695/mod.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/pep695/mod.rs index fc6a242c85..e364056de3 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/pep695/mod.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/pep695/mod.rs @@ -140,12 +140,14 @@ impl<'a> From<&'a TypeVar<'a>> for TypeParam { TypeParamKind::TypeVar => { TypeParam::TypeVar(TypeParamTypeVar { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), name: Identifier::new(*name, TextRange::default()), bound: match restriction { Some(TypeVarRestriction::Bound(bound)) => Some(Box::new((*bound).clone())), Some(TypeVarRestriction::Constraint(constraints)) => { Some(Box::new(Expr::Tuple(ast::ExprTuple { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), elts: constraints.iter().map(|expr| (*expr).clone()).collect(), ctx: ast::ExprContext::Load, parenthesized: true, @@ -154,14 +156,17 @@ impl<'a> From<&'a TypeVar<'a>> for TypeParam { Some(TypeVarRestriction::AnyStr) => { Some(Box::new(Expr::Tuple(ast::ExprTuple { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), elts: vec![ Expr::Name(ExprName { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), id: Name::from("str"), ctx: ast::ExprContext::Load, }), Expr::Name(ExprName { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), id: Name::from("bytes"), ctx: ast::ExprContext::Load, }), @@ -179,11 +184,13 @@ impl<'a> From<&'a TypeVar<'a>> for TypeParam { } TypeParamKind::TypeVarTuple => TypeParam::TypeVarTuple(TypeParamTypeVarTuple { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), name: Identifier::new(*name, TextRange::default()), default: None, }), TypeParamKind::ParamSpec => TypeParam::ParamSpec(TypeParamParamSpec { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), name: Identifier::new(*name, TextRange::default()), default: None, }), diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs index bcb584df8a..1faffd5a71 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs @@ -231,7 +231,12 @@ fn clean_params_tuple<'a>(right: &Expr, locator: &Locator<'a>) -> Cow<'a, str> { fn clean_params_dictionary(right: &Expr, locator: &Locator, stylist: &Stylist) -> Option { let is_multi_line = locator.contains_line_break(right.range()); let mut contents = String::new(); - if let Expr::Dict(ast::ExprDict { items, range: _ }) = &right { + if let Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) = &right + { let mut arguments: Vec = vec![]; let mut seen: Vec<&str> = vec![]; let mut indent = None; diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/timeout_error_alias.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/timeout_error_alias.rs index f1f8d92146..63dc4a363f 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/timeout_error_alias.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/timeout_error_alias.rs @@ -128,6 +128,7 @@ fn tuple_diagnostic(checker: &Checker, tuple: &ast::ExprTuple, aliases: &[&Expr] id: Name::new_static("TimeoutError"), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; remaining.insert(0, node.into()); } @@ -139,6 +140,7 @@ fn tuple_diagnostic(checker: &Checker, tuple: &ast::ExprTuple, aliases: &[&Expr] elts: remaining, ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }; format!("({})", checker.generator().expr(&node.into())) diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/unnecessary_default_type_args.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/unnecessary_default_type_args.rs index 3c11602ffb..ed1cba9f53 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/unnecessary_default_type_args.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/unnecessary_default_type_args.rs @@ -83,6 +83,7 @@ pub(crate) fn unnecessary_default_type_args(checker: &Checker, expr: &Expr) { elts, ctx: _, range: _, + node_index: _, parenthesized: _, }) = slice.as_ref() else { @@ -126,11 +127,13 @@ pub(crate) fn unnecessary_default_type_args(checker: &Checker, expr: &Expr) { elts: valid_elts, ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }) }), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), expr.range(), ), diff --git a/crates/ruff_linter/src/rules/pyupgrade/rules/yield_in_for_loop.rs b/crates/ruff_linter/src/rules/pyupgrade/rules/yield_in_for_loop.rs index e616d4a5c9..e7f88cd553 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/rules/yield_in_for_loop.rs +++ b/crates/ruff_linter/src/rules/pyupgrade/rules/yield_in_for_loop.rs @@ -78,6 +78,7 @@ pub(crate) fn yield_in_for_loop(checker: &Checker, stmt_for: &ast::StmtFor) { orelse, is_async: _, range: _, + node_index: _, } = stmt_for; // If there is an else statement, don't rewrite. @@ -91,12 +92,18 @@ pub(crate) fn yield_in_for_loop(checker: &Checker, stmt_for: &ast::StmtFor) { }; // If the body is not a yield, don't rewrite. - let Stmt::Expr(ast::StmtExpr { value, range: _ }) = &body else { + let Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) = &body + else { return; }; let Expr::Yield(ast::ExprYield { value: Some(value), range: _, + node_index: _, }) = value.as_ref() else { return; diff --git a/crates/ruff_linter/src/rules/refurb/helpers.rs b/crates/ruff_linter/src/rules/refurb/helpers.rs index 34ed1804ff..cd0ddd0b13 100644 --- a/crates/ruff_linter/src/rules/refurb/helpers.rs +++ b/crates/ruff_linter/src/rules/refurb/helpers.rs @@ -15,6 +15,7 @@ pub(super) fn generate_method_call(name: Name, method: &str, generator: Generato id: name, ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // Construct `name.method`. let attr = ast::ExprAttribute { @@ -22,6 +23,7 @@ pub(super) fn generate_method_call(name: Name, method: &str, generator: Generato attr: ast::Identifier::new(method.to_string(), TextRange::default()), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // Make it into a call `name.method()` let call = ast::ExprCall { @@ -30,13 +32,16 @@ pub(super) fn generate_method_call(name: Name, method: &str, generator: Generato args: Box::from([]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // And finally, turn it into a statement. let stmt = ast::StmtExpr { value: Box::new(call.into()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; generator.stmt(&stmt.into()) } @@ -62,6 +67,7 @@ pub(super) fn replace_with_identity_check( ops: [op].into(), comparators: [ast::ExprNoneLiteral::default().into()].into(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let new_content = generator.expr(&new_expr); diff --git a/crates/ruff_linter/src/rules/refurb/rules/check_and_remove_from_set.rs b/crates/ruff_linter/src/rules/refurb/rules/check_and_remove_from_set.rs index 00ea156590..ed2494f24b 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/check_and_remove_from_set.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/check_and_remove_from_set.rs @@ -185,6 +185,7 @@ fn make_suggestion(set: &ast::ExprName, element: &Expr, generator: Generator) -> attr: ast::Identifier::new("discard".to_string(), TextRange::default()), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // Make the actual call `set.discard(element)` let call = ast::ExprCall { @@ -193,13 +194,16 @@ fn make_suggestion(set: &ast::ExprName, element: &Expr, generator: Generator) -> args: Box::from([element.clone()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // And finally, turn it into a statement. let stmt = ast::StmtExpr { value: Box::new(call.into()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; generator.stmt(&stmt.into()) } diff --git a/crates/ruff_linter/src/rules/refurb/rules/delete_full_slice.rs b/crates/ruff_linter/src/rules/refurb/rules/delete_full_slice.rs index 0d8ec381df..2fce83de33 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/delete_full_slice.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/delete_full_slice.rs @@ -93,6 +93,7 @@ fn match_full_slice<'a>(expr: &'a Expr, semantic: &SemanticModel) -> Option<&'a upper: None, step: None, range: _, + node_index: _, }) ) { return None; diff --git a/crates/ruff_linter/src/rules/refurb/rules/if_exp_instead_of_or_operator.rs b/crates/ruff_linter/src/rules/refurb/rules/if_exp_instead_of_or_operator.rs index 7671a05b3a..51047f15bb 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/if_exp_instead_of_or_operator.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/if_exp_instead_of_or_operator.rs @@ -61,6 +61,7 @@ pub(crate) fn if_exp_instead_of_or_operator(checker: &Checker, if_expr: &ast::Ex body, orelse, range, + node_index: _, } = if_expr; if ComparableExpr::from(test) != ComparableExpr::from(body) { diff --git a/crates/ruff_linter/src/rules/refurb/rules/read_whole_file.rs b/crates/ruff_linter/src/rules/refurb/rules/read_whole_file.rs index 0115f742d5..a5282a5bce 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/read_whole_file.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/read_whole_file.rs @@ -130,6 +130,7 @@ fn make_suggestion(open: &FileOpen<'_>, generator: Generator) -> SourceCodeSnipp id: open.mode.pathlib_method(), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let call = ast::ExprCall { func: Box::new(name.into()), @@ -137,8 +138,10 @@ fn make_suggestion(open: &FileOpen<'_>, generator: Generator) -> SourceCodeSnipp args: Box::from([]), keywords: open.keywords.iter().copied().cloned().collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; SourceCodeSnippet::from_str(&generator.expr(&call.into())) } diff --git a/crates/ruff_linter/src/rules/refurb/rules/reimplemented_starmap.rs b/crates/ruff_linter/src/rules/refurb/rules/reimplemented_starmap.rs index 3fcde5bc32..a45d768f53 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/reimplemented_starmap.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/reimplemented_starmap.rs @@ -298,6 +298,7 @@ fn construct_starmap_call(starmap_binding: Name, iter: &Expr, func: &Expr) -> as id: starmap_binding, ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; ast::ExprCall { func: Box::new(starmap.into()), @@ -305,8 +306,10 @@ fn construct_starmap_call(starmap_binding: Name, iter: &Expr, func: &Expr) -> as args: Box::from([func.clone(), iter.clone()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } } @@ -316,6 +319,7 @@ fn wrap_with_call_to(call: ast::ExprCall, func_name: Name) -> ast::ExprCall { id: func_name, ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; ast::ExprCall { func: Box::new(name.into()), @@ -323,8 +327,10 @@ fn wrap_with_call_to(call: ast::ExprCall, func_name: Name) -> ast::ExprCall { args: Box::from([call.into()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } } diff --git a/crates/ruff_linter/src/rules/refurb/rules/repeated_append.rs b/crates/ruff_linter/src/rules/refurb/rules/repeated_append.rs index 6674bf552d..d3c8259ec9 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/repeated_append.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/repeated_append.rs @@ -342,6 +342,7 @@ fn make_suggestion(group: &AppendGroup, generator: Generator) -> String { elts, ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, }; // Make `var.extend`. @@ -351,6 +352,7 @@ fn make_suggestion(group: &AppendGroup, generator: Generator) -> String { attr: ast::Identifier::new("extend".to_string(), TextRange::default()), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // Make the actual call `var.extend((elt1, elt2, ..., eltN))` let call = ast::ExprCall { @@ -359,13 +361,16 @@ fn make_suggestion(group: &AppendGroup, generator: Generator) -> String { args: Box::from([tuple.into()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // And finally, turn it into a statement. let stmt = ast::StmtExpr { value: Box::new(call.into()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; generator.stmt(&stmt.into()) } diff --git a/crates/ruff_linter/src/rules/refurb/rules/single_item_membership_test.rs b/crates/ruff_linter/src/rules/refurb/rules/single_item_membership_test.rs index f0b9930bf2..e581bc7a12 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/single_item_membership_test.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/single_item_membership_test.rs @@ -129,6 +129,7 @@ fn single_item<'a>(expr: &'a Expr, semantic: &'a SemanticModel) -> Option<&'a Ex func, arguments, range: _, + node_index: _, }) => { if arguments.len() != 1 || !is_set_method(func, semantic) { return None; diff --git a/crates/ruff_linter/src/rules/refurb/rules/slice_copy.rs b/crates/ruff_linter/src/rules/refurb/rules/slice_copy.rs index 3b89ce2ebe..91b7903889 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/slice_copy.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/slice_copy.rs @@ -83,6 +83,7 @@ fn match_list_full_slice<'a>( upper: None, step: None, range: _, + node_index: _, }) ) { return None; diff --git a/crates/ruff_linter/src/rules/refurb/rules/slice_to_remove_prefix_or_suffix.rs b/crates/ruff_linter/src/rules/refurb/rules/slice_to_remove_prefix_or_suffix.rs index 671cfb0fc9..427af68ccf 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/slice_to_remove_prefix_or_suffix.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/slice_to_remove_prefix_or_suffix.rs @@ -145,6 +145,7 @@ fn affix_removal_data_expr(if_expr: &ast::ExprIf) -> Option { body, orelse, range: _, + node_index: _, } = if_expr; let ast::ExprSubscript { value, slice, .. } = body.as_subscript_expr()?; @@ -171,6 +172,7 @@ fn affix_removal_data_stmt(if_stmt: &ast::StmtIf) -> Option { body, elif_else_clauses, range: _, + node_index: _, } = if_stmt; // Cannot safely transform, e.g., @@ -203,6 +205,7 @@ fn affix_removal_data_stmt(if_stmt: &ast::StmtIf) -> Option { value, targets, range: _, + node_index: _, } = statement.as_assign_stmt()?; let [target] = targets.as_slice() else { return None; @@ -325,9 +328,11 @@ fn affix_matches_slice_bound(data: &RemoveAffixData, semantic: &SemanticModel) - ast::Expr::NumberLiteral(ast::ExprNumberLiteral { value: num, range: _, + node_index: _, }), ast::Expr::StringLiteral(ast::ExprStringLiteral { range: _, + node_index: _, value: string_val, }), ) => num @@ -339,6 +344,7 @@ fn affix_matches_slice_bound(data: &RemoveAffixData, semantic: &SemanticModel) - AffixKind::StartsWith, ast::Expr::Call(ast::ExprCall { range: _, + node_index: _, func, arguments, }), @@ -358,9 +364,11 @@ fn affix_matches_slice_bound(data: &RemoveAffixData, semantic: &SemanticModel) - op: ast::UnaryOp::USub, operand, range: _, + node_index: _, }), ast::Expr::StringLiteral(ast::ExprStringLiteral { range: _, + node_index: _, value: string_val, }), ) if operand.is_number_literal_expr() => operand.as_number_literal_expr().is_some_and( @@ -378,11 +386,13 @@ fn affix_matches_slice_bound(data: &RemoveAffixData, semantic: &SemanticModel) - op: ast::UnaryOp::USub, operand, range: _, + node_index: _, }), _, ) => operand.as_call_expr().is_some_and( |ast::ExprCall { range: _, + node_index: _, func, arguments, }| { diff --git a/crates/ruff_linter/src/rules/refurb/rules/unnecessary_enumerate.rs b/crates/ruff_linter/src/rules/refurb/rules/unnecessary_enumerate.rs index 3313fc8c18..db8e3fb1c3 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/unnecessary_enumerate.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/unnecessary_enumerate.rs @@ -232,6 +232,7 @@ fn generate_range_len_call(name: Name, generator: Generator) -> String { id: name, ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // Construct `len(name)`. let len = ast::ExprCall { @@ -240,6 +241,7 @@ fn generate_range_len_call(name: Name, generator: Generator) -> String { id: Name::new_static("len"), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), ), @@ -247,8 +249,10 @@ fn generate_range_len_call(name: Name, generator: Generator) -> String { args: Box::from([var.into()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // Construct `range(len(name))`. let range = ast::ExprCall { @@ -257,6 +261,7 @@ fn generate_range_len_call(name: Name, generator: Generator) -> String { id: Name::new_static("range"), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), ), @@ -264,13 +269,16 @@ fn generate_range_len_call(name: Name, generator: Generator) -> String { args: Box::from([len.into()]), keywords: Box::from([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // And finally, turn it into a statement. let stmt = ast::StmtExpr { value: Box::new(range.into()), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; generator.stmt(&stmt.into()) } diff --git a/crates/ruff_linter/src/rules/refurb/rules/write_whole_file.rs b/crates/ruff_linter/src/rules/refurb/rules/write_whole_file.rs index 705cd25b8f..4e7e9f20d7 100644 --- a/crates/ruff_linter/src/rules/refurb/rules/write_whole_file.rs +++ b/crates/ruff_linter/src/rules/refurb/rules/write_whole_file.rs @@ -148,6 +148,7 @@ fn make_suggestion(open: &FileOpen<'_>, arg: &Expr, generator: Generator) -> Sou id: open.mode.pathlib_method(), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let mut arg = arg.clone(); relocate_expr(&mut arg, TextRange::default()); @@ -157,8 +158,10 @@ fn make_suggestion(open: &FileOpen<'_>, arg: &Expr, generator: Generator) -> Sou args: Box::new([arg]), keywords: open.keywords.iter().copied().cloned().collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; SourceCodeSnippet::from_str(&generator.expr(&call.into())) } diff --git a/crates/ruff_linter/src/rules/ruff/rules/assert_with_print_message.rs b/crates/ruff_linter/src/rules/ruff/rules/assert_with_print_message.rs index 8b3fad38dc..41f72bbdc5 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/assert_with_print_message.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/assert_with_print_message.rs @@ -68,6 +68,7 @@ pub(crate) fn assert_with_print_message(checker: &Checker, stmt: &ast::StmtAsser test: stmt.test.clone(), msg: print_arguments::to_expr(&call.arguments, checker).map(Box::new), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), // We have to replace the entire statement, // as the `print` could be empty and thus `call.range()` @@ -113,6 +114,7 @@ mod print_arguments { InterpolatedStringElement::Literal(InterpolatedStringLiteralElement { value: part.value.clone(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) }) .collect(), @@ -129,6 +131,7 @@ mod print_arguments { conversion: ConversionFlag::None, format_spec: None, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, )], } @@ -151,6 +154,7 @@ mod print_arguments { value: literal.value.clone(), flags, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); Some(acc) } else { @@ -208,6 +212,7 @@ mod print_arguments { value: combined_string.into(), flags, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })) } @@ -241,8 +246,10 @@ mod print_arguments { elements: InterpolatedStringElements::from(fstring_elements), flags, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })) } @@ -278,6 +285,7 @@ mod print_arguments { vec![InterpolatedStringElement::Literal( InterpolatedStringLiteralElement { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), value: " ".into(), }, )] diff --git a/crates/ruff_linter/src/rules/ruff/rules/collection_literal_concatenation.rs b/crates/ruff_linter/src/rules/ruff/rules/collection_literal_concatenation.rs index 566b9e822e..ed18e22a87 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/collection_literal_concatenation.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/collection_literal_concatenation.rs @@ -79,6 +79,7 @@ fn make_splat_elts( value: Box::from(splat_element.clone()), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; let splat = node.into(); if splat_at_left { @@ -102,6 +103,7 @@ fn concatenate_expressions(expr: &Expr, should_support_slices: bool) -> Option<( op: Operator::Add, right, range: _, + node_index: _, }) = expr else { return None; @@ -171,12 +173,14 @@ fn concatenate_expressions(expr: &Expr, should_support_slices: bool) -> Option<( elts: new_elts, ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), } .into(), Type::Tuple => ast::ExprTuple { elts: new_elts, ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, } .into(), diff --git a/crates/ruff_linter/src/rules/ruff/rules/explicit_f_string_type_conversion.rs b/crates/ruff_linter/src/rules/ruff/rules/explicit_f_string_type_conversion.rs index fa88d0b083..0d396bdf50 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/explicit_f_string_type_conversion.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/explicit_f_string_type_conversion.rs @@ -75,6 +75,7 @@ pub(crate) fn explicit_f_string_type_conversion(checker: &Checker, f_string: &as args, keywords, range: _, + node_index: _, }, .. }) = expression.as_ref() diff --git a/crates/ruff_linter/src/rules/ruff/rules/implicit_optional.rs b/crates/ruff_linter/src/rules/ruff/rules/implicit_optional.rs index 7a259f92a0..9cf78e1ddf 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/implicit_optional.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/implicit_optional.rs @@ -133,6 +133,7 @@ fn generate_fix(checker: &Checker, conversion_type: ConversionType, expr: &Expr) op: Operator::BitOr, right: Box::new(Expr::NoneLiteral(ast::ExprNoneLiteral::default())), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); let content = checker.generator().expr(&new_expr); Ok(Fix::unsafe_edit(Edit::range_replacement( @@ -147,10 +148,12 @@ fn generate_fix(checker: &Checker, conversion_type: ConversionType, expr: &Expr) let (import_edit, binding) = importer.import(expr.start())?; let new_expr = Expr::Subscript(ast::ExprSubscript { range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), value: Box::new(Expr::Name(ast::ExprName { id: Name::new(binding), ctx: ast::ExprContext::Store, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })), slice: Box::new(expr.clone()), ctx: ast::ExprContext::Load, diff --git a/crates/ruff_linter/src/rules/ruff/rules/in_empty_collection.rs b/crates/ruff_linter/src/rules/ruff/rules/in_empty_collection.rs index c19dc7bde4..30f4ff8bc7 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/in_empty_collection.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/in_empty_collection.rs @@ -83,6 +83,7 @@ fn is_empty(expr: &Expr, semantic: &SemanticModel) -> bool { func, arguments, range: _, + node_index: _, }) => { if arguments.is_empty() { collection_methods diff --git a/crates/ruff_linter/src/rules/ruff/rules/map_int_version_parsing.rs b/crates/ruff_linter/src/rules/ruff/rules/map_int_version_parsing.rs index 590273f671..4b7fa7e69f 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/map_int_version_parsing.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/map_int_version_parsing.rs @@ -68,8 +68,10 @@ fn map_call_with_two_arguments<'a>( args, keywords, range: _, + node_index: _, }, range: _, + node_index: _, } = call; if !keywords.is_empty() { @@ -100,8 +102,11 @@ fn is_dunder_version_split_dot(expr: &ast::Expr) -> bool { return false; } - let Some(ast::Expr::StringLiteral(ast::ExprStringLiteral { value, range: _ })) = - arguments.find_argument_value("sep", 0) + let Some(ast::Expr::StringLiteral(ast::ExprStringLiteral { + value, + range: _, + node_index: _, + })) = arguments.find_argument_value("sep", 0) else { return false; }; diff --git a/crates/ruff_linter/src/rules/ruff/rules/mutable_fromkeys_value.rs b/crates/ruff_linter/src/rules/ruff/rules/mutable_fromkeys_value.rs index 7ec204fd61..5b60d38c1a 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/mutable_fromkeys_value.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/mutable_fromkeys_value.rs @@ -102,6 +102,7 @@ fn generate_dict_comprehension(keys: &Expr, value: &Expr, generator: Generator) id: Name::new_static("key"), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; // Construct `key in keys`. let comp = ast::Comprehension { @@ -109,6 +110,7 @@ fn generate_dict_comprehension(keys: &Expr, value: &Expr, generator: Generator) iter: keys.clone(), ifs: vec![], range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), is_async: false, }; // Construct the dict comprehension. @@ -117,6 +119,7 @@ fn generate_dict_comprehension(keys: &Expr, value: &Expr, generator: Generator) value: Box::new(value.clone()), generators: vec![comp], range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }; generator.expr(&dict_comp.into()) } diff --git a/crates/ruff_linter/src/rules/ruff/rules/never_union.rs b/crates/ruff_linter/src/rules/ruff/rules/never_union.rs index 34cf80384b..8be1156a0a 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/never_union.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/never_union.rs @@ -74,6 +74,7 @@ pub(crate) fn never_union(checker: &Checker, expr: &Expr) { left, right, range: _, + node_index: _, }) => { // Analyze the left-hand side of the `|` operator. if let Some(never_like) = NeverLike::from_expr(left, checker.semantic()) { @@ -121,6 +122,7 @@ pub(crate) fn never_union(checker: &Checker, expr: &Expr) { slice, ctx: _, range: _, + node_index: _, }) if checker.semantic().match_typing_expr(value, "Union") => { let Expr::Tuple(tuple_slice) = &**slice else { return; @@ -162,10 +164,12 @@ pub(crate) fn never_union(checker: &Checker, expr: &Expr) { elts: rest, ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), parenthesized: true, })), ctx: ast::ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), })) }, expr.range(), diff --git a/crates/ruff_linter/src/rules/ruff/rules/quadratic_list_summation.rs b/crates/ruff_linter/src/rules/ruff/rules/quadratic_list_summation.rs index fef61601fb..4321e004c3 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/quadratic_list_summation.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/quadratic_list_summation.rs @@ -79,6 +79,7 @@ pub(crate) fn quadratic_list_summation(checker: &Checker, call: &ast::ExprCall) func, arguments, range, + node_index: _, } = call; let Some(iterable) = arguments.args.first() else { diff --git a/crates/ruff_linter/src/rules/ruff/rules/sort_dunder_slots.rs b/crates/ruff_linter/src/rules/ruff/rules/sort_dunder_slots.rs index 3ee20c168b..64b7f2b86e 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/sort_dunder_slots.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/sort_dunder_slots.rs @@ -223,7 +223,11 @@ impl<'a> StringLiteralDisplay<'a> { kind, } } - ast::Expr::Set(ast::ExprSet { elts, range }) => { + ast::Expr::Set(ast::ExprSet { + elts, + range, + node_index: _, + }) => { let kind = DisplayKind::Sequence(SequenceKind::Set); Self { elts: Cow::Borrowed(elts), diff --git a/crates/ruff_linter/src/rules/ruff/rules/unnecessary_nested_literal.rs b/crates/ruff_linter/src/rules/ruff/rules/unnecessary_nested_literal.rs index 0dbdc44d86..5e06dd8ad1 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/unnecessary_nested_literal.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/unnecessary_nested_literal.rs @@ -116,12 +116,14 @@ pub(crate) fn unnecessary_nested_literal<'a>(checker: &Checker, literal_expr: &' Expr::Tuple(ExprTuple { elts: nodes.into_iter().cloned().collect(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, parenthesized: false, }) }), value: subscript.value.clone(), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), ctx: ExprContext::Load, }); let fix = Fix::applicable_edit( diff --git a/crates/ruff_linter/src/rules/ruff/rules/unnecessary_regular_expression.rs b/crates/ruff_linter/src/rules/ruff/rules/unnecessary_regular_expression.rs index 619ec3ac04..7656a494fa 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/unnecessary_regular_expression.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/unnecessary_regular_expression.rs @@ -277,6 +277,7 @@ impl<'a> ReFunc<'a> { op: UnaryOp::Not, operand: Box::new(expr), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); Some(negated_expr) } @@ -300,6 +301,7 @@ impl<'a> ReFunc<'a> { ops: Box::new([op]), comparators: Box::new([right.clone()]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) } @@ -311,6 +313,7 @@ impl<'a> ReFunc<'a> { attr: Identifier::new(method, TextRange::default()), ctx: ExprContext::Load, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }); Expr::Call(ExprCall { func: Box::new(method), @@ -318,8 +321,10 @@ impl<'a> ReFunc<'a> { args: args.into_boxed_slice(), keywords: Box::new([]), range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }, range: TextRange::default(), + node_index: ruff_python_ast::AtomicNodeIndex::dummy(), }) } } diff --git a/crates/ruff_linter/src/rules/ruff/rules/zip_instead_of_pairwise.rs b/crates/ruff_linter/src/rules/ruff/rules/zip_instead_of_pairwise.rs index 261ee446c3..2c5396f8b5 100644 --- a/crates/ruff_linter/src/rules/ruff/rules/zip_instead_of_pairwise.rs +++ b/crates/ruff_linter/src/rules/ruff/rules/zip_instead_of_pairwise.rs @@ -94,6 +94,7 @@ fn match_slice_info(expr: &Expr) -> Option { let Expr::NumberLiteral(ast::ExprNumberLiteral { value: ast::Number::Int(int), range: _, + node_index: _, }) = lower.as_ref() else { return None; diff --git a/crates/ruff_linter/src/rules/tryceratops/rules/try_consider_else.rs b/crates/ruff_linter/src/rules/tryceratops/rules/try_consider_else.rs index c27be65d8a..feb5b7eb6c 100644 --- a/crates/ruff_linter/src/rules/tryceratops/rules/try_consider_else.rs +++ b/crates/ruff_linter/src/rules/tryceratops/rules/try_consider_else.rs @@ -67,7 +67,12 @@ pub(crate) fn try_consider_else( ) { if body.len() > 1 && orelse.is_empty() && !handler.is_empty() { if let Some(stmt) = body.last() { - if let Stmt::Return(ast::StmtReturn { value, range: _ }) = stmt { + if let Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) = stmt + { if let Some(value) = value { if contains_effect(value, |id| checker.semantic().has_builtin_binding(id)) { return; diff --git a/crates/ruff_python_ast/generate.py b/crates/ruff_python_ast/generate.py index 981e23fa09..fd62df619e 100644 --- a/crates/ruff_python_ast/generate.py +++ b/crates/ruff_python_ast/generate.py @@ -300,9 +300,11 @@ def write_owned_enum(out: list[str], ast: Ast) -> None: Also creates: - `impl Ranged for TypeParam` + - `impl HasNodeIndex for TypeParam` - `TypeParam::visit_source_order` - `impl From for TypeParam` - `impl Ranged for TypeParamTypeVar` + - `impl HasNodeIndex for TypeParamTypeVar` - `fn TypeParam::is_type_var() -> bool` If the `add_suffix_to_is_methods` group option is true, then the @@ -341,6 +343,19 @@ def write_owned_enum(out: list[str], ast: Ast) -> None: } """) + out.append(f""" + impl crate::HasNodeIndex for {group.owned_enum_ty} {{ + fn node_index(&self) -> &crate::AtomicNodeIndex {{ + match self {{ + """) + for node in group.nodes: + out.append(f"Self::{node.variant}(node) => node.node_index(),") + out.append(""" + } + } + } + """) + out.append( "#[allow(dead_code, clippy::match_wildcard_for_single_variants)]" ) # Not all is_methods are used @@ -437,6 +452,15 @@ def write_owned_enum(out: list[str], ast: Ast) -> None: }} """) + for node in ast.all_nodes: + out.append(f""" + impl crate::HasNodeIndex for {node.ty} {{ + fn node_index(&self) -> &crate::AtomicNodeIndex {{ + &self.node_index + }} + }} + """) + for group in ast.groups: out.append(f""" impl {group.owned_enum_ty} {{ @@ -478,6 +502,7 @@ def write_ref_enum(out: list[str], ast: Ast) -> None: - `impl<'a> From<&'a TypeParam> for TypeParamRef<'a>` - `impl<'a> From<&'a TypeParamTypeVar> for TypeParamRef<'a>` - `impl Ranged for TypeParamRef<'_>` + - `impl HasNodeIndex for TypeParamRef<'_>` - `fn TypeParamRef::is_type_var() -> bool` The name of each variant can be customized via the `variant` node option. If @@ -535,6 +560,19 @@ def write_ref_enum(out: list[str], ast: Ast) -> None: } """) + out.append(f""" + impl crate::HasNodeIndex for {group.ref_enum_ty}<'_> {{ + fn node_index(&self) -> &crate::AtomicNodeIndex {{ + match self {{ + """) + for node in group.nodes: + out.append(f"Self::{node.variant}(node) => node.node_index(),") + out.append(""" + } + } + } + """) + # ------------------------------------------------------------------------------ # AnyNodeRef @@ -558,11 +596,13 @@ def write_anynoderef(out: list[str], ast: Ast) -> None: - `impl<'a> From> for AnyNodeRef<'a>` - `impl<'a> From<&'a TypeParamTypeVarTuple> for AnyNodeRef<'a>` - `impl Ranged for AnyNodeRef<'_>` + - `impl HasNodeIndex for AnyNodeRef<'_>` - `fn AnyNodeRef::as_ptr(&self) -> std::ptr::NonNull<()>` - `fn AnyNodeRef::visit_source_order(self, visitor &mut impl SourceOrderVisitor)` """ out.append(""" + /// A flattened enumeration of all AST nodes. #[derive(Copy, Clone, Debug, is_macro::Is, PartialEq)] pub enum AnyNodeRef<'a> { """) @@ -642,6 +682,19 @@ def write_anynoderef(out: list[str], ast: Ast) -> None: } """) + out.append(""" + impl crate::HasNodeIndex for AnyNodeRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + """) + for node in ast.all_nodes: + out.append(f"""AnyNodeRef::{node.name}(node) => node.node_index(),""") + out.append(""" + } + } + } + """) + out.append(""" impl AnyNodeRef<'_> { pub fn as_ptr(&self) -> std::ptr::NonNull<()> { @@ -693,6 +746,161 @@ def write_anynoderef(out: list[str], ast: Ast) -> None: """) +# ------------------------------------------------------------------------------ +# AnyRootNodeRef + + +def write_root_anynoderef(out: list[str], ast: Ast) -> None: + """ + Create the AnyRootNodeRef type. + + ```rust + pub enum AnyRootNodeRef<'a> { + ... + TypeParam(&'a TypeParam), + ... + } + ``` + + Also creates: + - `impl<'a> From<&'a TypeParam> for AnyRootNodeRef<'a>` + - `impl<'a> TryFrom> for &'a TypeParam` + - `impl<'a> TryFrom> for &'a TypeParamVarTuple` + - `impl Ranged for AnyRootNodeRef<'_>` + - `impl HasNodeIndex for AnyRootNodeRef<'_>` + - `fn AnyRootNodeRef::visit_source_order(self, visitor &mut impl SourceOrderVisitor)` + """ + + out.append(""" + /// An enumeration of all AST nodes. + /// + /// Unlike `AnyNodeRef`, this type does not flatten nested enums, so its variants only + /// consist of the "root" AST node types. This is useful as it exposes references to the + /// original enums, not just references to their inner values. + /// + /// For example, `AnyRootNodeRef::Mod` contains a reference to the `Mod` enum, while + /// `AnyNodeRef` has top-level `AnyNodeRef::ModModule` and `AnyNodeRef::ModExpression` + /// variants. + #[derive(Copy, Clone, Debug, PartialEq)] + pub enum AnyRootNodeRef<'a> { + """) + for group in ast.groups: + out.append(f"""{group.name}(&'a {group.owned_enum_ty}),""") + for node in ast.ungrouped_nodes: + out.append(f"""{node.name}(&'a {node.ty}),""") + out.append(""" + } + """) + + for group in ast.groups: + out.append(f""" + impl<'a> From<&'a {group.owned_enum_ty}> for AnyRootNodeRef<'a> {{ + fn from(node: &'a {group.owned_enum_ty}) -> AnyRootNodeRef<'a> {{ + AnyRootNodeRef::{group.name}(node) + }} + }} + """) + + out.append(f""" + impl<'a> TryFrom> for &'a {group.owned_enum_ty} {{ + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a {group.owned_enum_ty}, ()> {{ + match node {{ + AnyRootNodeRef::{group.name}(node) => Ok(node), + _ => Err(()) + }} + }} + }} + """) + + for node in group.nodes: + out.append(f""" + impl<'a> TryFrom> for &'a {node.ty} {{ + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a {node.ty}, ()> {{ + match node {{ + AnyRootNodeRef::{group.name}({group.owned_enum_ty}::{node.variant}(node)) => Ok(node), + _ => Err(()) + }} + }} + }} + """) + + for node in ast.ungrouped_nodes: + out.append(f""" + impl<'a> From<&'a {node.ty}> for AnyRootNodeRef<'a> {{ + fn from(node: &'a {node.ty}) -> AnyRootNodeRef<'a> {{ + AnyRootNodeRef::{node.name}(node) + }} + }} + """) + + out.append(f""" + impl<'a> TryFrom> for &'a {node.ty} {{ + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a {node.ty}, ()> {{ + match node {{ + AnyRootNodeRef::{node.name}(node) => Ok(node), + _ => Err(()) + }} + }} + }} + """) + + out.append(""" + impl ruff_text_size::Ranged for AnyRootNodeRef<'_> { + fn range(&self) -> ruff_text_size::TextRange { + match self { + """) + for group in ast.groups: + out.append(f"""AnyRootNodeRef::{group.name}(node) => node.range(),""") + for node in ast.ungrouped_nodes: + out.append(f"""AnyRootNodeRef::{node.name}(node) => node.range(),""") + out.append(""" + } + } + } + """) + + out.append(""" + impl crate::HasNodeIndex for AnyRootNodeRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + """) + for group in ast.groups: + out.append(f"""AnyRootNodeRef::{group.name}(node) => node.node_index(),""") + for node in ast.ungrouped_nodes: + out.append(f"""AnyRootNodeRef::{node.name}(node) => node.node_index(),""") + out.append(""" + } + } + } + """) + + out.append(""" + impl<'a> AnyRootNodeRef<'a> { + pub fn visit_source_order<'b, V>(self, visitor: &mut V) + where + V: crate::visitor::source_order::SourceOrderVisitor<'b> + ?Sized, + 'a: 'b, + { + match self { + """) + for group in ast.groups: + out.append( + f"""AnyRootNodeRef::{group.name}(node) => node.visit_source_order(visitor),""" + ) + for node in ast.ungrouped_nodes: + out.append( + f"""AnyRootNodeRef::{node.name}(node) => node.visit_source_order(visitor),""" + ) + out.append(""" + } + } + } + """) + + # ------------------------------------------------------------------------------ # NodeKind @@ -757,6 +965,7 @@ def write_node(out: list[str], ast: Ast) -> None: ) name = node.name out.append(f"pub struct {name} {{") + out.append("pub node_index: crate::AtomicNodeIndex,") out.append("pub range: ruff_text_size::TextRange,") for field in node.fields: field_str = f"pub {field.name}: " @@ -800,6 +1009,7 @@ def write_source_order(out: list[str], ast: Ast) -> None: else: fields_list += f"{field.name},\n" fields_list += "range: _,\n" + fields_list += "node_index: _,\n" for field in node.fields_in_source_order(): visitor_name = ( @@ -859,6 +1069,7 @@ def generate(ast: Ast) -> list[str]: write_owned_enum(out, ast) write_ref_enum(out, ast) write_anynoderef(out, ast) + write_root_anynoderef(out, ast) write_nodekind(out, ast) write_node(out, ast) write_source_order(out, ast) diff --git a/crates/ruff_python_ast/src/comparable.rs b/crates/ruff_python_ast/src/comparable.rs index a759ef208a..170e20ebc7 100644 --- a/crates/ruff_python_ast/src/comparable.rs +++ b/crates/ruff_python_ast/src/comparable.rs @@ -547,6 +547,7 @@ impl<'a> From<&'a ast::InterpolatedElement> for InterpolatedElement<'a> { conversion, format_spec, range: _, + node_index: _, } = interpolated_element; Self { @@ -576,6 +577,7 @@ impl<'a> From<&'a ast::ElifElseClause> for ComparableElifElseClause<'a> { fn from(elif_else_clause: &'a ast::ElifElseClause) -> Self { let ast::ElifElseClause { range: _, + node_index: _, test, body, } = elif_else_clause; @@ -1109,6 +1111,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { op, values, range: _, + node_index: _, }) => Self::BoolOp(ExprBoolOp { op: (*op).into(), values: values.iter().map(Into::into).collect(), @@ -1117,6 +1120,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { target, value, range: _, + node_index: _, }) => Self::NamedExpr(ExprNamed { target: target.into(), value: value.into(), @@ -1126,6 +1130,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { op, right, range: _, + node_index: _, }) => Self::BinOp(ExprBinOp { left: left.into(), op: (*op).into(), @@ -1135,6 +1140,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { op, operand, range: _, + node_index: _, }) => Self::UnaryOp(ExprUnaryOp { op: (*op).into(), operand: operand.into(), @@ -1143,6 +1149,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { parameters, body, range: _, + node_index: _, }) => Self::Lambda(ExprLambda { parameters: parameters.as_ref().map(Into::into), body: body.into(), @@ -1152,21 +1159,31 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { body, orelse, range: _, + node_index: _, }) => Self::IfExp(ExprIf { test: test.into(), body: body.into(), orelse: orelse.into(), }), - ast::Expr::Dict(ast::ExprDict { items, range: _ }) => Self::Dict(ExprDict { + ast::Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) => Self::Dict(ExprDict { items: items.iter().map(ComparableDictItem::from).collect(), }), - ast::Expr::Set(ast::ExprSet { elts, range: _ }) => Self::Set(ExprSet { + ast::Expr::Set(ast::ExprSet { + elts, + range: _, + node_index: _, + }) => Self::Set(ExprSet { elts: elts.iter().map(Into::into).collect(), }), ast::Expr::ListComp(ast::ExprListComp { elt, generators, range: _, + node_index: _, }) => Self::ListComp(ExprListComp { elt: elt.into(), generators: generators.iter().map(Into::into).collect(), @@ -1175,6 +1192,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { elt, generators, range: _, + node_index: _, }) => Self::SetComp(ExprSetComp { elt: elt.into(), generators: generators.iter().map(Into::into).collect(), @@ -1184,6 +1202,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { value, generators, range: _, + node_index: _, }) => Self::DictComp(ExprDictComp { key: key.into(), value: value.into(), @@ -1193,27 +1212,39 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { elt, generators, range: _, + node_index: _, parenthesized: _, }) => Self::GeneratorExp(ExprGenerator { elt: elt.into(), generators: generators.iter().map(Into::into).collect(), }), - ast::Expr::Await(ast::ExprAwait { value, range: _ }) => Self::Await(ExprAwait { + ast::Expr::Await(ast::ExprAwait { + value, + range: _, + node_index: _, + }) => Self::Await(ExprAwait { value: value.into(), }), - ast::Expr::Yield(ast::ExprYield { value, range: _ }) => Self::Yield(ExprYield { + ast::Expr::Yield(ast::ExprYield { + value, + range: _, + node_index: _, + }) => Self::Yield(ExprYield { value: value.as_ref().map(Into::into), }), - ast::Expr::YieldFrom(ast::ExprYieldFrom { value, range: _ }) => { - Self::YieldFrom(ExprYieldFrom { - value: value.into(), - }) - } + ast::Expr::YieldFrom(ast::ExprYieldFrom { + value, + range: _, + node_index: _, + }) => Self::YieldFrom(ExprYieldFrom { + value: value.into(), + }), ast::Expr::Compare(ast::ExprCompare { left, ops, comparators, range: _, + node_index: _, }) => Self::Compare(ExprCompare { left: left.into(), ops: ops.iter().copied().map(Into::into).collect(), @@ -1223,42 +1254,55 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { func, arguments, range: _, + node_index: _, }) => Self::Call(ExprCall { func: func.into(), arguments: arguments.into(), }), - ast::Expr::FString(ast::ExprFString { value, range: _ }) => { - Self::FString(ExprFString { - value: value.into(), - }) - } - ast::Expr::TString(ast::ExprTString { value, range: _ }) => { - Self::TString(ExprTString { - value: value.into(), - }) - } - ast::Expr::StringLiteral(ast::ExprStringLiteral { value, range: _ }) => { - Self::StringLiteral(ExprStringLiteral { - value: ComparableStringLiteral { - value: value.to_str(), - }, - }) - } - ast::Expr::BytesLiteral(ast::ExprBytesLiteral { value, range: _ }) => { - Self::BytesLiteral(ExprBytesLiteral { - value: ComparableBytesLiteral { - value: Cow::from(value), - }, - }) - } - ast::Expr::NumberLiteral(ast::ExprNumberLiteral { value, range: _ }) => { - Self::NumberLiteral(ExprNumberLiteral { - value: value.into(), - }) - } - ast::Expr::BooleanLiteral(ast::ExprBooleanLiteral { value, range: _ }) => { - Self::BoolLiteral(ExprBoolLiteral { value: *value }) - } + ast::Expr::FString(ast::ExprFString { + value, + range: _, + node_index: _, + }) => Self::FString(ExprFString { + value: value.into(), + }), + ast::Expr::TString(ast::ExprTString { + value, + range: _, + node_index: _, + }) => Self::TString(ExprTString { + value: value.into(), + }), + ast::Expr::StringLiteral(ast::ExprStringLiteral { + value, + range: _, + node_index: _, + }) => Self::StringLiteral(ExprStringLiteral { + value: ComparableStringLiteral { + value: value.to_str(), + }, + }), + ast::Expr::BytesLiteral(ast::ExprBytesLiteral { + value, + range: _, + node_index: _, + }) => Self::BytesLiteral(ExprBytesLiteral { + value: ComparableBytesLiteral { + value: Cow::from(value), + }, + }), + ast::Expr::NumberLiteral(ast::ExprNumberLiteral { + value, + range: _, + node_index: _, + }) => Self::NumberLiteral(ExprNumberLiteral { + value: value.into(), + }), + ast::Expr::BooleanLiteral(ast::ExprBooleanLiteral { + value, + range: _, + node_index: _, + }) => Self::BoolLiteral(ExprBoolLiteral { value: *value }), ast::Expr::NoneLiteral(_) => Self::NoneLiteral, ast::Expr::EllipsisLiteral(_) => Self::EllipsisLiteral, ast::Expr::Attribute(ast::ExprAttribute { @@ -1266,6 +1310,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { attr, ctx: _, range: _, + node_index: _, }) => Self::Attribute(ExprAttribute { value: value.into(), attr: attr.as_str(), @@ -1275,6 +1320,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { slice, ctx: _, range: _, + node_index: _, }) => Self::Subscript(ExprSubscript { value: value.into(), slice: slice.into(), @@ -1283,6 +1329,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { value, ctx: _, range: _, + node_index: _, }) => Self::Starred(ExprStarred { value: value.into(), }), @@ -1291,6 +1338,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { elts, ctx: _, range: _, + node_index: _, }) => Self::List(ExprList { elts: elts.iter().map(Into::into).collect(), }), @@ -1298,6 +1346,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { elts, ctx: _, range: _, + node_index: _, parenthesized: _, }) => Self::Tuple(ExprTuple { elts: elts.iter().map(Into::into).collect(), @@ -1307,6 +1356,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { upper, step, range: _, + node_index: _, }) => Self::Slice(ExprSlice { lower: lower.as_ref().map(Into::into), upper: upper.as_ref().map(Into::into), @@ -1316,6 +1366,7 @@ impl<'a> From<&'a ast::Expr> for ComparableExpr<'a> { kind, value, range: _, + node_index: _, }) => Self::IpyEscapeCommand(ExprIpyEscapeCommand { kind: *kind, value }), } } @@ -1400,6 +1451,7 @@ impl<'a> From<&'a ast::TypeParam> for ComparableTypeParam<'a> { bound, default, range: _, + node_index: _, }) => Self::TypeVar(TypeParamTypeVar { name: name.as_str(), bound: bound.as_ref().map(Into::into), @@ -1409,6 +1461,7 @@ impl<'a> From<&'a ast::TypeParam> for ComparableTypeParam<'a> { name, default, range: _, + node_index: _, }) => Self::TypeVarTuple(TypeParamTypeVarTuple { name: name.as_str(), default: default.as_ref().map(Into::into), @@ -1417,6 +1470,7 @@ impl<'a> From<&'a ast::TypeParam> for ComparableTypeParam<'a> { name, default, range: _, + node_index: _, }) => Self::ParamSpec(TypeParamParamSpec { name: name.as_str(), default: default.as_ref().map(Into::into), @@ -1596,6 +1650,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { returns, type_params, range: _, + node_index: _, }) => Self::FunctionDef(StmtFunctionDef { is_async: *is_async, name: name.as_str(), @@ -1612,6 +1667,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { decorator_list, type_params, range: _, + node_index: _, }) => Self::ClassDef(StmtClassDef { name: name.as_str(), arguments: arguments.as_ref().map(Into::into).unwrap_or_default(), @@ -1619,14 +1675,23 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { decorator_list: decorator_list.iter().map(Into::into).collect(), type_params: type_params.as_ref().map(Into::into), }), - ast::Stmt::Return(ast::StmtReturn { value, range: _ }) => Self::Return(StmtReturn { + ast::Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) => Self::Return(StmtReturn { value: value.as_ref().map(Into::into), }), - ast::Stmt::Delete(ast::StmtDelete { targets, range: _ }) => Self::Delete(StmtDelete { + ast::Stmt::Delete(ast::StmtDelete { + targets, + range: _, + node_index: _, + }) => Self::Delete(StmtDelete { targets: targets.iter().map(Into::into).collect(), }), ast::Stmt::TypeAlias(ast::StmtTypeAlias { range: _, + node_index: _, name, type_params, value, @@ -1639,6 +1704,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { targets, value, range: _, + node_index: _, }) => Self::Assign(StmtAssign { targets: targets.iter().map(Into::into).collect(), value: value.into(), @@ -1648,6 +1714,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { op, value, range: _, + node_index: _, }) => Self::AugAssign(StmtAugAssign { target: target.into(), op: (*op).into(), @@ -1659,6 +1726,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { value, simple, range: _, + node_index: _, }) => Self::AnnAssign(StmtAnnAssign { target: target.into(), annotation: annotation.into(), @@ -1672,6 +1740,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { body, orelse, range: _, + node_index: _, }) => Self::For(StmtFor { is_async: *is_async, target: target.into(), @@ -1684,6 +1753,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { body, orelse, range: _, + node_index: _, }) => Self::While(StmtWhile { test: test.into(), body: body.iter().map(Into::into).collect(), @@ -1694,6 +1764,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { body, elif_else_clauses, range: _, + node_index: _, }) => Self::If(StmtIf { test: test.into(), body: body.iter().map(Into::into).collect(), @@ -1704,6 +1775,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { items, body, range: _, + node_index: _, }) => Self::With(StmtWith { is_async: *is_async, items: items.iter().map(Into::into).collect(), @@ -1713,6 +1785,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { subject, cases, range: _, + node_index: _, }) => Self::Match(StmtMatch { subject: subject.into(), cases: cases.iter().map(Into::into).collect(), @@ -1721,6 +1794,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { exc, cause, range: _, + node_index: _, }) => Self::Raise(StmtRaise { exc: exc.as_ref().map(Into::into), cause: cause.as_ref().map(Into::into), @@ -1732,6 +1806,7 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { finalbody, is_star, range: _, + node_index: _, }) => Self::Try(StmtTry { body: body.iter().map(Into::into).collect(), handlers: handlers.iter().map(Into::into).collect(), @@ -1743,11 +1818,16 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { test, msg, range: _, + node_index: _, }) => Self::Assert(StmtAssert { test: test.into(), msg: msg.as_ref().map(Into::into), }), - ast::Stmt::Import(ast::StmtImport { names, range: _ }) => Self::Import(StmtImport { + ast::Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => Self::Import(StmtImport { names: names.iter().map(Into::into).collect(), }), ast::Stmt::ImportFrom(ast::StmtImportFrom { @@ -1755,25 +1835,37 @@ impl<'a> From<&'a ast::Stmt> for ComparableStmt<'a> { names, level, range: _, + node_index: _, }) => Self::ImportFrom(StmtImportFrom { module: module.as_deref(), names: names.iter().map(Into::into).collect(), level: *level, }), - ast::Stmt::Global(ast::StmtGlobal { names, range: _ }) => Self::Global(StmtGlobal { + ast::Stmt::Global(ast::StmtGlobal { + names, + range: _, + node_index: _, + }) => Self::Global(StmtGlobal { + names: names.iter().map(ast::Identifier::as_str).collect(), + }), + ast::Stmt::Nonlocal(ast::StmtNonlocal { + names, + range: _, + node_index: _, + }) => Self::Nonlocal(StmtNonlocal { names: names.iter().map(ast::Identifier::as_str).collect(), }), - ast::Stmt::Nonlocal(ast::StmtNonlocal { names, range: _ }) => { - Self::Nonlocal(StmtNonlocal { - names: names.iter().map(ast::Identifier::as_str).collect(), - }) - } ast::Stmt::IpyEscapeCommand(ast::StmtIpyEscapeCommand { kind, value, range: _, + node_index: _, }) => Self::IpyEscapeCommand(StmtIpyEscapeCommand { kind: *kind, value }), - ast::Stmt::Expr(ast::StmtExpr { value, range: _ }) => Self::Expr(StmtExpr { + ast::Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) => Self::Expr(StmtExpr { value: value.into(), }), ast::Stmt::Pass(_) => Self::Pass, diff --git a/crates/ruff_python_ast/src/generated.rs b/crates/ruff_python_ast/src/generated.rs index 7fd7db5072..cedf608921 100644 --- a/crates/ruff_python_ast/src/generated.rs +++ b/crates/ruff_python_ast/src/generated.rs @@ -32,6 +32,15 @@ impl ruff_text_size::Ranged for Mod { } } +impl crate::HasNodeIndex for Mod { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::Module(node) => node.node_index(), + Self::Expression(node) => node.node_index(), + } + } +} + #[allow(dead_code, clippy::match_wildcard_for_single_variants)] impl Mod { #[inline] @@ -321,6 +330,38 @@ impl ruff_text_size::Ranged for Stmt { } } +impl crate::HasNodeIndex for Stmt { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::FunctionDef(node) => node.node_index(), + Self::ClassDef(node) => node.node_index(), + Self::Return(node) => node.node_index(), + Self::Delete(node) => node.node_index(), + Self::TypeAlias(node) => node.node_index(), + Self::Assign(node) => node.node_index(), + Self::AugAssign(node) => node.node_index(), + Self::AnnAssign(node) => node.node_index(), + Self::For(node) => node.node_index(), + Self::While(node) => node.node_index(), + Self::If(node) => node.node_index(), + Self::With(node) => node.node_index(), + Self::Match(node) => node.node_index(), + Self::Raise(node) => node.node_index(), + Self::Try(node) => node.node_index(), + Self::Assert(node) => node.node_index(), + Self::Import(node) => node.node_index(), + Self::ImportFrom(node) => node.node_index(), + Self::Global(node) => node.node_index(), + Self::Nonlocal(node) => node.node_index(), + Self::Expr(node) => node.node_index(), + Self::Pass(node) => node.node_index(), + Self::Break(node) => node.node_index(), + Self::Continue(node) => node.node_index(), + Self::IpyEscapeCommand(node) => node.node_index(), + } + } +} + #[allow(dead_code, clippy::match_wildcard_for_single_variants)] impl Stmt { #[inline] @@ -1525,6 +1566,46 @@ impl ruff_text_size::Ranged for Expr { } } +impl crate::HasNodeIndex for Expr { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::BoolOp(node) => node.node_index(), + Self::Named(node) => node.node_index(), + Self::BinOp(node) => node.node_index(), + Self::UnaryOp(node) => node.node_index(), + Self::Lambda(node) => node.node_index(), + Self::If(node) => node.node_index(), + Self::Dict(node) => node.node_index(), + Self::Set(node) => node.node_index(), + Self::ListComp(node) => node.node_index(), + Self::SetComp(node) => node.node_index(), + Self::DictComp(node) => node.node_index(), + Self::Generator(node) => node.node_index(), + Self::Await(node) => node.node_index(), + Self::Yield(node) => node.node_index(), + Self::YieldFrom(node) => node.node_index(), + Self::Compare(node) => node.node_index(), + Self::Call(node) => node.node_index(), + Self::FString(node) => node.node_index(), + Self::TString(node) => node.node_index(), + Self::StringLiteral(node) => node.node_index(), + Self::BytesLiteral(node) => node.node_index(), + Self::NumberLiteral(node) => node.node_index(), + Self::BooleanLiteral(node) => node.node_index(), + Self::NoneLiteral(node) => node.node_index(), + Self::EllipsisLiteral(node) => node.node_index(), + Self::Attribute(node) => node.node_index(), + Self::Subscript(node) => node.node_index(), + Self::Starred(node) => node.node_index(), + Self::Name(node) => node.node_index(), + Self::List(node) => node.node_index(), + Self::Tuple(node) => node.node_index(), + Self::Slice(node) => node.node_index(), + Self::IpyEscapeCommand(node) => node.node_index(), + } + } +} + #[allow(dead_code, clippy::match_wildcard_for_single_variants)] impl Expr { #[inline] @@ -2769,6 +2850,14 @@ impl ruff_text_size::Ranged for ExceptHandler { } } +impl crate::HasNodeIndex for ExceptHandler { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::ExceptHandler(node) => node.node_index(), + } + } +} + #[allow(dead_code, clippy::match_wildcard_for_single_variants)] impl ExceptHandler { #[inline] @@ -2832,6 +2921,15 @@ impl ruff_text_size::Ranged for InterpolatedStringElement { } } +impl crate::HasNodeIndex for InterpolatedStringElement { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::Interpolation(node) => node.node_index(), + Self::Literal(node) => node.node_index(), + } + } +} + #[allow(dead_code, clippy::match_wildcard_for_single_variants)] impl InterpolatedStringElement { #[inline] @@ -2985,6 +3083,21 @@ impl ruff_text_size::Ranged for Pattern { } } +impl crate::HasNodeIndex for Pattern { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::MatchValue(node) => node.node_index(), + Self::MatchSingleton(node) => node.node_index(), + Self::MatchSequence(node) => node.node_index(), + Self::MatchMapping(node) => node.node_index(), + Self::MatchClass(node) => node.node_index(), + Self::MatchStar(node) => node.node_index(), + Self::MatchAs(node) => node.node_index(), + Self::MatchOr(node) => node.node_index(), + } + } +} + #[allow(dead_code, clippy::match_wildcard_for_single_variants)] impl Pattern { #[inline] @@ -3320,6 +3433,16 @@ impl ruff_text_size::Ranged for TypeParam { } } +impl crate::HasNodeIndex for TypeParam { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::TypeVar(node) => node.node_index(), + Self::TypeVarTuple(node) => node.node_index(), + Self::ParamSpec(node) => node.node_index(), + } + } +} + #[allow(dead_code, clippy::match_wildcard_for_single_variants)] impl TypeParam { #[inline] @@ -3998,6 +4121,570 @@ impl ruff_text_size::Ranged for crate::Identifier { } } +impl crate::HasNodeIndex for crate::ModModule { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ModExpression { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtFunctionDef { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtClassDef { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtReturn { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtDelete { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtTypeAlias { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtAssign { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtAugAssign { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtAnnAssign { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtFor { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtWhile { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtIf { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtWith { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtMatch { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtRaise { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtTry { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtAssert { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtImport { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtImportFrom { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtGlobal { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtNonlocal { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtExpr { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtPass { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtBreak { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtContinue { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StmtIpyEscapeCommand { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprBoolOp { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprNamed { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprBinOp { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprUnaryOp { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprLambda { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprIf { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprDict { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprSet { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprListComp { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprSetComp { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprDictComp { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprGenerator { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprAwait { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprYield { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprYieldFrom { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprCompare { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprCall { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprFString { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprTString { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprStringLiteral { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprBytesLiteral { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprNumberLiteral { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprBooleanLiteral { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprNoneLiteral { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprEllipsisLiteral { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprAttribute { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprSubscript { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprStarred { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprName { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprList { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprTuple { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprSlice { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExprIpyEscapeCommand { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ExceptHandlerExceptHandler { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::InterpolatedElement { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::InterpolatedStringLiteralElement { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternMatchValue { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternMatchSingleton { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternMatchSequence { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternMatchMapping { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternMatchClass { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternMatchStar { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternMatchAs { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternMatchOr { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::TypeParamTypeVar { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::TypeParamTypeVarTuple { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::TypeParamParamSpec { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::InterpolatedStringFormatSpec { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternArguments { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::PatternKeyword { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::Comprehension { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::Arguments { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::Parameters { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::Parameter { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ParameterWithDefault { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::Keyword { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::Alias { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::WithItem { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::MatchCase { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::Decorator { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::ElifElseClause { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::TypeParams { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::FString { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::TString { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::StringLiteral { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::BytesLiteral { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + +impl crate::HasNodeIndex for crate::Identifier { + fn node_index(&self) -> &crate::AtomicNodeIndex { + &self.node_index + } +} + impl Mod { #[allow(unused)] pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V) @@ -4186,6 +4873,15 @@ impl ruff_text_size::Ranged for ModRef<'_> { } } +impl crate::HasNodeIndex for ModRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::Module(node) => node.node_index(), + Self::Expression(node) => node.node_index(), + } + } +} + /// See also [stmt](https://docs.python.org/3/library/ast.html#ast.stmt) #[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)] pub enum StmtRef<'a> { @@ -4455,6 +5151,38 @@ impl ruff_text_size::Ranged for StmtRef<'_> { } } +impl crate::HasNodeIndex for StmtRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::FunctionDef(node) => node.node_index(), + Self::ClassDef(node) => node.node_index(), + Self::Return(node) => node.node_index(), + Self::Delete(node) => node.node_index(), + Self::TypeAlias(node) => node.node_index(), + Self::Assign(node) => node.node_index(), + Self::AugAssign(node) => node.node_index(), + Self::AnnAssign(node) => node.node_index(), + Self::For(node) => node.node_index(), + Self::While(node) => node.node_index(), + Self::If(node) => node.node_index(), + Self::With(node) => node.node_index(), + Self::Match(node) => node.node_index(), + Self::Raise(node) => node.node_index(), + Self::Try(node) => node.node_index(), + Self::Assert(node) => node.node_index(), + Self::Import(node) => node.node_index(), + Self::ImportFrom(node) => node.node_index(), + Self::Global(node) => node.node_index(), + Self::Nonlocal(node) => node.node_index(), + Self::Expr(node) => node.node_index(), + Self::Pass(node) => node.node_index(), + Self::Break(node) => node.node_index(), + Self::Continue(node) => node.node_index(), + Self::IpyEscapeCommand(node) => node.node_index(), + } + } +} + /// See also [expr](https://docs.python.org/3/library/ast.html#ast.expr) #[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)] pub enum ExprRef<'a> { @@ -4804,6 +5532,46 @@ impl ruff_text_size::Ranged for ExprRef<'_> { } } +impl crate::HasNodeIndex for ExprRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::BoolOp(node) => node.node_index(), + Self::Named(node) => node.node_index(), + Self::BinOp(node) => node.node_index(), + Self::UnaryOp(node) => node.node_index(), + Self::Lambda(node) => node.node_index(), + Self::If(node) => node.node_index(), + Self::Dict(node) => node.node_index(), + Self::Set(node) => node.node_index(), + Self::ListComp(node) => node.node_index(), + Self::SetComp(node) => node.node_index(), + Self::DictComp(node) => node.node_index(), + Self::Generator(node) => node.node_index(), + Self::Await(node) => node.node_index(), + Self::Yield(node) => node.node_index(), + Self::YieldFrom(node) => node.node_index(), + Self::Compare(node) => node.node_index(), + Self::Call(node) => node.node_index(), + Self::FString(node) => node.node_index(), + Self::TString(node) => node.node_index(), + Self::StringLiteral(node) => node.node_index(), + Self::BytesLiteral(node) => node.node_index(), + Self::NumberLiteral(node) => node.node_index(), + Self::BooleanLiteral(node) => node.node_index(), + Self::NoneLiteral(node) => node.node_index(), + Self::EllipsisLiteral(node) => node.node_index(), + Self::Attribute(node) => node.node_index(), + Self::Subscript(node) => node.node_index(), + Self::Starred(node) => node.node_index(), + Self::Name(node) => node.node_index(), + Self::List(node) => node.node_index(), + Self::Tuple(node) => node.node_index(), + Self::Slice(node) => node.node_index(), + Self::IpyEscapeCommand(node) => node.node_index(), + } + } +} + /// See also [excepthandler](https://docs.python.org/3/library/ast.html#ast.excepthandler) #[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)] pub enum ExceptHandlerRef<'a> { @@ -4832,6 +5600,14 @@ impl ruff_text_size::Ranged for ExceptHandlerRef<'_> { } } +impl crate::HasNodeIndex for ExceptHandlerRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::ExceptHandler(node) => node.node_index(), + } + } +} + #[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)] pub enum InterpolatedStringElementRef<'a> { Interpolation(&'a crate::InterpolatedElement), @@ -4870,6 +5646,15 @@ impl ruff_text_size::Ranged for InterpolatedStringElementRef<'_> { } } +impl crate::HasNodeIndex for InterpolatedStringElementRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::Interpolation(node) => node.node_index(), + Self::Literal(node) => node.node_index(), + } + } +} + /// See also [pattern](https://docs.python.org/3/library/ast.html#ast.pattern) #[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)] pub enum PatternRef<'a> { @@ -4961,6 +5746,21 @@ impl ruff_text_size::Ranged for PatternRef<'_> { } } +impl crate::HasNodeIndex for PatternRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::MatchValue(node) => node.node_index(), + Self::MatchSingleton(node) => node.node_index(), + Self::MatchSequence(node) => node.node_index(), + Self::MatchMapping(node) => node.node_index(), + Self::MatchClass(node) => node.node_index(), + Self::MatchStar(node) => node.node_index(), + Self::MatchAs(node) => node.node_index(), + Self::MatchOr(node) => node.node_index(), + } + } +} + /// See also [type_param](https://docs.python.org/3/library/ast.html#ast.type_param) #[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)] pub enum TypeParamRef<'a> { @@ -5007,6 +5807,17 @@ impl ruff_text_size::Ranged for TypeParamRef<'_> { } } +impl crate::HasNodeIndex for TypeParamRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + Self::TypeVar(node) => node.node_index(), + Self::TypeVarTuple(node) => node.node_index(), + Self::ParamSpec(node) => node.node_index(), + } + } +} + +/// A flattened enumeration of all AST nodes. #[derive(Copy, Clone, Debug, is_macro::Is, PartialEq)] pub enum AnyNodeRef<'a> { ModModule(&'a crate::ModModule), @@ -6163,6 +6974,107 @@ impl ruff_text_size::Ranged for AnyNodeRef<'_> { } } +impl crate::HasNodeIndex for AnyNodeRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + AnyNodeRef::ModModule(node) => node.node_index(), + AnyNodeRef::ModExpression(node) => node.node_index(), + AnyNodeRef::StmtFunctionDef(node) => node.node_index(), + AnyNodeRef::StmtClassDef(node) => node.node_index(), + AnyNodeRef::StmtReturn(node) => node.node_index(), + AnyNodeRef::StmtDelete(node) => node.node_index(), + AnyNodeRef::StmtTypeAlias(node) => node.node_index(), + AnyNodeRef::StmtAssign(node) => node.node_index(), + AnyNodeRef::StmtAugAssign(node) => node.node_index(), + AnyNodeRef::StmtAnnAssign(node) => node.node_index(), + AnyNodeRef::StmtFor(node) => node.node_index(), + AnyNodeRef::StmtWhile(node) => node.node_index(), + AnyNodeRef::StmtIf(node) => node.node_index(), + AnyNodeRef::StmtWith(node) => node.node_index(), + AnyNodeRef::StmtMatch(node) => node.node_index(), + AnyNodeRef::StmtRaise(node) => node.node_index(), + AnyNodeRef::StmtTry(node) => node.node_index(), + AnyNodeRef::StmtAssert(node) => node.node_index(), + AnyNodeRef::StmtImport(node) => node.node_index(), + AnyNodeRef::StmtImportFrom(node) => node.node_index(), + AnyNodeRef::StmtGlobal(node) => node.node_index(), + AnyNodeRef::StmtNonlocal(node) => node.node_index(), + AnyNodeRef::StmtExpr(node) => node.node_index(), + AnyNodeRef::StmtPass(node) => node.node_index(), + AnyNodeRef::StmtBreak(node) => node.node_index(), + AnyNodeRef::StmtContinue(node) => node.node_index(), + AnyNodeRef::StmtIpyEscapeCommand(node) => node.node_index(), + AnyNodeRef::ExprBoolOp(node) => node.node_index(), + AnyNodeRef::ExprNamed(node) => node.node_index(), + AnyNodeRef::ExprBinOp(node) => node.node_index(), + AnyNodeRef::ExprUnaryOp(node) => node.node_index(), + AnyNodeRef::ExprLambda(node) => node.node_index(), + AnyNodeRef::ExprIf(node) => node.node_index(), + AnyNodeRef::ExprDict(node) => node.node_index(), + AnyNodeRef::ExprSet(node) => node.node_index(), + AnyNodeRef::ExprListComp(node) => node.node_index(), + AnyNodeRef::ExprSetComp(node) => node.node_index(), + AnyNodeRef::ExprDictComp(node) => node.node_index(), + AnyNodeRef::ExprGenerator(node) => node.node_index(), + AnyNodeRef::ExprAwait(node) => node.node_index(), + AnyNodeRef::ExprYield(node) => node.node_index(), + AnyNodeRef::ExprYieldFrom(node) => node.node_index(), + AnyNodeRef::ExprCompare(node) => node.node_index(), + AnyNodeRef::ExprCall(node) => node.node_index(), + AnyNodeRef::ExprFString(node) => node.node_index(), + AnyNodeRef::ExprTString(node) => node.node_index(), + AnyNodeRef::ExprStringLiteral(node) => node.node_index(), + AnyNodeRef::ExprBytesLiteral(node) => node.node_index(), + AnyNodeRef::ExprNumberLiteral(node) => node.node_index(), + AnyNodeRef::ExprBooleanLiteral(node) => node.node_index(), + AnyNodeRef::ExprNoneLiteral(node) => node.node_index(), + AnyNodeRef::ExprEllipsisLiteral(node) => node.node_index(), + AnyNodeRef::ExprAttribute(node) => node.node_index(), + AnyNodeRef::ExprSubscript(node) => node.node_index(), + AnyNodeRef::ExprStarred(node) => node.node_index(), + AnyNodeRef::ExprName(node) => node.node_index(), + AnyNodeRef::ExprList(node) => node.node_index(), + AnyNodeRef::ExprTuple(node) => node.node_index(), + AnyNodeRef::ExprSlice(node) => node.node_index(), + AnyNodeRef::ExprIpyEscapeCommand(node) => node.node_index(), + AnyNodeRef::ExceptHandlerExceptHandler(node) => node.node_index(), + AnyNodeRef::InterpolatedElement(node) => node.node_index(), + AnyNodeRef::InterpolatedStringLiteralElement(node) => node.node_index(), + AnyNodeRef::PatternMatchValue(node) => node.node_index(), + AnyNodeRef::PatternMatchSingleton(node) => node.node_index(), + AnyNodeRef::PatternMatchSequence(node) => node.node_index(), + AnyNodeRef::PatternMatchMapping(node) => node.node_index(), + AnyNodeRef::PatternMatchClass(node) => node.node_index(), + AnyNodeRef::PatternMatchStar(node) => node.node_index(), + AnyNodeRef::PatternMatchAs(node) => node.node_index(), + AnyNodeRef::PatternMatchOr(node) => node.node_index(), + AnyNodeRef::TypeParamTypeVar(node) => node.node_index(), + AnyNodeRef::TypeParamTypeVarTuple(node) => node.node_index(), + AnyNodeRef::TypeParamParamSpec(node) => node.node_index(), + AnyNodeRef::InterpolatedStringFormatSpec(node) => node.node_index(), + AnyNodeRef::PatternArguments(node) => node.node_index(), + AnyNodeRef::PatternKeyword(node) => node.node_index(), + AnyNodeRef::Comprehension(node) => node.node_index(), + AnyNodeRef::Arguments(node) => node.node_index(), + AnyNodeRef::Parameters(node) => node.node_index(), + AnyNodeRef::Parameter(node) => node.node_index(), + AnyNodeRef::ParameterWithDefault(node) => node.node_index(), + AnyNodeRef::Keyword(node) => node.node_index(), + AnyNodeRef::Alias(node) => node.node_index(), + AnyNodeRef::WithItem(node) => node.node_index(), + AnyNodeRef::MatchCase(node) => node.node_index(), + AnyNodeRef::Decorator(node) => node.node_index(), + AnyNodeRef::ElifElseClause(node) => node.node_index(), + AnyNodeRef::TypeParams(node) => node.node_index(), + AnyNodeRef::FString(node) => node.node_index(), + AnyNodeRef::TString(node) => node.node_index(), + AnyNodeRef::StringLiteral(node) => node.node_index(), + AnyNodeRef::BytesLiteral(node) => node.node_index(), + AnyNodeRef::Identifier(node) => node.node_index(), + } + } +} + impl AnyNodeRef<'_> { pub fn as_ptr(&self) -> std::ptr::NonNull<()> { match self { @@ -6496,6 +7408,1330 @@ impl AnyNodeRef<'_> { } } +/// An enumeration of all AST nodes. +/// +/// Unlike `AnyNodeRef`, this type does not flatten nested enums, so its variants only +/// consist of the "root" AST node types. This is useful as it exposes references to the +/// original enums, not just references to their inner values. +/// +/// For example, `AnyRootNodeRef::Mod` contains a reference to the `Mod` enum, while +/// `AnyNodeRef` has top-level `AnyNodeRef::ModModule` and `AnyNodeRef::ModExpression` +/// variants. +#[derive(Copy, Clone, Debug, PartialEq)] +pub enum AnyRootNodeRef<'a> { + Mod(&'a Mod), + Stmt(&'a Stmt), + Expr(&'a Expr), + ExceptHandler(&'a ExceptHandler), + InterpolatedStringElement(&'a InterpolatedStringElement), + Pattern(&'a Pattern), + TypeParam(&'a TypeParam), + InterpolatedStringFormatSpec(&'a crate::InterpolatedStringFormatSpec), + PatternArguments(&'a crate::PatternArguments), + PatternKeyword(&'a crate::PatternKeyword), + Comprehension(&'a crate::Comprehension), + Arguments(&'a crate::Arguments), + Parameters(&'a crate::Parameters), + Parameter(&'a crate::Parameter), + ParameterWithDefault(&'a crate::ParameterWithDefault), + Keyword(&'a crate::Keyword), + Alias(&'a crate::Alias), + WithItem(&'a crate::WithItem), + MatchCase(&'a crate::MatchCase), + Decorator(&'a crate::Decorator), + ElifElseClause(&'a crate::ElifElseClause), + TypeParams(&'a crate::TypeParams), + FString(&'a crate::FString), + TString(&'a crate::TString), + StringLiteral(&'a crate::StringLiteral), + BytesLiteral(&'a crate::BytesLiteral), + Identifier(&'a crate::Identifier), +} + +impl<'a> From<&'a Mod> for AnyRootNodeRef<'a> { + fn from(node: &'a Mod) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Mod(node) + } +} + +impl<'a> TryFrom> for &'a Mod { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a Mod, ()> { + match node { + AnyRootNodeRef::Mod(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ModModule { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ModModule, ()> { + match node { + AnyRootNodeRef::Mod(Mod::Module(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ModExpression { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ModExpression, ()> { + match node { + AnyRootNodeRef::Mod(Mod::Expression(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a Stmt> for AnyRootNodeRef<'a> { + fn from(node: &'a Stmt) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Stmt(node) + } +} + +impl<'a> TryFrom> for &'a Stmt { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a Stmt, ()> { + match node { + AnyRootNodeRef::Stmt(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtFunctionDef { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtFunctionDef, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::FunctionDef(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtClassDef { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtClassDef, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::ClassDef(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtReturn { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtReturn, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Return(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtDelete { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtDelete, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Delete(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtTypeAlias { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtTypeAlias, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::TypeAlias(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtAssign { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtAssign, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Assign(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtAugAssign { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtAugAssign, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::AugAssign(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtAnnAssign { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtAnnAssign, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::AnnAssign(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtFor { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtFor, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::For(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtWhile { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtWhile, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::While(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtIf { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtIf, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::If(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtWith { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtWith, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::With(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtMatch { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtMatch, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Match(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtRaise { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtRaise, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Raise(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtTry { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtTry, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Try(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtAssert { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtAssert, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Assert(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtImport { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtImport, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Import(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtImportFrom { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtImportFrom, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::ImportFrom(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtGlobal { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtGlobal, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Global(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtNonlocal { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtNonlocal, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Nonlocal(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtExpr { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtExpr, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Expr(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtPass { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtPass, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Pass(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtBreak { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtBreak, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Break(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtContinue { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtContinue, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::Continue(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::StmtIpyEscapeCommand { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StmtIpyEscapeCommand, ()> { + match node { + AnyRootNodeRef::Stmt(Stmt::IpyEscapeCommand(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a Expr> for AnyRootNodeRef<'a> { + fn from(node: &'a Expr) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Expr(node) + } +} + +impl<'a> TryFrom> for &'a Expr { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a Expr, ()> { + match node { + AnyRootNodeRef::Expr(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprBoolOp { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprBoolOp, ()> { + match node { + AnyRootNodeRef::Expr(Expr::BoolOp(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprNamed { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprNamed, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Named(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprBinOp { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprBinOp, ()> { + match node { + AnyRootNodeRef::Expr(Expr::BinOp(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprUnaryOp { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprUnaryOp, ()> { + match node { + AnyRootNodeRef::Expr(Expr::UnaryOp(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprLambda { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprLambda, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Lambda(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprIf { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprIf, ()> { + match node { + AnyRootNodeRef::Expr(Expr::If(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprDict { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprDict, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Dict(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprSet { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprSet, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Set(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprListComp { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprListComp, ()> { + match node { + AnyRootNodeRef::Expr(Expr::ListComp(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprSetComp { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprSetComp, ()> { + match node { + AnyRootNodeRef::Expr(Expr::SetComp(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprDictComp { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprDictComp, ()> { + match node { + AnyRootNodeRef::Expr(Expr::DictComp(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprGenerator { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprGenerator, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Generator(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprAwait { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprAwait, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Await(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprYield { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprYield, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Yield(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprYieldFrom { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprYieldFrom, ()> { + match node { + AnyRootNodeRef::Expr(Expr::YieldFrom(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprCompare { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprCompare, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Compare(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprCall { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprCall, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Call(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprFString { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprFString, ()> { + match node { + AnyRootNodeRef::Expr(Expr::FString(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprTString { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprTString, ()> { + match node { + AnyRootNodeRef::Expr(Expr::TString(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprStringLiteral { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprStringLiteral, ()> { + match node { + AnyRootNodeRef::Expr(Expr::StringLiteral(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprBytesLiteral { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprBytesLiteral, ()> { + match node { + AnyRootNodeRef::Expr(Expr::BytesLiteral(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprNumberLiteral { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprNumberLiteral, ()> { + match node { + AnyRootNodeRef::Expr(Expr::NumberLiteral(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprBooleanLiteral { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprBooleanLiteral, ()> { + match node { + AnyRootNodeRef::Expr(Expr::BooleanLiteral(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprNoneLiteral { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprNoneLiteral, ()> { + match node { + AnyRootNodeRef::Expr(Expr::NoneLiteral(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprEllipsisLiteral { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprEllipsisLiteral, ()> { + match node { + AnyRootNodeRef::Expr(Expr::EllipsisLiteral(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprAttribute { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprAttribute, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Attribute(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprSubscript { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprSubscript, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Subscript(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprStarred { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprStarred, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Starred(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprName { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprName, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Name(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprList { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprList, ()> { + match node { + AnyRootNodeRef::Expr(Expr::List(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprTuple { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprTuple, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Tuple(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprSlice { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprSlice, ()> { + match node { + AnyRootNodeRef::Expr(Expr::Slice(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExprIpyEscapeCommand { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExprIpyEscapeCommand, ()> { + match node { + AnyRootNodeRef::Expr(Expr::IpyEscapeCommand(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a ExceptHandler> for AnyRootNodeRef<'a> { + fn from(node: &'a ExceptHandler) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::ExceptHandler(node) + } +} + +impl<'a> TryFrom> for &'a ExceptHandler { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a ExceptHandler, ()> { + match node { + AnyRootNodeRef::ExceptHandler(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::ExceptHandlerExceptHandler { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ExceptHandlerExceptHandler, ()> { + match node { + AnyRootNodeRef::ExceptHandler(ExceptHandler::ExceptHandler(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a InterpolatedStringElement> for AnyRootNodeRef<'a> { + fn from(node: &'a InterpolatedStringElement) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::InterpolatedStringElement(node) + } +} + +impl<'a> TryFrom> for &'a InterpolatedStringElement { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a InterpolatedStringElement, ()> { + match node { + AnyRootNodeRef::InterpolatedStringElement(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::InterpolatedElement { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::InterpolatedElement, ()> { + match node { + AnyRootNodeRef::InterpolatedStringElement( + InterpolatedStringElement::Interpolation(node), + ) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::InterpolatedStringLiteralElement { + type Error = (); + fn try_from( + node: AnyRootNodeRef<'a>, + ) -> Result<&'a crate::InterpolatedStringLiteralElement, ()> { + match node { + AnyRootNodeRef::InterpolatedStringElement(InterpolatedStringElement::Literal(node)) => { + Ok(node) + } + _ => Err(()), + } + } +} + +impl<'a> From<&'a Pattern> for AnyRootNodeRef<'a> { + fn from(node: &'a Pattern) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Pattern(node) + } +} + +impl<'a> TryFrom> for &'a Pattern { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a Pattern, ()> { + match node { + AnyRootNodeRef::Pattern(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::PatternMatchValue { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchValue, ()> { + match node { + AnyRootNodeRef::Pattern(Pattern::MatchValue(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::PatternMatchSingleton { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchSingleton, ()> { + match node { + AnyRootNodeRef::Pattern(Pattern::MatchSingleton(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::PatternMatchSequence { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchSequence, ()> { + match node { + AnyRootNodeRef::Pattern(Pattern::MatchSequence(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::PatternMatchMapping { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchMapping, ()> { + match node { + AnyRootNodeRef::Pattern(Pattern::MatchMapping(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::PatternMatchClass { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchClass, ()> { + match node { + AnyRootNodeRef::Pattern(Pattern::MatchClass(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::PatternMatchStar { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchStar, ()> { + match node { + AnyRootNodeRef::Pattern(Pattern::MatchStar(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::PatternMatchAs { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchAs, ()> { + match node { + AnyRootNodeRef::Pattern(Pattern::MatchAs(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::PatternMatchOr { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternMatchOr, ()> { + match node { + AnyRootNodeRef::Pattern(Pattern::MatchOr(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a TypeParam> for AnyRootNodeRef<'a> { + fn from(node: &'a TypeParam) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::TypeParam(node) + } +} + +impl<'a> TryFrom> for &'a TypeParam { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a TypeParam, ()> { + match node { + AnyRootNodeRef::TypeParam(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::TypeParamTypeVar { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TypeParamTypeVar, ()> { + match node { + AnyRootNodeRef::TypeParam(TypeParam::TypeVar(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::TypeParamTypeVarTuple { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TypeParamTypeVarTuple, ()> { + match node { + AnyRootNodeRef::TypeParam(TypeParam::TypeVarTuple(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> TryFrom> for &'a crate::TypeParamParamSpec { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TypeParamParamSpec, ()> { + match node { + AnyRootNodeRef::TypeParam(TypeParam::ParamSpec(node)) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::InterpolatedStringFormatSpec> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::InterpolatedStringFormatSpec) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::InterpolatedStringFormatSpec(node) + } +} + +impl<'a> TryFrom> for &'a crate::InterpolatedStringFormatSpec { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::InterpolatedStringFormatSpec, ()> { + match node { + AnyRootNodeRef::InterpolatedStringFormatSpec(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::PatternArguments> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::PatternArguments) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::PatternArguments(node) + } +} + +impl<'a> TryFrom> for &'a crate::PatternArguments { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternArguments, ()> { + match node { + AnyRootNodeRef::PatternArguments(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::PatternKeyword> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::PatternKeyword) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::PatternKeyword(node) + } +} + +impl<'a> TryFrom> for &'a crate::PatternKeyword { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::PatternKeyword, ()> { + match node { + AnyRootNodeRef::PatternKeyword(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::Comprehension> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::Comprehension) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Comprehension(node) + } +} + +impl<'a> TryFrom> for &'a crate::Comprehension { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Comprehension, ()> { + match node { + AnyRootNodeRef::Comprehension(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::Arguments> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::Arguments) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Arguments(node) + } +} + +impl<'a> TryFrom> for &'a crate::Arguments { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Arguments, ()> { + match node { + AnyRootNodeRef::Arguments(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::Parameters> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::Parameters) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Parameters(node) + } +} + +impl<'a> TryFrom> for &'a crate::Parameters { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Parameters, ()> { + match node { + AnyRootNodeRef::Parameters(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::Parameter> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::Parameter) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Parameter(node) + } +} + +impl<'a> TryFrom> for &'a crate::Parameter { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Parameter, ()> { + match node { + AnyRootNodeRef::Parameter(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::ParameterWithDefault> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::ParameterWithDefault) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::ParameterWithDefault(node) + } +} + +impl<'a> TryFrom> for &'a crate::ParameterWithDefault { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ParameterWithDefault, ()> { + match node { + AnyRootNodeRef::ParameterWithDefault(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::Keyword> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::Keyword) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Keyword(node) + } +} + +impl<'a> TryFrom> for &'a crate::Keyword { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Keyword, ()> { + match node { + AnyRootNodeRef::Keyword(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::Alias> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::Alias) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Alias(node) + } +} + +impl<'a> TryFrom> for &'a crate::Alias { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Alias, ()> { + match node { + AnyRootNodeRef::Alias(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::WithItem> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::WithItem) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::WithItem(node) + } +} + +impl<'a> TryFrom> for &'a crate::WithItem { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::WithItem, ()> { + match node { + AnyRootNodeRef::WithItem(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::MatchCase> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::MatchCase) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::MatchCase(node) + } +} + +impl<'a> TryFrom> for &'a crate::MatchCase { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::MatchCase, ()> { + match node { + AnyRootNodeRef::MatchCase(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::Decorator> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::Decorator) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Decorator(node) + } +} + +impl<'a> TryFrom> for &'a crate::Decorator { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Decorator, ()> { + match node { + AnyRootNodeRef::Decorator(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::ElifElseClause> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::ElifElseClause) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::ElifElseClause(node) + } +} + +impl<'a> TryFrom> for &'a crate::ElifElseClause { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::ElifElseClause, ()> { + match node { + AnyRootNodeRef::ElifElseClause(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::TypeParams> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::TypeParams) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::TypeParams(node) + } +} + +impl<'a> TryFrom> for &'a crate::TypeParams { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TypeParams, ()> { + match node { + AnyRootNodeRef::TypeParams(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::FString> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::FString) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::FString(node) + } +} + +impl<'a> TryFrom> for &'a crate::FString { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::FString, ()> { + match node { + AnyRootNodeRef::FString(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::TString> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::TString) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::TString(node) + } +} + +impl<'a> TryFrom> for &'a crate::TString { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::TString, ()> { + match node { + AnyRootNodeRef::TString(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::StringLiteral> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::StringLiteral) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::StringLiteral(node) + } +} + +impl<'a> TryFrom> for &'a crate::StringLiteral { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::StringLiteral, ()> { + match node { + AnyRootNodeRef::StringLiteral(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::BytesLiteral> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::BytesLiteral) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::BytesLiteral(node) + } +} + +impl<'a> TryFrom> for &'a crate::BytesLiteral { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::BytesLiteral, ()> { + match node { + AnyRootNodeRef::BytesLiteral(node) => Ok(node), + _ => Err(()), + } + } +} + +impl<'a> From<&'a crate::Identifier> for AnyRootNodeRef<'a> { + fn from(node: &'a crate::Identifier) -> AnyRootNodeRef<'a> { + AnyRootNodeRef::Identifier(node) + } +} + +impl<'a> TryFrom> for &'a crate::Identifier { + type Error = (); + fn try_from(node: AnyRootNodeRef<'a>) -> Result<&'a crate::Identifier, ()> { + match node { + AnyRootNodeRef::Identifier(node) => Ok(node), + _ => Err(()), + } + } +} + +impl ruff_text_size::Ranged for AnyRootNodeRef<'_> { + fn range(&self) -> ruff_text_size::TextRange { + match self { + AnyRootNodeRef::Mod(node) => node.range(), + AnyRootNodeRef::Stmt(node) => node.range(), + AnyRootNodeRef::Expr(node) => node.range(), + AnyRootNodeRef::ExceptHandler(node) => node.range(), + AnyRootNodeRef::InterpolatedStringElement(node) => node.range(), + AnyRootNodeRef::Pattern(node) => node.range(), + AnyRootNodeRef::TypeParam(node) => node.range(), + AnyRootNodeRef::InterpolatedStringFormatSpec(node) => node.range(), + AnyRootNodeRef::PatternArguments(node) => node.range(), + AnyRootNodeRef::PatternKeyword(node) => node.range(), + AnyRootNodeRef::Comprehension(node) => node.range(), + AnyRootNodeRef::Arguments(node) => node.range(), + AnyRootNodeRef::Parameters(node) => node.range(), + AnyRootNodeRef::Parameter(node) => node.range(), + AnyRootNodeRef::ParameterWithDefault(node) => node.range(), + AnyRootNodeRef::Keyword(node) => node.range(), + AnyRootNodeRef::Alias(node) => node.range(), + AnyRootNodeRef::WithItem(node) => node.range(), + AnyRootNodeRef::MatchCase(node) => node.range(), + AnyRootNodeRef::Decorator(node) => node.range(), + AnyRootNodeRef::ElifElseClause(node) => node.range(), + AnyRootNodeRef::TypeParams(node) => node.range(), + AnyRootNodeRef::FString(node) => node.range(), + AnyRootNodeRef::TString(node) => node.range(), + AnyRootNodeRef::StringLiteral(node) => node.range(), + AnyRootNodeRef::BytesLiteral(node) => node.range(), + AnyRootNodeRef::Identifier(node) => node.range(), + } + } +} + +impl crate::HasNodeIndex for AnyRootNodeRef<'_> { + fn node_index(&self) -> &crate::AtomicNodeIndex { + match self { + AnyRootNodeRef::Mod(node) => node.node_index(), + AnyRootNodeRef::Stmt(node) => node.node_index(), + AnyRootNodeRef::Expr(node) => node.node_index(), + AnyRootNodeRef::ExceptHandler(node) => node.node_index(), + AnyRootNodeRef::InterpolatedStringElement(node) => node.node_index(), + AnyRootNodeRef::Pattern(node) => node.node_index(), + AnyRootNodeRef::TypeParam(node) => node.node_index(), + AnyRootNodeRef::InterpolatedStringFormatSpec(node) => node.node_index(), + AnyRootNodeRef::PatternArguments(node) => node.node_index(), + AnyRootNodeRef::PatternKeyword(node) => node.node_index(), + AnyRootNodeRef::Comprehension(node) => node.node_index(), + AnyRootNodeRef::Arguments(node) => node.node_index(), + AnyRootNodeRef::Parameters(node) => node.node_index(), + AnyRootNodeRef::Parameter(node) => node.node_index(), + AnyRootNodeRef::ParameterWithDefault(node) => node.node_index(), + AnyRootNodeRef::Keyword(node) => node.node_index(), + AnyRootNodeRef::Alias(node) => node.node_index(), + AnyRootNodeRef::WithItem(node) => node.node_index(), + AnyRootNodeRef::MatchCase(node) => node.node_index(), + AnyRootNodeRef::Decorator(node) => node.node_index(), + AnyRootNodeRef::ElifElseClause(node) => node.node_index(), + AnyRootNodeRef::TypeParams(node) => node.node_index(), + AnyRootNodeRef::FString(node) => node.node_index(), + AnyRootNodeRef::TString(node) => node.node_index(), + AnyRootNodeRef::StringLiteral(node) => node.node_index(), + AnyRootNodeRef::BytesLiteral(node) => node.node_index(), + AnyRootNodeRef::Identifier(node) => node.node_index(), + } + } +} + +impl<'a> AnyRootNodeRef<'a> { + pub fn visit_source_order<'b, V>(self, visitor: &mut V) + where + V: crate::visitor::source_order::SourceOrderVisitor<'b> + ?Sized, + 'a: 'b, + { + match self { + AnyRootNodeRef::Mod(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Stmt(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Expr(node) => node.visit_source_order(visitor), + AnyRootNodeRef::ExceptHandler(node) => node.visit_source_order(visitor), + AnyRootNodeRef::InterpolatedStringElement(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Pattern(node) => node.visit_source_order(visitor), + AnyRootNodeRef::TypeParam(node) => node.visit_source_order(visitor), + AnyRootNodeRef::InterpolatedStringFormatSpec(node) => node.visit_source_order(visitor), + AnyRootNodeRef::PatternArguments(node) => node.visit_source_order(visitor), + AnyRootNodeRef::PatternKeyword(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Comprehension(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Arguments(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Parameters(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Parameter(node) => node.visit_source_order(visitor), + AnyRootNodeRef::ParameterWithDefault(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Keyword(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Alias(node) => node.visit_source_order(visitor), + AnyRootNodeRef::WithItem(node) => node.visit_source_order(visitor), + AnyRootNodeRef::MatchCase(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Decorator(node) => node.visit_source_order(visitor), + AnyRootNodeRef::ElifElseClause(node) => node.visit_source_order(visitor), + AnyRootNodeRef::TypeParams(node) => node.visit_source_order(visitor), + AnyRootNodeRef::FString(node) => node.visit_source_order(visitor), + AnyRootNodeRef::TString(node) => node.visit_source_order(visitor), + AnyRootNodeRef::StringLiteral(node) => node.visit_source_order(visitor), + AnyRootNodeRef::BytesLiteral(node) => node.visit_source_order(visitor), + AnyRootNodeRef::Identifier(node) => node.visit_source_order(visitor), + } + } +} + #[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] pub enum NodeKind { ModModule, @@ -6700,6 +8936,7 @@ impl AnyNodeRef<'_> { /// See also [Module](https://docs.python.org/3/library/ast.html#ast.Module) #[derive(Clone, Debug, PartialEq)] pub struct ModModule { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub body: Vec, } @@ -6707,6 +8944,7 @@ pub struct ModModule { /// See also [Module](https://docs.python.org/3/library/ast.html#ast.Module) #[derive(Clone, Debug, PartialEq)] pub struct ModExpression { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub body: Box, } @@ -6717,6 +8955,7 @@ pub struct ModExpression { /// This type differs from the original Python AST, as it collapses the synchronous and asynchronous variants into a single type. #[derive(Clone, Debug, PartialEq)] pub struct StmtFunctionDef { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub is_async: bool, pub decorator_list: Vec, @@ -6730,6 +8969,7 @@ pub struct StmtFunctionDef { /// See also [ClassDef](https://docs.python.org/3/library/ast.html#ast.ClassDef) #[derive(Clone, Debug, PartialEq)] pub struct StmtClassDef { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub decorator_list: Vec, pub name: crate::Identifier, @@ -6741,6 +8981,7 @@ pub struct StmtClassDef { /// See also [Return](https://docs.python.org/3/library/ast.html#ast.Return) #[derive(Clone, Debug, PartialEq)] pub struct StmtReturn { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: Option>, } @@ -6748,6 +8989,7 @@ pub struct StmtReturn { /// See also [Delete](https://docs.python.org/3/library/ast.html#ast.Delete) #[derive(Clone, Debug, PartialEq)] pub struct StmtDelete { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub targets: Vec, } @@ -6755,6 +8997,7 @@ pub struct StmtDelete { /// See also [TypeAlias](https://docs.python.org/3/library/ast.html#ast.TypeAlias) #[derive(Clone, Debug, PartialEq)] pub struct StmtTypeAlias { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub name: Box, pub type_params: Option>, @@ -6764,6 +9007,7 @@ pub struct StmtTypeAlias { /// See also [Assign](https://docs.python.org/3/library/ast.html#ast.Assign) #[derive(Clone, Debug, PartialEq)] pub struct StmtAssign { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub targets: Vec, pub value: Box, @@ -6772,6 +9016,7 @@ pub struct StmtAssign { /// See also [AugAssign](https://docs.python.org/3/library/ast.html#ast.AugAssign) #[derive(Clone, Debug, PartialEq)] pub struct StmtAugAssign { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub target: Box, pub op: crate::Operator, @@ -6781,6 +9026,7 @@ pub struct StmtAugAssign { /// See also [AnnAssign](https://docs.python.org/3/library/ast.html#ast.AnnAssign) #[derive(Clone, Debug, PartialEq)] pub struct StmtAnnAssign { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub target: Box, pub annotation: Box, @@ -6794,6 +9040,7 @@ pub struct StmtAnnAssign { /// This type differs from the original Python AST, as it collapses the synchronous and asynchronous variants into a single type. #[derive(Clone, Debug, PartialEq)] pub struct StmtFor { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub is_async: bool, pub target: Box, @@ -6806,6 +9053,7 @@ pub struct StmtFor { /// and [AsyncWhile](https://docs.python.org/3/library/ast.html#ast.AsyncWhile). #[derive(Clone, Debug, PartialEq)] pub struct StmtWhile { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub test: Box, pub body: Vec, @@ -6815,6 +9063,7 @@ pub struct StmtWhile { /// See also [If](https://docs.python.org/3/library/ast.html#ast.If) #[derive(Clone, Debug, PartialEq)] pub struct StmtIf { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub test: Box, pub body: Vec, @@ -6827,6 +9076,7 @@ pub struct StmtIf { /// This type differs from the original Python AST, as it collapses the synchronous and asynchronous variants into a single type. #[derive(Clone, Debug, PartialEq)] pub struct StmtWith { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub is_async: bool, pub items: Vec, @@ -6836,6 +9086,7 @@ pub struct StmtWith { /// See also [Match](https://docs.python.org/3/library/ast.html#ast.Match) #[derive(Clone, Debug, PartialEq)] pub struct StmtMatch { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub subject: Box, pub cases: Vec, @@ -6844,6 +9095,7 @@ pub struct StmtMatch { /// See also [Raise](https://docs.python.org/3/library/ast.html#ast.Raise) #[derive(Clone, Debug, PartialEq)] pub struct StmtRaise { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub exc: Option>, pub cause: Option>, @@ -6853,6 +9105,7 @@ pub struct StmtRaise { /// and [TryStar](https://docs.python.org/3/library/ast.html#ast.TryStar) #[derive(Clone, Debug, PartialEq)] pub struct StmtTry { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub body: Vec, pub handlers: Vec, @@ -6864,6 +9117,7 @@ pub struct StmtTry { /// See also [Assert](https://docs.python.org/3/library/ast.html#ast.Assert) #[derive(Clone, Debug, PartialEq)] pub struct StmtAssert { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub test: Box, pub msg: Option>, @@ -6872,6 +9126,7 @@ pub struct StmtAssert { /// See also [Import](https://docs.python.org/3/library/ast.html#ast.Import) #[derive(Clone, Debug, PartialEq)] pub struct StmtImport { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub names: Vec, } @@ -6879,6 +9134,7 @@ pub struct StmtImport { /// See also [ImportFrom](https://docs.python.org/3/library/ast.html#ast.ImportFrom) #[derive(Clone, Debug, PartialEq)] pub struct StmtImportFrom { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub module: Option, pub names: Vec, @@ -6888,6 +9144,7 @@ pub struct StmtImportFrom { /// See also [Global](https://docs.python.org/3/library/ast.html#ast.Global) #[derive(Clone, Debug, PartialEq)] pub struct StmtGlobal { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub names: Vec, } @@ -6895,6 +9152,7 @@ pub struct StmtGlobal { /// See also [Nonlocal](https://docs.python.org/3/library/ast.html#ast.Nonlocal) #[derive(Clone, Debug, PartialEq)] pub struct StmtNonlocal { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub names: Vec, } @@ -6902,6 +9160,7 @@ pub struct StmtNonlocal { /// See also [Expr](https://docs.python.org/3/library/ast.html#ast.Expr) #[derive(Clone, Debug, PartialEq)] pub struct StmtExpr { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: Box, } @@ -6909,18 +9168,21 @@ pub struct StmtExpr { /// See also [Pass](https://docs.python.org/3/library/ast.html#ast.Pass) #[derive(Clone, Debug, PartialEq)] pub struct StmtPass { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, } /// See also [Break](https://docs.python.org/3/library/ast.html#ast.Break) #[derive(Clone, Debug, PartialEq)] pub struct StmtBreak { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, } /// See also [Continue](https://docs.python.org/3/library/ast.html#ast.Continue) #[derive(Clone, Debug, PartialEq)] pub struct StmtContinue { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, } @@ -6980,6 +9242,7 @@ pub struct StmtContinue { /// #[derive(Clone, Debug, PartialEq)] pub struct StmtIpyEscapeCommand { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub kind: crate::IpyEscapeKind, pub value: Box, @@ -6988,6 +9251,7 @@ pub struct StmtIpyEscapeCommand { /// See also [BoolOp](https://docs.python.org/3/library/ast.html#ast.BoolOp) #[derive(Clone, Debug, PartialEq)] pub struct ExprBoolOp { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub op: crate::BoolOp, pub values: Vec, @@ -6996,6 +9260,7 @@ pub struct ExprBoolOp { /// See also [NamedExpr](https://docs.python.org/3/library/ast.html#ast.NamedExpr) #[derive(Clone, Debug, PartialEq)] pub struct ExprNamed { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub target: Box, pub value: Box, @@ -7004,6 +9269,7 @@ pub struct ExprNamed { /// See also [BinOp](https://docs.python.org/3/library/ast.html#ast.BinOp) #[derive(Clone, Debug, PartialEq)] pub struct ExprBinOp { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub left: Box, pub op: crate::Operator, @@ -7013,6 +9279,7 @@ pub struct ExprBinOp { /// See also [UnaryOp](https://docs.python.org/3/library/ast.html#ast.UnaryOp) #[derive(Clone, Debug, PartialEq)] pub struct ExprUnaryOp { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub op: crate::UnaryOp, pub operand: Box, @@ -7021,6 +9288,7 @@ pub struct ExprUnaryOp { /// See also [Lambda](https://docs.python.org/3/library/ast.html#ast.Lambda) #[derive(Clone, Debug, PartialEq)] pub struct ExprLambda { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub parameters: Option>, pub body: Box, @@ -7029,6 +9297,7 @@ pub struct ExprLambda { /// See also [IfExp](https://docs.python.org/3/library/ast.html#ast.IfExp) #[derive(Clone, Debug, PartialEq)] pub struct ExprIf { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub test: Box, pub body: Box, @@ -7038,6 +9307,7 @@ pub struct ExprIf { /// See also [Dict](https://docs.python.org/3/library/ast.html#ast.Dict) #[derive(Clone, Debug, PartialEq)] pub struct ExprDict { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub items: Vec, } @@ -7045,6 +9315,7 @@ pub struct ExprDict { /// See also [Set](https://docs.python.org/3/library/ast.html#ast.Set) #[derive(Clone, Debug, PartialEq)] pub struct ExprSet { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub elts: Vec, } @@ -7052,6 +9323,7 @@ pub struct ExprSet { /// See also [ListComp](https://docs.python.org/3/library/ast.html#ast.ListComp) #[derive(Clone, Debug, PartialEq)] pub struct ExprListComp { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub elt: Box, pub generators: Vec, @@ -7060,6 +9332,7 @@ pub struct ExprListComp { /// See also [SetComp](https://docs.python.org/3/library/ast.html#ast.SetComp) #[derive(Clone, Debug, PartialEq)] pub struct ExprSetComp { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub elt: Box, pub generators: Vec, @@ -7068,6 +9341,7 @@ pub struct ExprSetComp { /// See also [DictComp](https://docs.python.org/3/library/ast.html#ast.DictComp) #[derive(Clone, Debug, PartialEq)] pub struct ExprDictComp { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub key: Box, pub value: Box, @@ -7077,6 +9351,7 @@ pub struct ExprDictComp { /// See also [GeneratorExp](https://docs.python.org/3/library/ast.html#ast.GeneratorExp) #[derive(Clone, Debug, PartialEq)] pub struct ExprGenerator { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub elt: Box, pub generators: Vec, @@ -7086,6 +9361,7 @@ pub struct ExprGenerator { /// See also [Await](https://docs.python.org/3/library/ast.html#ast.Await) #[derive(Clone, Debug, PartialEq)] pub struct ExprAwait { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: Box, } @@ -7093,6 +9369,7 @@ pub struct ExprAwait { /// See also [Yield](https://docs.python.org/3/library/ast.html#ast.Yield) #[derive(Clone, Debug, PartialEq)] pub struct ExprYield { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: Option>, } @@ -7100,6 +9377,7 @@ pub struct ExprYield { /// See also [YieldFrom](https://docs.python.org/3/library/ast.html#ast.YieldFrom) #[derive(Clone, Debug, PartialEq)] pub struct ExprYieldFrom { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: Box, } @@ -7107,6 +9385,7 @@ pub struct ExprYieldFrom { /// See also [Compare](https://docs.python.org/3/library/ast.html#ast.Compare) #[derive(Clone, Debug, PartialEq)] pub struct ExprCompare { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub left: Box, pub ops: Box<[crate::CmpOp]>, @@ -7116,6 +9395,7 @@ pub struct ExprCompare { /// See also [Call](https://docs.python.org/3/library/ast.html#ast.Call) #[derive(Clone, Debug, PartialEq)] pub struct ExprCall { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub func: Box, pub arguments: crate::Arguments, @@ -7131,6 +9411,7 @@ pub struct ExprCall { /// See also [JoinedStr](https://docs.python.org/3/library/ast.html#ast.JoinedStr) #[derive(Clone, Debug, PartialEq)] pub struct ExprFString { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: crate::FStringValue, } @@ -7145,6 +9426,7 @@ pub struct ExprFString { /// See also [TemplateStr](https://docs.python.org/3/library/ast.html#ast.TemplateStr) #[derive(Clone, Debug, PartialEq)] pub struct ExprTString { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: crate::TStringValue, } @@ -7153,6 +9435,7 @@ pub struct ExprTString { /// or an implicitly concatenated string literal. #[derive(Clone, Debug, PartialEq)] pub struct ExprStringLiteral { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: crate::StringLiteralValue, } @@ -7161,35 +9444,41 @@ pub struct ExprStringLiteral { /// or an implicitly concatenated bytestring literal. #[derive(Clone, Debug, PartialEq)] pub struct ExprBytesLiteral { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: crate::BytesLiteralValue, } #[derive(Clone, Debug, PartialEq)] pub struct ExprNumberLiteral { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: crate::Number, } #[derive(Clone, Debug, PartialEq, Default)] pub struct ExprBooleanLiteral { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: bool, } #[derive(Clone, Debug, PartialEq, Default)] pub struct ExprNoneLiteral { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, } #[derive(Clone, Debug, PartialEq, Default)] pub struct ExprEllipsisLiteral { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, } /// See also [Attribute](https://docs.python.org/3/library/ast.html#ast.Attribute) #[derive(Clone, Debug, PartialEq)] pub struct ExprAttribute { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: Box, pub attr: crate::Identifier, @@ -7199,6 +9488,7 @@ pub struct ExprAttribute { /// See also [Subscript](https://docs.python.org/3/library/ast.html#ast.Subscript) #[derive(Clone, Debug, PartialEq)] pub struct ExprSubscript { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: Box, pub slice: Box, @@ -7208,6 +9498,7 @@ pub struct ExprSubscript { /// See also [Starred](https://docs.python.org/3/library/ast.html#ast.Starred) #[derive(Clone, Debug, PartialEq)] pub struct ExprStarred { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub value: Box, pub ctx: crate::ExprContext, @@ -7216,6 +9507,7 @@ pub struct ExprStarred { /// See also [Name](https://docs.python.org/3/library/ast.html#ast.Name) #[derive(Clone, Debug, PartialEq)] pub struct ExprName { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub id: Name, pub ctx: crate::ExprContext, @@ -7224,6 +9516,7 @@ pub struct ExprName { /// See also [List](https://docs.python.org/3/library/ast.html#ast.List) #[derive(Clone, Debug, PartialEq)] pub struct ExprList { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub elts: Vec, pub ctx: crate::ExprContext, @@ -7232,6 +9525,7 @@ pub struct ExprList { /// See also [Tuple](https://docs.python.org/3/library/ast.html#ast.Tuple) #[derive(Clone, Debug, PartialEq)] pub struct ExprTuple { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub elts: Vec, pub ctx: crate::ExprContext, @@ -7241,6 +9535,7 @@ pub struct ExprTuple { /// See also [Slice](https://docs.python.org/3/library/ast.html#ast.Slice) #[derive(Clone, Debug, PartialEq)] pub struct ExprSlice { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub lower: Option>, pub upper: Option>, @@ -7260,6 +9555,7 @@ pub struct ExprSlice { /// see [`StmtIpyEscapeCommand`]. #[derive(Clone, Debug, PartialEq)] pub struct ExprIpyEscapeCommand { + pub node_index: crate::AtomicNodeIndex, pub range: ruff_text_size::TextRange, pub kind: crate::IpyEscapeKind, pub value: Box, @@ -7270,7 +9566,11 @@ impl ModModule { where V: SourceOrderVisitor<'a> + ?Sized, { - let ModModule { body, range: _ } = self; + let ModModule { + body, + range: _, + node_index: _, + } = self; visitor.visit_body(body); } } @@ -7280,7 +9580,11 @@ impl ModExpression { where V: SourceOrderVisitor<'a> + ?Sized, { - let ModExpression { body, range: _ } = self; + let ModExpression { + body, + range: _, + node_index: _, + } = self; visitor.visit_expr(body); } } @@ -7299,6 +9603,7 @@ impl StmtFunctionDef { returns, body, range: _, + node_index: _, } = self; for elm in decorator_list { @@ -7332,6 +9637,7 @@ impl StmtClassDef { arguments, body, range: _, + node_index: _, } = self; for elm in decorator_list { @@ -7356,7 +9662,11 @@ impl StmtReturn { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtReturn { value, range: _ } = self; + let StmtReturn { + value, + range: _, + node_index: _, + } = self; if let Some(value) = value { visitor.visit_expr(value); @@ -7369,7 +9679,11 @@ impl StmtDelete { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtDelete { targets, range: _ } = self; + let StmtDelete { + targets, + range: _, + node_index: _, + } = self; for elm in targets { visitor.visit_expr(elm); @@ -7387,6 +9701,7 @@ impl StmtTypeAlias { type_params, value, range: _, + node_index: _, } = self; visitor.visit_expr(name); @@ -7407,6 +9722,7 @@ impl StmtAssign { targets, value, range: _, + node_index: _, } = self; for elm in targets { @@ -7426,6 +9742,7 @@ impl StmtAugAssign { op, value, range: _, + node_index: _, } = self; visitor.visit_expr(target); visitor.visit_operator(op); @@ -7444,6 +9761,7 @@ impl StmtAnnAssign { value, simple: _, range: _, + node_index: _, } = self; visitor.visit_expr(target); visitor.visit_annotation(annotation); @@ -7466,6 +9784,7 @@ impl StmtFor { body, orelse, range: _, + node_index: _, } = self; visitor.visit_expr(target); visitor.visit_expr(iter); @@ -7484,6 +9803,7 @@ impl StmtWhile { body, orelse, range: _, + node_index: _, } = self; visitor.visit_expr(test); visitor.visit_body(body); @@ -7501,6 +9821,7 @@ impl StmtIf { body, elif_else_clauses, range: _, + node_index: _, } = self; visitor.visit_expr(test); visitor.visit_body(body); @@ -7521,6 +9842,7 @@ impl StmtWith { items, body, range: _, + node_index: _, } = self; for elm in items { @@ -7539,6 +9861,7 @@ impl StmtMatch { subject, cases, range: _, + node_index: _, } = self; visitor.visit_expr(subject); @@ -7557,6 +9880,7 @@ impl StmtRaise { exc, cause, range: _, + node_index: _, } = self; if let Some(exc) = exc { @@ -7581,6 +9905,7 @@ impl StmtTry { finalbody, is_star: _, range: _, + node_index: _, } = self; visitor.visit_body(body); @@ -7601,6 +9926,7 @@ impl StmtAssert { test, msg, range: _, + node_index: _, } = self; visitor.visit_expr(test); @@ -7615,7 +9941,11 @@ impl StmtImport { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtImport { names, range: _ } = self; + let StmtImport { + names, + range: _, + node_index: _, + } = self; for elm in names { visitor.visit_alias(elm); @@ -7633,6 +9963,7 @@ impl StmtImportFrom { names, level: _, range: _, + node_index: _, } = self; if let Some(module) = module { @@ -7650,7 +9981,11 @@ impl StmtGlobal { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtGlobal { names, range: _ } = self; + let StmtGlobal { + names, + range: _, + node_index: _, + } = self; for elm in names { visitor.visit_identifier(elm); @@ -7663,7 +9998,11 @@ impl StmtNonlocal { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtNonlocal { names, range: _ } = self; + let StmtNonlocal { + names, + range: _, + node_index: _, + } = self; for elm in names { visitor.visit_identifier(elm); @@ -7676,7 +10015,11 @@ impl StmtExpr { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtExpr { value, range: _ } = self; + let StmtExpr { + value, + range: _, + node_index: _, + } = self; visitor.visit_expr(value); } } @@ -7686,7 +10029,10 @@ impl StmtPass { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtPass { range: _ } = self; + let StmtPass { + range: _, + node_index: _, + } = self; } } @@ -7695,7 +10041,10 @@ impl StmtBreak { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtBreak { range: _ } = self; + let StmtBreak { + range: _, + node_index: _, + } = self; } } @@ -7704,7 +10053,10 @@ impl StmtContinue { where V: SourceOrderVisitor<'a> + ?Sized, { - let StmtContinue { range: _ } = self; + let StmtContinue { + range: _, + node_index: _, + } = self; } } @@ -7717,6 +10069,7 @@ impl StmtIpyEscapeCommand { kind: _, value: _, range: _, + node_index: _, } = self; } } @@ -7730,6 +10083,7 @@ impl ExprNamed { target, value, range: _, + node_index: _, } = self; visitor.visit_expr(target); visitor.visit_expr(value); @@ -7746,6 +10100,7 @@ impl ExprBinOp { op, right, range: _, + node_index: _, } = self; visitor.visit_expr(left); visitor.visit_operator(op); @@ -7762,6 +10117,7 @@ impl ExprUnaryOp { op, operand, range: _, + node_index: _, } = self; visitor.visit_unary_op(op); visitor.visit_expr(operand); @@ -7777,6 +10133,7 @@ impl ExprLambda { parameters, body, range: _, + node_index: _, } = self; if let Some(parameters) = parameters { @@ -7797,6 +10154,7 @@ impl ExprIf { body, orelse, range: _, + node_index: _, } = self; visitor.visit_expr(body); visitor.visit_expr(test); @@ -7809,7 +10167,11 @@ impl ExprSet { where V: SourceOrderVisitor<'a> + ?Sized, { - let ExprSet { elts, range: _ } = self; + let ExprSet { + elts, + range: _, + node_index: _, + } = self; for elm in elts { visitor.visit_expr(elm); @@ -7826,6 +10188,7 @@ impl ExprListComp { elt, generators, range: _, + node_index: _, } = self; visitor.visit_expr(elt); @@ -7844,6 +10207,7 @@ impl ExprSetComp { elt, generators, range: _, + node_index: _, } = self; visitor.visit_expr(elt); @@ -7863,6 +10227,7 @@ impl ExprDictComp { value, generators, range: _, + node_index: _, } = self; visitor.visit_expr(key); visitor.visit_expr(value); @@ -7883,6 +10248,7 @@ impl ExprGenerator { generators, parenthesized: _, range: _, + node_index: _, } = self; visitor.visit_expr(elt); @@ -7897,7 +10263,11 @@ impl ExprAwait { where V: SourceOrderVisitor<'a> + ?Sized, { - let ExprAwait { value, range: _ } = self; + let ExprAwait { + value, + range: _, + node_index: _, + } = self; visitor.visit_expr(value); } } @@ -7907,7 +10277,11 @@ impl ExprYield { where V: SourceOrderVisitor<'a> + ?Sized, { - let ExprYield { value, range: _ } = self; + let ExprYield { + value, + range: _, + node_index: _, + } = self; if let Some(value) = value { visitor.visit_expr(value); @@ -7920,7 +10294,11 @@ impl ExprYieldFrom { where V: SourceOrderVisitor<'a> + ?Sized, { - let ExprYieldFrom { value, range: _ } = self; + let ExprYieldFrom { + value, + range: _, + node_index: _, + } = self; visitor.visit_expr(value); } } @@ -7934,6 +10312,7 @@ impl ExprCall { func, arguments, range: _, + node_index: _, } = self; visitor.visit_expr(func); visitor.visit_arguments(arguments); @@ -7945,7 +10324,11 @@ impl ExprNumberLiteral { where V: SourceOrderVisitor<'a> + ?Sized, { - let ExprNumberLiteral { value: _, range: _ } = self; + let ExprNumberLiteral { + value: _, + range: _, + node_index: _, + } = self; } } @@ -7954,7 +10337,11 @@ impl ExprBooleanLiteral { where V: SourceOrderVisitor<'a> + ?Sized, { - let ExprBooleanLiteral { value: _, range: _ } = self; + let ExprBooleanLiteral { + value: _, + range: _, + node_index: _, + } = self; } } @@ -7963,7 +10350,10 @@ impl ExprNoneLiteral { where V: SourceOrderVisitor<'a> + ?Sized, { - let ExprNoneLiteral { range: _ } = self; + let ExprNoneLiteral { + range: _, + node_index: _, + } = self; } } @@ -7972,7 +10362,10 @@ impl ExprEllipsisLiteral { where V: SourceOrderVisitor<'a> + ?Sized, { - let ExprEllipsisLiteral { range: _ } = self; + let ExprEllipsisLiteral { + range: _, + node_index: _, + } = self; } } @@ -7986,6 +10379,7 @@ impl ExprAttribute { attr, ctx: _, range: _, + node_index: _, } = self; visitor.visit_expr(value); visitor.visit_identifier(attr); @@ -8002,6 +10396,7 @@ impl ExprSubscript { slice, ctx: _, range: _, + node_index: _, } = self; visitor.visit_expr(value); visitor.visit_expr(slice); @@ -8017,6 +10412,7 @@ impl ExprStarred { value, ctx: _, range: _, + node_index: _, } = self; visitor.visit_expr(value); } @@ -8031,6 +10427,7 @@ impl ExprName { id: _, ctx: _, range: _, + node_index: _, } = self; } } @@ -8044,6 +10441,7 @@ impl ExprList { elts, ctx: _, range: _, + node_index: _, } = self; for elm in elts { @@ -8062,6 +10460,7 @@ impl ExprTuple { ctx: _, parenthesized: _, range: _, + node_index: _, } = self; for elm in elts { @@ -8080,6 +10479,7 @@ impl ExprSlice { upper, step, range: _, + node_index: _, } = self; if let Some(lower) = lower { @@ -8105,6 +10505,7 @@ impl ExprIpyEscapeCommand { kind: _, value: _, range: _, + node_index: _, } = self; } } diff --git a/crates/ruff_python_ast/src/helpers.rs b/crates/ruff_python_ast/src/helpers.rs index ba0b08bfe6..de17f50869 100644 --- a/crates/ruff_python_ast/src/helpers.rs +++ b/crates/ruff_python_ast/src/helpers.rs @@ -12,8 +12,8 @@ use crate::parenthesize::parenthesized_range; use crate::statement_visitor::StatementVisitor; use crate::visitor::Visitor; use crate::{ - self as ast, Arguments, CmpOp, DictItem, ExceptHandler, Expr, InterpolatedStringElement, - MatchCase, Operator, Pattern, Stmt, TypeParam, + self as ast, Arguments, AtomicNodeIndex, CmpOp, DictItem, ExceptHandler, Expr, + InterpolatedStringElement, MatchCase, Operator, Pattern, Stmt, TypeParam, }; use crate::{AnyNodeRef, ExprContext}; @@ -53,6 +53,7 @@ where func, arguments, range: _, + node_index: _, }) = expr { // Ex) `list()` @@ -146,6 +147,7 @@ pub fn any_over_expr(expr: &Expr, func: &dyn Fn(&Expr) -> bool) -> bool { target, value, range: _, + node_index: _, }) => any_over_expr(target, func) || any_over_expr(value, func), Expr::BinOp(ast::ExprBinOp { left, right, .. }) => { any_over_expr(left, func) || any_over_expr(right, func) @@ -157,32 +159,49 @@ pub fn any_over_expr(expr: &Expr, func: &dyn Fn(&Expr) -> bool) -> bool { body, orelse, range: _, + node_index: _, }) => any_over_expr(test, func) || any_over_expr(body, func) || any_over_expr(orelse, func), - Expr::Dict(ast::ExprDict { items, range: _ }) => { - items.iter().any(|ast::DictItem { key, value }| { - any_over_expr(value, func) - || key.as_ref().is_some_and(|key| any_over_expr(key, func)) - }) - } - Expr::Set(ast::ExprSet { elts, range: _ }) - | Expr::List(ast::ExprList { elts, range: _, .. }) - | Expr::Tuple(ast::ExprTuple { elts, range: _, .. }) => { - elts.iter().any(|expr| any_over_expr(expr, func)) - } + Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) => items.iter().any(|ast::DictItem { key, value }| { + any_over_expr(value, func) || key.as_ref().is_some_and(|key| any_over_expr(key, func)) + }), + Expr::Set(ast::ExprSet { + elts, + range: _, + node_index: _, + }) + | Expr::List(ast::ExprList { + elts, + range: _, + node_index: _, + .. + }) + | Expr::Tuple(ast::ExprTuple { + elts, + range: _, + node_index: _, + .. + }) => elts.iter().any(|expr| any_over_expr(expr, func)), Expr::ListComp(ast::ExprListComp { elt, generators, range: _, + node_index: _, }) | Expr::SetComp(ast::ExprSetComp { elt, generators, range: _, + node_index: _, }) | Expr::Generator(ast::ExprGenerator { elt, generators, range: _, + node_index: _, parenthesized: _, }) => { any_over_expr(elt, func) @@ -197,6 +216,7 @@ pub fn any_over_expr(expr: &Expr, func: &dyn Fn(&Expr) -> bool) -> bool { value, generators, range: _, + node_index: _, }) => { any_over_expr(key, func) || any_over_expr(value, func) @@ -206,15 +226,33 @@ pub fn any_over_expr(expr: &Expr, func: &dyn Fn(&Expr) -> bool) -> bool { || generator.ifs.iter().any(|expr| any_over_expr(expr, func)) }) } - Expr::Await(ast::ExprAwait { value, range: _ }) - | Expr::YieldFrom(ast::ExprYieldFrom { value, range: _ }) + Expr::Await(ast::ExprAwait { + value, + range: _, + node_index: _, + }) + | Expr::YieldFrom(ast::ExprYieldFrom { + value, + range: _, + node_index: _, + }) | Expr::Attribute(ast::ExprAttribute { - value, range: _, .. + value, + range: _, + node_index: _, + .. }) | Expr::Starred(ast::ExprStarred { - value, range: _, .. + value, + range: _, + node_index: _, + .. }) => any_over_expr(value, func), - Expr::Yield(ast::ExprYield { value, range: _ }) => value + Expr::Yield(ast::ExprYield { + value, + range: _, + node_index: _, + }) => value .as_ref() .is_some_and(|value| any_over_expr(value, func)), Expr::Compare(ast::ExprCompare { @@ -224,6 +262,7 @@ pub fn any_over_expr(expr: &Expr, func: &dyn Fn(&Expr) -> bool) -> bool { func: call_func, arguments, range: _, + node_index: _, }) => { any_over_expr(call_func, func) // Note that this is the evaluation order but not necessarily the declaration order @@ -241,6 +280,7 @@ pub fn any_over_expr(expr: &Expr, func: &dyn Fn(&Expr) -> bool) -> bool { upper, step, range: _, + node_index: _, }) => { lower .as_ref() @@ -284,11 +324,17 @@ pub fn any_over_type_param(type_param: &TypeParam, func: &dyn Fn(&Expr) -> bool) pub fn any_over_pattern(pattern: &Pattern, func: &dyn Fn(&Expr) -> bool) -> bool { match pattern { - Pattern::MatchValue(ast::PatternMatchValue { value, range: _ }) => { - any_over_expr(value, func) - } + Pattern::MatchValue(ast::PatternMatchValue { + value, + range: _, + node_index: _, + }) => any_over_expr(value, func), Pattern::MatchSingleton(_) => false, - Pattern::MatchSequence(ast::PatternMatchSequence { patterns, range: _ }) => patterns + Pattern::MatchSequence(ast::PatternMatchSequence { + patterns, + range: _, + node_index: _, + }) => patterns .iter() .any(|pattern| any_over_pattern(pattern, func)), Pattern::MatchMapping(ast::PatternMatchMapping { keys, patterns, .. }) => { @@ -312,7 +358,11 @@ pub fn any_over_pattern(pattern: &Pattern, func: &dyn Fn(&Expr) -> bool) -> bool Pattern::MatchAs(ast::PatternMatchAs { pattern, .. }) => pattern .as_ref() .is_some_and(|pattern| any_over_pattern(pattern, func)), - Pattern::MatchOr(ast::PatternMatchOr { patterns, range: _ }) => patterns + Pattern::MatchOr(ast::PatternMatchOr { + patterns, + range: _, + node_index: _, + }) => patterns .iter() .any(|pattern| any_over_pattern(pattern, func)), } @@ -395,12 +445,18 @@ pub fn any_over_stmt(stmt: &Stmt, func: &dyn Fn(&Expr) -> bool) -> bool { .iter() .any(|decorator| any_over_expr(&decorator.expression, func)) } - Stmt::Return(ast::StmtReturn { value, range: _ }) => value + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) => value .as_ref() .is_some_and(|value| any_over_expr(value, func)), - Stmt::Delete(ast::StmtDelete { targets, range: _ }) => { - targets.iter().any(|expr| any_over_expr(expr, func)) - } + Stmt::Delete(ast::StmtDelete { + targets, + range: _, + node_index: _, + }) => targets.iter().any(|expr| any_over_expr(expr, func)), Stmt::TypeAlias(ast::StmtTypeAlias { name, type_params, @@ -450,12 +506,14 @@ pub fn any_over_stmt(stmt: &Stmt, func: &dyn Fn(&Expr) -> bool) -> bool { body, orelse, range: _, + node_index: _, }) => any_over_expr(test, func) || any_over_body(body, func) || any_over_body(orelse, func), Stmt::If(ast::StmtIf { test, body, elif_else_clauses, range: _, + node_index: _, }) => { any_over_expr(test, func) || any_over_body(body, func) @@ -480,6 +538,7 @@ pub fn any_over_stmt(stmt: &Stmt, func: &dyn Fn(&Expr) -> bool) -> bool { exc, cause, range: _, + node_index: _, }) => { exc.as_ref().is_some_and(|value| any_over_expr(value, func)) || cause @@ -493,6 +552,7 @@ pub fn any_over_stmt(stmt: &Stmt, func: &dyn Fn(&Expr) -> bool) -> bool { finalbody, is_star: _, range: _, + node_index: _, }) => { any_over_body(body, func) || handlers.iter().any(|handler| { @@ -511,6 +571,7 @@ pub fn any_over_stmt(stmt: &Stmt, func: &dyn Fn(&Expr) -> bool) -> bool { test, msg, range: _, + node_index: _, }) => { any_over_expr(test, func) || msg.as_ref().is_some_and(|value| any_over_expr(value, func)) @@ -519,6 +580,7 @@ pub fn any_over_stmt(stmt: &Stmt, func: &dyn Fn(&Expr) -> bool) -> bool { subject, cases, range: _, + node_index: _, }) => { any_over_expr(subject, func) || cases.iter().any(|case| { @@ -527,6 +589,7 @@ pub fn any_over_stmt(stmt: &Stmt, func: &dyn Fn(&Expr) -> bool) -> bool { guard, body, range: _, + node_index: _, } = case; any_over_pattern(pattern, func) || guard.as_ref().is_some_and(|expr| any_over_expr(expr, func)) @@ -537,7 +600,11 @@ pub fn any_over_stmt(stmt: &Stmt, func: &dyn Fn(&Expr) -> bool) -> bool { Stmt::ImportFrom(_) => false, Stmt::Global(_) => false, Stmt::Nonlocal(_) => false, - Stmt::Expr(ast::StmtExpr { value, range: _ }) => any_over_expr(value, func), + Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) => any_over_expr(value, func), Stmt::Pass(_) | Stmt::Break(_) | Stmt::Continue(_) => false, Stmt::IpyEscapeCommand(_) => false, } @@ -957,6 +1024,7 @@ impl<'a> StatementVisitor<'a> for RaiseStatementVisitor<'a> { exc, cause, range: _, + node_index: _, }) => { self.raises .push((stmt.range(), exc.as_deref(), cause.as_deref())); @@ -1026,7 +1094,12 @@ impl Visitor<'_> for AwaitVisitor { /// Return `true` if a `Stmt` is a docstring. pub fn is_docstring_stmt(stmt: &Stmt) -> bool { - if let Stmt::Expr(ast::StmtExpr { value, range: _ }) = stmt { + if let Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) = stmt + { value.is_string_literal_expr() } else { false @@ -1039,7 +1112,12 @@ pub fn on_conditional_branch<'a>(parents: &mut impl Iterator) - if matches!(parent, Stmt::If(_) | Stmt::While(_) | Stmt::Match(_)) { return true; } - if let Stmt::Expr(ast::StmtExpr { value, range: _ }) = parent { + if let Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) = parent + { if value.is_if_expr() { return true; } @@ -1480,6 +1558,7 @@ pub fn pep_604_optional(expr: &Expr) -> Expr { op: Operator::BitOr, right: Box::new(Expr::NoneLiteral(ast::ExprNoneLiteral::default())), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), } .into() } @@ -1491,6 +1570,7 @@ pub fn pep_604_union(elts: &[Expr]) -> Expr { elts: vec![], ctx: ExprContext::Load, range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), parenthesized: true, }), [Expr::Tuple(ast::ExprTuple { elts, .. })] => pep_604_union(elts), @@ -1500,6 +1580,7 @@ pub fn pep_604_union(elts: &[Expr]) -> Expr { op: Operator::BitOr, right: Box::new(pep_604_union(&[elt.clone()])), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }), } } @@ -1510,11 +1591,13 @@ pub fn typing_optional(elt: Expr, binding: Name) -> Expr { value: Box::new(Expr::Name(ast::ExprName { id: binding, range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), ctx: ExprContext::Load, })), slice: Box::new(elt), ctx: ExprContext::Load, range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }) } @@ -1527,16 +1610,19 @@ pub fn typing_union(elts: &[Expr], binding: Name) -> Expr { value: Box::new(Expr::Name(ast::ExprName { id: binding, range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), ctx: ExprContext::Load, })), slice: Box::new(Expr::Tuple(ast::ExprTuple { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), elts: elts.to_vec(), ctx: ExprContext::Load, parenthesized: false, })), ctx: ExprContext::Load, range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }) } @@ -1624,9 +1710,9 @@ mod tests { use crate::helpers::{any_over_stmt, any_over_type_param, resolve_imported_module_path}; use crate::{ - Expr, ExprContext, ExprName, ExprNumberLiteral, Identifier, Int, Number, Stmt, - StmtTypeAlias, TypeParam, TypeParamParamSpec, TypeParamTypeVar, TypeParamTypeVarTuple, - TypeParams, + AtomicNodeIndex, Expr, ExprContext, ExprName, ExprNumberLiteral, Identifier, Int, Number, + Stmt, StmtTypeAlias, TypeParam, TypeParamParamSpec, TypeParamTypeVar, + TypeParamTypeVarTuple, TypeParams, }; #[test] @@ -1669,28 +1755,34 @@ mod tests { let name = Expr::Name(ExprName { id: "x".into(), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), ctx: ExprContext::Load, }); let constant_one = Expr::NumberLiteral(ExprNumberLiteral { value: Number::Int(Int::from(1u8)), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }); let constant_two = Expr::NumberLiteral(ExprNumberLiteral { value: Number::Int(Int::from(2u8)), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }); let constant_three = Expr::NumberLiteral(ExprNumberLiteral { value: Number::Int(Int::from(3u8)), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }); let type_var_one = TypeParam::TypeVar(TypeParamTypeVar { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), bound: Some(Box::new(constant_one.clone())), default: None, name: Identifier::new("x", TextRange::default()), }); let type_var_two = TypeParam::TypeVar(TypeParamTypeVar { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), bound: None, default: Some(Box::new(constant_two.clone())), name: Identifier::new("x", TextRange::default()), @@ -1700,9 +1792,11 @@ mod tests { type_params: Some(Box::new(TypeParams { type_params: vec![type_var_one, type_var_two], range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), })), value: Box::new(constant_three.clone()), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }); assert!(!any_over_stmt(&type_alias, &|expr| { seen.borrow_mut().push(expr.clone()); @@ -1718,6 +1812,7 @@ mod tests { fn any_over_type_param_type_var() { let type_var_no_bound = TypeParam::TypeVar(TypeParamTypeVar { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), bound: None, default: None, name: Identifier::new("x", TextRange::default()), @@ -1727,10 +1822,12 @@ mod tests { let constant = Expr::NumberLiteral(ExprNumberLiteral { value: Number::Int(Int::ONE), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }); let type_var_with_bound = TypeParam::TypeVar(TypeParamTypeVar { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), bound: Some(Box::new(constant.clone())), default: None, name: Identifier::new("x", TextRange::default()), @@ -1748,6 +1845,7 @@ mod tests { let type_var_with_default = TypeParam::TypeVar(TypeParamTypeVar { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), default: Some(Box::new(constant.clone())), bound: None, name: Identifier::new("x", TextRange::default()), @@ -1768,6 +1866,7 @@ mod tests { fn any_over_type_param_type_var_tuple() { let type_var_tuple = TypeParam::TypeVarTuple(TypeParamTypeVarTuple { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), name: Identifier::new("x", TextRange::default()), default: None, }); @@ -1779,10 +1878,12 @@ mod tests { let constant = Expr::NumberLiteral(ExprNumberLiteral { value: Number::Int(Int::ONE), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }); let type_var_tuple_with_default = TypeParam::TypeVarTuple(TypeParamTypeVarTuple { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), default: Some(Box::new(constant.clone())), name: Identifier::new("x", TextRange::default()), }); @@ -1802,6 +1903,7 @@ mod tests { fn any_over_type_param_param_spec() { let type_param_spec = TypeParam::ParamSpec(TypeParamParamSpec { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), name: Identifier::new("x", TextRange::default()), default: None, }); @@ -1813,10 +1915,12 @@ mod tests { let constant = Expr::NumberLiteral(ExprNumberLiteral { value: Number::Int(Int::ONE), range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }); let param_spec_with_default = TypeParam::TypeVarTuple(TypeParamTypeVarTuple { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), default: Some(Box::new(constant.clone())), name: Identifier::new("x", TextRange::default()), }); diff --git a/crates/ruff_python_ast/src/lib.rs b/crates/ruff_python_ast/src/lib.rs index 7983ccee82..eddcb953ce 100644 --- a/crates/ruff_python_ast/src/lib.rs +++ b/crates/ruff_python_ast/src/lib.rs @@ -4,6 +4,7 @@ use std::path::Path; pub use expression::*; pub use generated::*; pub use int::*; +pub use node_index::*; pub use nodes::*; pub use operator_precedence::*; pub use python_version::*; @@ -17,6 +18,7 @@ pub mod identifier; mod int; pub mod name; mod node; +mod node_index; mod nodes; pub mod operator_precedence; pub mod parenthesize; diff --git a/crates/ruff_python_ast/src/node.rs b/crates/ruff_python_ast/src/node.rs index 52912c6d66..b9b637b2b4 100644 --- a/crates/ruff_python_ast/src/node.rs +++ b/crates/ruff_python_ast/src/node.rs @@ -13,6 +13,7 @@ impl ast::ElifElseClause { { let ast::ElifElseClause { range: _, + node_index: _, test, body, } = self; @@ -28,7 +29,11 @@ impl ast::ExprDict { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::ExprDict { items, range: _ } = self; + let ast::ExprDict { + items, + range: _, + node_index: _, + } = self; for ast::DictItem { key, value } in items { if let Some(key) = key { @@ -48,6 +53,7 @@ impl ast::ExprBoolOp { op, values, range: _, + node_index: _, } = self; match values.as_slice() { [left, rest @ ..] => { @@ -74,6 +80,7 @@ impl ast::ExprCompare { ops, comparators, range: _, + node_index: _, } = self; visitor.visit_expr(left); @@ -121,7 +128,11 @@ impl ast::InterpolatedStringLiteralElement { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::InterpolatedStringLiteralElement { range: _, value: _ } = self; + let ast::InterpolatedStringLiteralElement { + range: _, + node_index: _, + value: _, + } = self; } } @@ -130,7 +141,11 @@ impl ast::ExprFString { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::ExprFString { value, range: _ } = self; + let ast::ExprFString { + value, + range: _, + node_index: _, + } = self; for f_string_part in value { match f_string_part { @@ -150,7 +165,11 @@ impl ast::ExprTString { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::ExprTString { value, range: _ } = self; + let ast::ExprTString { + value, + range: _, + node_index: _, + } = self; for t_string_part in value { match t_string_part { @@ -173,7 +192,11 @@ impl ast::ExprStringLiteral { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::ExprStringLiteral { value, range: _ } = self; + let ast::ExprStringLiteral { + value, + range: _, + node_index: _, + } = self; for string_literal in value { visitor.visit_string_literal(string_literal); @@ -186,7 +209,11 @@ impl ast::ExprBytesLiteral { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::ExprBytesLiteral { value, range: _ } = self; + let ast::ExprBytesLiteral { + value, + range: _, + node_index: _, + } = self; for bytes_literal in value { visitor.visit_bytes_literal(bytes_literal); @@ -201,6 +228,7 @@ impl ast::ExceptHandlerExceptHandler { { let ast::ExceptHandlerExceptHandler { range: _, + node_index: _, type_, name, body, @@ -222,7 +250,11 @@ impl ast::PatternMatchValue { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::PatternMatchValue { value, range: _ } = self; + let ast::PatternMatchValue { + value, + range: _, + node_index: _, + } = self; visitor.visit_expr(value); } } @@ -232,7 +264,11 @@ impl ast::PatternMatchSingleton { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::PatternMatchSingleton { value, range: _ } = self; + let ast::PatternMatchSingleton { + value, + range: _, + node_index: _, + } = self; visitor.visit_singleton(value); } } @@ -242,7 +278,11 @@ impl ast::PatternMatchSequence { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::PatternMatchSequence { patterns, range: _ } = self; + let ast::PatternMatchSequence { + patterns, + range: _, + node_index: _, + } = self; for pattern in patterns { visitor.visit_pattern(pattern); } @@ -259,6 +299,7 @@ impl ast::PatternMatchMapping { patterns, rest, range: _, + node_index: _, } = self; let mut rest = rest.as_ref(); @@ -289,6 +330,7 @@ impl ast::PatternMatchClass { cls, arguments: parameters, range: _, + node_index: _, } = self; visitor.visit_expr(cls); visitor.visit_pattern_arguments(parameters); @@ -300,7 +342,11 @@ impl ast::PatternMatchStar { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::PatternMatchStar { range: _, name } = self; + let ast::PatternMatchStar { + range: _, + node_index: _, + name, + } = self; if let Some(name) = name { visitor.visit_identifier(name); @@ -316,6 +362,7 @@ impl ast::PatternMatchAs { let ast::PatternMatchAs { pattern, range: _, + node_index: _, name, } = self; if let Some(pattern) = pattern { @@ -333,7 +380,11 @@ impl ast::PatternMatchOr { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::PatternMatchOr { patterns, range: _ } = self; + let ast::PatternMatchOr { + patterns, + range: _, + node_index: _, + } = self; for pattern in patterns { visitor.visit_pattern(pattern); } @@ -347,6 +398,7 @@ impl ast::PatternArguments { { let PatternArguments { range: _, + node_index: _, patterns, keywords, } = self; @@ -368,6 +420,7 @@ impl ast::PatternKeyword { { let PatternKeyword { range: _, + node_index: _, attr, pattern, } = self; @@ -384,6 +437,7 @@ impl ast::Comprehension { { let ast::Comprehension { range: _, + node_index: _, target, iter, ifs, @@ -435,6 +489,7 @@ impl ast::Parameter { { let ast::Parameter { range: _, + node_index: _, name, annotation, } = self; @@ -453,6 +508,7 @@ impl ast::ParameterWithDefault { { let ast::ParameterWithDefault { range: _, + node_index: _, parameter, default, } = self; @@ -470,6 +526,7 @@ impl ast::Keyword { { let ast::Keyword { range: _, + node_index: _, arg, value, } = self; @@ -488,6 +545,7 @@ impl Alias { { let ast::Alias { range: _, + node_index: _, name, asname, } = self; @@ -506,6 +564,7 @@ impl ast::WithItem { { let ast::WithItem { range: _, + node_index: _, context_expr, optional_vars, } = self; @@ -525,6 +584,7 @@ impl ast::MatchCase { { let ast::MatchCase { range: _, + node_index: _, pattern, guard, body, @@ -545,6 +605,7 @@ impl ast::Decorator { { let ast::Decorator { range: _, + node_index: _, expression, } = self; @@ -559,6 +620,7 @@ impl ast::TypeParams { { let ast::TypeParams { range: _, + node_index: _, type_params, } = self; @@ -578,6 +640,7 @@ impl ast::TypeParamTypeVar { default, name, range: _, + node_index: _, } = self; visitor.visit_identifier(name); @@ -598,6 +661,7 @@ impl ast::TypeParamTypeVarTuple { { let ast::TypeParamTypeVarTuple { range: _, + node_index: _, name, default, } = self; @@ -616,6 +680,7 @@ impl ast::TypeParamParamSpec { { let ast::TypeParamParamSpec { range: _, + node_index: _, name, default, } = self; @@ -634,6 +699,7 @@ impl ast::FString { let ast::FString { elements, range: _, + node_index: _, flags: _, } = self; @@ -651,6 +717,7 @@ impl ast::TString { let ast::TString { elements, range: _, + node_index: _, flags: _, } = self; @@ -668,6 +735,7 @@ impl ast::StringLiteral { { let ast::StringLiteral { range: _, + node_index: _, value: _, flags: _, } = self; @@ -682,6 +750,7 @@ impl ast::BytesLiteral { { let ast::BytesLiteral { range: _, + node_index: _, value: _, flags: _, } = self; @@ -694,7 +763,11 @@ impl ast::Identifier { where V: SourceOrderVisitor<'a> + ?Sized, { - let ast::Identifier { range: _, id: _ } = self; + let ast::Identifier { + range: _, + node_index: _, + id: _, + } = self; } } diff --git a/crates/ruff_python_ast/src/node_index.rs b/crates/ruff_python_ast/src/node_index.rs new file mode 100644 index 0000000000..d7d4e8614c --- /dev/null +++ b/crates/ruff_python_ast/src/node_index.rs @@ -0,0 +1,98 @@ +use std::sync::atomic::{AtomicU32, Ordering}; + +/// An AST node that has an index. +pub trait HasNodeIndex { + /// Returns the [`AtomicNodeIndex`] for this node. + fn node_index(&self) -> &AtomicNodeIndex; +} + +impl HasNodeIndex for &T +where + T: HasNodeIndex, +{ + fn node_index(&self) -> &AtomicNodeIndex { + T::node_index(*self) + } +} + +/// A unique index for a node within an AST. +/// +/// This type is interiorly mutable to allow assigning node indices +/// on-demand after parsing. +#[derive(Default)] +pub struct AtomicNodeIndex(AtomicU32); + +impl AtomicNodeIndex { + /// Returns a placeholder `AtomicNodeIndex`. + pub fn dummy() -> AtomicNodeIndex { + AtomicNodeIndex(AtomicU32::from(u32::MAX)) + } + + /// Load the current value of the `AtomicNodeIndex`. + pub fn load(&self) -> NodeIndex { + NodeIndex(self.0.load(Ordering::Relaxed)) + } + + /// Set the value of the `AtomicNodeIndex`. + pub fn set(&self, value: u32) { + self.0.store(value, Ordering::Relaxed); + } +} + +/// A unique index for a node within an AST. +#[derive(PartialEq, Eq, Debug, PartialOrd, Ord, Clone, Copy, Hash)] +pub struct NodeIndex(u32); + +impl NodeIndex { + pub fn as_usize(self) -> usize { + self.0 as _ + } +} + +impl From for AtomicNodeIndex { + fn from(value: u32) -> Self { + AtomicNodeIndex(AtomicU32::from(value)) + } +} + +impl std::fmt::Debug for AtomicNodeIndex { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + if *self == AtomicNodeIndex::dummy() { + f.debug_tuple("AtomicNodeIndex").finish_non_exhaustive() + } else { + f.debug_tuple("AtomicNodeIndex").field(&self.0).finish() + } + } +} + +impl std::hash::Hash for AtomicNodeIndex { + fn hash(&self, state: &mut H) { + self.load().hash(state); + } +} + +impl PartialOrd for AtomicNodeIndex { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + +impl Ord for AtomicNodeIndex { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + self.load().cmp(&other.load()) + } +} + +impl Eq for AtomicNodeIndex {} + +impl PartialEq for AtomicNodeIndex { + fn eq(&self, other: &Self) -> bool { + self.load() == other.load() + } +} + +impl Clone for AtomicNodeIndex { + fn clone(&self) -> Self { + Self(AtomicU32::from(self.0.load(Ordering::Relaxed))) + } +} diff --git a/crates/ruff_python_ast/src/nodes.rs b/crates/ruff_python_ast/src/nodes.rs index 54235b2bbe..9520765197 100644 --- a/crates/ruff_python_ast/src/nodes.rs +++ b/crates/ruff_python_ast/src/nodes.rs @@ -1,5 +1,6 @@ #![allow(clippy::derive_partial_eq_without_eq)] +use crate::AtomicNodeIndex; use crate::generated::{ ExprBytesLiteral, ExprDict, ExprFString, ExprList, ExprName, ExprSet, ExprStringLiteral, ExprTString, ExprTuple, StmtClassDef, @@ -48,6 +49,7 @@ impl StmtClassDef { #[derive(Clone, Debug, PartialEq)] pub struct ElifElseClause { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub test: Option, pub body: Vec, } @@ -316,6 +318,7 @@ impl<'a> IntoIterator for &'a ExprSet { #[derive(Clone, Debug, PartialEq)] pub struct InterpolatedStringFormatSpec { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub elements: InterpolatedStringElements, } @@ -323,6 +326,7 @@ pub struct InterpolatedStringFormatSpec { #[derive(Clone, Debug, PartialEq)] pub struct InterpolatedElement { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub expression: Box, pub debug_text: Option, pub conversion: ConversionFlag, @@ -333,6 +337,7 @@ pub struct InterpolatedElement { #[derive(Clone, Debug, PartialEq)] pub struct InterpolatedStringLiteralElement { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub value: Box, } @@ -1105,6 +1110,7 @@ impl fmt::Debug for TStringFlags { #[derive(Clone, Debug, PartialEq)] pub struct FString { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub elements: InterpolatedStringElements, pub flags: FStringFlags, } @@ -1112,6 +1118,7 @@ pub struct FString { impl From for Expr { fn from(payload: FString) -> Self { ExprFString { + node_index: payload.node_index.clone(), range: payload.range, value: FStringValue::single(payload), } @@ -1183,6 +1190,7 @@ impl fmt::Debug for InterpolatedStringElements { #[derive(Clone, Debug, PartialEq)] pub struct TString { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub elements: InterpolatedStringElements, pub flags: TStringFlags, } @@ -1190,6 +1198,7 @@ pub struct TString { impl From for Expr { fn from(payload: TString) -> Self { ExprTString { + node_index: payload.node_index.clone(), range: payload.range, value: TStringValue::single(payload), } @@ -1553,6 +1562,7 @@ impl fmt::Debug for StringLiteralFlags { #[derive(Clone, Debug, PartialEq)] pub struct StringLiteral { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub value: Box, pub flags: StringLiteralFlags, } @@ -1576,6 +1586,7 @@ impl StringLiteral { Self { range, value: "".into(), + node_index: AtomicNodeIndex::dummy(), flags: StringLiteralFlags::empty().with_invalid(), } } @@ -1595,6 +1606,7 @@ impl From for Expr { fn from(payload: StringLiteral) -> Self { ExprStringLiteral { range: payload.range, + node_index: AtomicNodeIndex::dummy(), value: StringLiteralValue::single(payload), } .into() @@ -1941,6 +1953,7 @@ impl fmt::Debug for BytesLiteralFlags { #[derive(Clone, Debug, PartialEq)] pub struct BytesLiteral { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub value: Box<[u8]>, pub flags: BytesLiteralFlags, } @@ -1964,6 +1977,7 @@ impl BytesLiteral { Self { range, value: Box::new([]), + node_index: AtomicNodeIndex::dummy(), flags: BytesLiteralFlags::empty().with_invalid(), } } @@ -1973,6 +1987,7 @@ impl From for Expr { fn from(payload: BytesLiteral) -> Self { ExprBytesLiteral { range: payload.range, + node_index: AtomicNodeIndex::dummy(), value: BytesLiteralValue::single(payload), } .into() @@ -2573,6 +2588,7 @@ impl fmt::Display for CmpOp { #[derive(Clone, Debug, PartialEq)] pub struct Comprehension { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub target: Expr, pub iter: Expr, pub ifs: Vec, @@ -2583,6 +2599,7 @@ pub struct Comprehension { #[derive(Clone, Debug, PartialEq)] pub struct ExceptHandlerExceptHandler { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub type_: Option>, pub name: Option, pub body: Vec, @@ -2592,6 +2609,7 @@ pub struct ExceptHandlerExceptHandler { #[derive(Clone, Debug, PartialEq)] pub struct Parameter { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub name: Identifier, pub annotation: Option>, } @@ -2610,6 +2628,7 @@ impl Parameter { #[derive(Clone, Debug, PartialEq)] pub struct Keyword { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub arg: Option, pub value: Expr, } @@ -2618,6 +2637,7 @@ pub struct Keyword { #[derive(Clone, Debug, PartialEq)] pub struct Alias { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub name: Identifier, pub asname: Option, } @@ -2626,6 +2646,7 @@ pub struct Alias { #[derive(Clone, Debug, PartialEq)] pub struct WithItem { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub context_expr: Expr, pub optional_vars: Option>, } @@ -2634,6 +2655,7 @@ pub struct WithItem { #[derive(Clone, Debug, PartialEq)] pub struct MatchCase { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub pattern: Pattern, pub guard: Option>, pub body: Vec, @@ -2654,16 +2676,19 @@ impl Pattern { pattern, name, range, + node_index, }) => match pattern { Some(pattern) => pattern.irrefutable_pattern(), None => match name { Some(name) => Some(IrrefutablePattern { kind: IrrefutablePatternKind::Name(name.id.clone()), range: *range, + node_index: node_index.clone(), }), None => Some(IrrefutablePattern { kind: IrrefutablePatternKind::Wildcard, range: *range, + node_index: node_index.clone(), }), }, }, @@ -2701,6 +2726,7 @@ impl Pattern { pub struct IrrefutablePattern { pub kind: IrrefutablePatternKind, pub range: TextRange, + pub node_index: AtomicNodeIndex, } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -2713,6 +2739,7 @@ pub enum IrrefutablePatternKind { #[derive(Clone, Debug, PartialEq)] pub struct PatternMatchValue { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub value: Box, } @@ -2720,6 +2747,7 @@ pub struct PatternMatchValue { #[derive(Clone, Debug, PartialEq)] pub struct PatternMatchSingleton { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub value: Singleton, } @@ -2727,6 +2755,7 @@ pub struct PatternMatchSingleton { #[derive(Clone, Debug, PartialEq)] pub struct PatternMatchSequence { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub patterns: Vec, } @@ -2734,6 +2763,7 @@ pub struct PatternMatchSequence { #[derive(Clone, Debug, PartialEq)] pub struct PatternMatchMapping { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub keys: Vec, pub patterns: Vec, pub rest: Option, @@ -2743,6 +2773,7 @@ pub struct PatternMatchMapping { #[derive(Clone, Debug, PartialEq)] pub struct PatternMatchClass { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub cls: Box, pub arguments: PatternArguments, } @@ -2754,6 +2785,7 @@ pub struct PatternMatchClass { #[derive(Clone, Debug, PartialEq)] pub struct PatternArguments { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub patterns: Vec, pub keywords: Vec, } @@ -2765,6 +2797,7 @@ pub struct PatternArguments { #[derive(Clone, Debug, PartialEq)] pub struct PatternKeyword { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub attr: Identifier, pub pattern: Pattern, } @@ -2773,6 +2806,7 @@ pub struct PatternKeyword { #[derive(Clone, Debug, PartialEq)] pub struct PatternMatchStar { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub name: Option, } @@ -2780,6 +2814,7 @@ pub struct PatternMatchStar { #[derive(Clone, Debug, PartialEq)] pub struct PatternMatchAs { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub pattern: Option>, pub name: Option, } @@ -2788,6 +2823,7 @@ pub struct PatternMatchAs { #[derive(Clone, Debug, PartialEq)] pub struct PatternMatchOr { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub patterns: Vec, } @@ -2813,6 +2849,7 @@ impl TypeParam { #[derive(Clone, Debug, PartialEq)] pub struct TypeParamTypeVar { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub name: Identifier, pub bound: Option>, pub default: Option>, @@ -2822,6 +2859,7 @@ pub struct TypeParamTypeVar { #[derive(Clone, Debug, PartialEq)] pub struct TypeParamParamSpec { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub name: Identifier, pub default: Option>, } @@ -2830,6 +2868,7 @@ pub struct TypeParamParamSpec { #[derive(Clone, Debug, PartialEq)] pub struct TypeParamTypeVarTuple { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub name: Identifier, pub default: Option>, } @@ -2838,6 +2877,7 @@ pub struct TypeParamTypeVarTuple { #[derive(Clone, Debug, PartialEq)] pub struct Decorator { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub expression: Expr, } @@ -2911,6 +2951,7 @@ impl Ranged for AnyParameterRef<'_> { #[derive(Clone, Debug, PartialEq, Default)] pub struct Parameters { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub posonlyargs: Vec, pub args: Vec, pub vararg: Option>, @@ -2945,6 +2986,7 @@ impl Parameters { pub fn len(&self) -> usize { let Parameters { range: _, + node_index: _, posonlyargs, args, vararg, @@ -2993,6 +3035,7 @@ impl<'a> ParametersIterator<'a> { fn new(parameters: &'a Parameters) -> Self { let Parameters { range: _, + node_index: _, posonlyargs, args, vararg, @@ -3127,6 +3170,7 @@ impl<'a> IntoIterator for &'a Box { #[derive(Clone, Debug, PartialEq)] pub struct ParameterWithDefault { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub parameter: Parameter, pub default: Option>, } @@ -3170,6 +3214,7 @@ impl ParameterWithDefault { #[derive(Clone, Debug, PartialEq)] pub struct Arguments { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub args: Box<[Expr]>, pub keywords: Box<[Keyword]>, } @@ -3319,6 +3364,7 @@ impl Arguments { #[derive(Clone, Debug, PartialEq)] pub struct TypeParams { pub range: TextRange, + pub node_index: AtomicNodeIndex, pub type_params: Vec, } @@ -3433,6 +3479,7 @@ impl IpyEscapeKind { pub struct Identifier { pub id: Name, pub range: TextRange, + pub node_index: AtomicNodeIndex, } impl Identifier { @@ -3440,6 +3487,7 @@ impl Identifier { pub fn new(id: impl Into, range: TextRange) -> Self { Self { id: id.into(), + node_index: AtomicNodeIndex::dummy(), range, } } @@ -3527,45 +3575,44 @@ mod tests { #[test] #[cfg(target_pointer_width = "64")] fn size() { - assert!(std::mem::size_of::() <= 120); - assert!(std::mem::size_of::() <= 120); - assert!(std::mem::size_of::() <= 104); - assert!(std::mem::size_of::() <= 112); - assert!(std::mem::size_of::() <= 32); - assert!(matches!(std::mem::size_of::(), 88)); - - assert_eq!(std::mem::size_of::(), 64); - assert_eq!(std::mem::size_of::(), 56); - assert_eq!(std::mem::size_of::(), 16); + assert_eq!(std::mem::size_of::(), 128); + assert_eq!(std::mem::size_of::(), 128); + assert_eq!(std::mem::size_of::(), 120); + assert_eq!(std::mem::size_of::(), 112); + assert_eq!(std::mem::size_of::(), 40); + assert_eq!(std::mem::size_of::(), 104); + assert_eq!(std::mem::size_of::(), 80); + assert_eq!(std::mem::size_of::(), 64); + assert_eq!(std::mem::size_of::(), 24); assert_eq!(std::mem::size_of::(), 32); assert_eq!(std::mem::size_of::(), 40); - assert_eq!(std::mem::size_of::(), 12); - assert_eq!(std::mem::size_of::(), 40); - assert_eq!(std::mem::size_of::(), 56); - assert_eq!(std::mem::size_of::(), 48); - assert_eq!(std::mem::size_of::(), 32); - assert_eq!(std::mem::size_of::(), 48); - assert_eq!(std::mem::size_of::(), 8); - assert!(matches!(std::mem::size_of::(), 48)); + assert_eq!(std::mem::size_of::(), 16); + assert_eq!(std::mem::size_of::(), 48); + assert_eq!(std::mem::size_of::(), 72); + assert_eq!(std::mem::size_of::(), 56); + assert_eq!(std::mem::size_of::(), 40); + assert_eq!(std::mem::size_of::(), 56); + assert_eq!(std::mem::size_of::(), 12); + assert_eq!(std::mem::size_of::(), 56); assert_eq!(std::mem::size_of::(), 48); - assert_eq!(std::mem::size_of::(), 32); + assert_eq!(std::mem::size_of::(), 40); assert_eq!(std::mem::size_of::(), 32); - assert_eq!(std::mem::size_of::(), 24); + assert_eq!(std::mem::size_of::(), 32); assert_eq!(std::mem::size_of::(), 40); - assert_eq!(std::mem::size_of::(), 40); + assert_eq!(std::mem::size_of::(), 48); assert_eq!(std::mem::size_of::(), 40); - assert_eq!(std::mem::size_of::(), 24); - assert_eq!(std::mem::size_of::(), 8); - assert_eq!(std::mem::size_of::(), 32); - assert_eq!(std::mem::size_of::(), 32); - assert_eq!(std::mem::size_of::(), 40); - assert_eq!(std::mem::size_of::(), 32); + assert_eq!(std::mem::size_of::(), 32); + assert_eq!(std::mem::size_of::(), 12); + assert_eq!(std::mem::size_of::(), 40); + assert_eq!(std::mem::size_of::(), 40); + assert_eq!(std::mem::size_of::(), 48); + assert_eq!(std::mem::size_of::(), 40); assert_eq!(std::mem::size_of::(), 24); - assert_eq!(std::mem::size_of::(), 56); + assert_eq!(std::mem::size_of::(), 64); assert_eq!(std::mem::size_of::(), 32); assert_eq!(std::mem::size_of::(), 40); assert_eq!(std::mem::size_of::(), 24); - assert_eq!(std::mem::size_of::(), 16); - assert_eq!(std::mem::size_of::(), 16); + assert_eq!(std::mem::size_of::(), 24); + assert_eq!(std::mem::size_of::(), 24); } } diff --git a/crates/ruff_python_ast/src/relocate.rs b/crates/ruff_python_ast/src/relocate.rs index c985003069..eea26d7a37 100644 --- a/crates/ruff_python_ast/src/relocate.rs +++ b/crates/ruff_python_ast/src/relocate.rs @@ -87,10 +87,10 @@ impl Transformer for Relocator { Expr::BooleanLiteral(ast::ExprBooleanLiteral { range, .. }) => { *range = self.range; } - Expr::NoneLiteral(ast::ExprNoneLiteral { range }) => { + Expr::NoneLiteral(ast::ExprNoneLiteral { range, .. }) => { *range = self.range; } - Expr::EllipsisLiteral(ast::ExprEllipsisLiteral { range }) => { + Expr::EllipsisLiteral(ast::ExprEllipsisLiteral { range, .. }) => { *range = self.range; } Expr::Attribute(ast::ExprAttribute { range, .. }) => { diff --git a/crates/ruff_python_ast/src/visitor.rs b/crates/ruff_python_ast/src/visitor.rs index 1e8c5ebf36..786a7c643f 100644 --- a/crates/ruff_python_ast/src/visitor.rs +++ b/crates/ruff_python_ast/src/visitor.rs @@ -172,18 +172,27 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { } visitor.visit_body(body); } - Stmt::Return(ast::StmtReturn { value, range: _ }) => { + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) => { if let Some(expr) = value { visitor.visit_expr(expr); } } - Stmt::Delete(ast::StmtDelete { targets, range: _ }) => { + Stmt::Delete(ast::StmtDelete { + targets, + range: _, + node_index: _, + }) => { for expr in targets { visitor.visit_expr(expr); } } Stmt::TypeAlias(ast::StmtTypeAlias { range: _, + node_index: _, name, type_params, value, @@ -205,6 +214,7 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { op, value, range: _, + node_index: _, }) => { visitor.visit_expr(value); visitor.visit_operator(op); @@ -239,6 +249,7 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { body, orelse, range: _, + node_index: _, }) => { visitor.visit_expr(test); visitor.visit_body(body); @@ -249,6 +260,7 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { body, elif_else_clauses, range: _, + node_index: _, }) => { visitor.visit_expr(test); visitor.visit_body(body); @@ -269,6 +281,7 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { subject, cases, range: _, + node_index: _, }) => { visitor.visit_expr(subject); for match_case in cases { @@ -279,6 +292,7 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { exc, cause, range: _, + node_index: _, }) => { if let Some(expr) = exc { visitor.visit_expr(expr); @@ -294,6 +308,7 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { finalbody, is_star: _, range: _, + node_index: _, }) => { visitor.visit_body(body); for except_handler in handlers { @@ -306,13 +321,18 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { test, msg, range: _, + node_index: _, }) => { visitor.visit_expr(test); if let Some(expr) = msg { visitor.visit_expr(expr); } } - Stmt::Import(ast::StmtImport { names, range: _ }) => { + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => { for alias in names { visitor.visit_alias(alias); } @@ -324,7 +344,11 @@ pub fn walk_stmt<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, stmt: &'a Stmt) { } Stmt::Global(_) => {} Stmt::Nonlocal(_) => {} - Stmt::Expr(ast::StmtExpr { value, range: _ }) => visitor.visit_expr(value), + Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) => visitor.visit_expr(value), Stmt::Pass(_) | Stmt::Break(_) | Stmt::Continue(_) | Stmt::IpyEscapeCommand(_) => {} } } @@ -343,6 +367,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { op, values, range: _, + node_index: _, }) => { visitor.visit_bool_op(op); for expr in values { @@ -353,6 +378,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { target, value, range: _, + node_index: _, }) => { visitor.visit_expr(value); visitor.visit_expr(target); @@ -362,6 +388,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { op, right, range: _, + node_index: _, }) => { visitor.visit_expr(left); visitor.visit_operator(op); @@ -371,6 +398,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { op, operand, range: _, + node_index: _, }) => { visitor.visit_unary_op(op); visitor.visit_expr(operand); @@ -379,6 +407,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { parameters, body, range: _, + node_index: _, }) => { if let Some(parameters) = parameters { visitor.visit_parameters(parameters); @@ -390,12 +419,17 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { body, orelse, range: _, + node_index: _, }) => { visitor.visit_expr(test); visitor.visit_expr(body); visitor.visit_expr(orelse); } - Expr::Dict(ast::ExprDict { items, range: _ }) => { + Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) => { for ast::DictItem { key, value } in items { if let Some(key) = key { visitor.visit_expr(key); @@ -403,7 +437,11 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { visitor.visit_expr(value); } } - Expr::Set(ast::ExprSet { elts, range: _ }) => { + Expr::Set(ast::ExprSet { + elts, + range: _, + node_index: _, + }) => { for expr in elts { visitor.visit_expr(expr); } @@ -412,6 +450,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { elt, generators, range: _, + node_index: _, }) => { for comprehension in generators { visitor.visit_comprehension(comprehension); @@ -422,6 +461,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { elt, generators, range: _, + node_index: _, }) => { for comprehension in generators { visitor.visit_comprehension(comprehension); @@ -433,6 +473,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { value, generators, range: _, + node_index: _, }) => { for comprehension in generators { visitor.visit_comprehension(comprehension); @@ -444,6 +485,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { elt, generators, range: _, + node_index: _, parenthesized: _, }) => { for comprehension in generators { @@ -451,18 +493,31 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { } visitor.visit_expr(elt); } - Expr::Await(ast::ExprAwait { value, range: _ }) => visitor.visit_expr(value), - Expr::Yield(ast::ExprYield { value, range: _ }) => { + Expr::Await(ast::ExprAwait { + value, + range: _, + node_index: _, + }) => visitor.visit_expr(value), + Expr::Yield(ast::ExprYield { + value, + range: _, + node_index: _, + }) => { if let Some(expr) = value { visitor.visit_expr(expr); } } - Expr::YieldFrom(ast::ExprYieldFrom { value, range: _ }) => visitor.visit_expr(value), + Expr::YieldFrom(ast::ExprYieldFrom { + value, + range: _, + node_index: _, + }) => visitor.visit_expr(value), Expr::Compare(ast::ExprCompare { left, ops, comparators, range: _, + node_index: _, }) => { visitor.visit_expr(left); for cmp_op in ops { @@ -476,6 +531,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { func, arguments, range: _, + node_index: _, }) => { visitor.visit_expr(func); visitor.visit_arguments(arguments); @@ -524,6 +580,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { slice, ctx, range: _, + node_index: _, }) => { visitor.visit_expr(value); visitor.visit_expr(slice); @@ -533,6 +590,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { value, ctx, range: _, + node_index: _, }) => { visitor.visit_expr(value); visitor.visit_expr_context(ctx); @@ -544,6 +602,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { elts, ctx, range: _, + node_index: _, }) => { for expr in elts { visitor.visit_expr(expr); @@ -554,6 +613,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { elts, ctx, range: _, + node_index: _, parenthesized: _, }) => { for expr in elts { @@ -566,6 +626,7 @@ pub fn walk_expr<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, expr: &'a Expr) { upper, step, range: _, + node_index: _, }) => { if let Some(expr) = lower { visitor.visit_expr(expr); @@ -662,6 +723,7 @@ pub fn walk_type_param<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, type_param: default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = bound { visitor.visit_expr(expr); @@ -674,6 +736,7 @@ pub fn walk_type_param<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, type_param: default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = default { visitor.visit_expr(expr); @@ -683,6 +746,7 @@ pub fn walk_type_param<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, type_param: default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = default { visitor.visit_expr(expr); diff --git a/crates/ruff_python_ast/src/visitor/transformer.rs b/crates/ruff_python_ast/src/visitor/transformer.rs index 07b098eb43..4ceebf619a 100644 --- a/crates/ruff_python_ast/src/visitor/transformer.rs +++ b/crates/ruff_python_ast/src/visitor/transformer.rs @@ -159,18 +159,27 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { } visitor.visit_body(body); } - Stmt::Return(ast::StmtReturn { value, range: _ }) => { + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) => { if let Some(expr) = value { visitor.visit_expr(expr); } } - Stmt::Delete(ast::StmtDelete { targets, range: _ }) => { + Stmt::Delete(ast::StmtDelete { + targets, + range: _, + node_index: _, + }) => { for expr in targets { visitor.visit_expr(expr); } } Stmt::TypeAlias(ast::StmtTypeAlias { range: _, + node_index: _, name, type_params, value, @@ -192,6 +201,7 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { op, value, range: _, + node_index: _, }) => { visitor.visit_expr(value); visitor.visit_operator(op); @@ -226,6 +236,7 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { body, orelse, range: _, + node_index: _, }) => { visitor.visit_expr(test); visitor.visit_body(body); @@ -236,6 +247,7 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { body, elif_else_clauses, range: _, + node_index: _, }) => { visitor.visit_expr(test); visitor.visit_body(body); @@ -253,6 +265,7 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { subject, cases, range: _, + node_index: _, }) => { visitor.visit_expr(subject); for match_case in cases { @@ -263,6 +276,7 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { exc, cause, range: _, + node_index: _, }) => { if let Some(expr) = exc { visitor.visit_expr(expr); @@ -278,6 +292,7 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { finalbody, is_star: _, range: _, + node_index: _, }) => { visitor.visit_body(body); for except_handler in handlers { @@ -290,13 +305,18 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { test, msg, range: _, + node_index: _, }) => { visitor.visit_expr(test); if let Some(expr) = msg { visitor.visit_expr(expr); } } - Stmt::Import(ast::StmtImport { names, range: _ }) => { + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => { for alias in names { visitor.visit_alias(alias); } @@ -308,7 +328,11 @@ pub fn walk_stmt(visitor: &V, stmt: &mut Stmt) { } Stmt::Global(_) => {} Stmt::Nonlocal(_) => {} - Stmt::Expr(ast::StmtExpr { value, range: _ }) => visitor.visit_expr(value), + Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) => visitor.visit_expr(value), Stmt::Pass(_) | Stmt::Break(_) | Stmt::Continue(_) | Stmt::IpyEscapeCommand(_) => {} } } @@ -327,6 +351,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { op, values, range: _, + node_index: _, }) => { visitor.visit_bool_op(op); for expr in values { @@ -337,6 +362,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { target, value, range: _, + node_index: _, }) => { visitor.visit_expr(value); visitor.visit_expr(target); @@ -346,6 +372,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { op, right, range: _, + node_index: _, }) => { visitor.visit_expr(left); visitor.visit_operator(op); @@ -355,6 +382,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { op, operand, range: _, + node_index: _, }) => { visitor.visit_unary_op(op); visitor.visit_expr(operand); @@ -363,6 +391,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { parameters, body, range: _, + node_index: _, }) => { if let Some(parameters) = parameters { visitor.visit_parameters(parameters); @@ -374,12 +403,17 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { body, orelse, range: _, + node_index: _, }) => { visitor.visit_expr(test); visitor.visit_expr(body); visitor.visit_expr(orelse); } - Expr::Dict(ast::ExprDict { items, range: _ }) => { + Expr::Dict(ast::ExprDict { + items, + range: _, + node_index: _, + }) => { for ast::DictItem { key, value } in items { if let Some(key) = key { visitor.visit_expr(key); @@ -387,7 +421,11 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { visitor.visit_expr(value); } } - Expr::Set(ast::ExprSet { elts, range: _ }) => { + Expr::Set(ast::ExprSet { + elts, + range: _, + node_index: _, + }) => { for expr in elts { visitor.visit_expr(expr); } @@ -396,6 +434,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { elt, generators, range: _, + node_index: _, }) => { for comprehension in generators { visitor.visit_comprehension(comprehension); @@ -406,6 +445,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { elt, generators, range: _, + node_index: _, }) => { for comprehension in generators { visitor.visit_comprehension(comprehension); @@ -417,6 +457,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { value, generators, range: _, + node_index: _, }) => { for comprehension in generators { visitor.visit_comprehension(comprehension); @@ -428,6 +469,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { elt, generators, range: _, + node_index: _, parenthesized: _, }) => { for comprehension in generators { @@ -435,18 +477,31 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { } visitor.visit_expr(elt); } - Expr::Await(ast::ExprAwait { value, range: _ }) => visitor.visit_expr(value), - Expr::Yield(ast::ExprYield { value, range: _ }) => { + Expr::Await(ast::ExprAwait { + value, + range: _, + node_index: _, + }) => visitor.visit_expr(value), + Expr::Yield(ast::ExprYield { + value, + range: _, + node_index: _, + }) => { if let Some(expr) = value { visitor.visit_expr(expr); } } - Expr::YieldFrom(ast::ExprYieldFrom { value, range: _ }) => visitor.visit_expr(value), + Expr::YieldFrom(ast::ExprYieldFrom { + value, + range: _, + node_index: _, + }) => visitor.visit_expr(value), Expr::Compare(ast::ExprCompare { left, ops, comparators, range: _, + node_index: _, }) => { visitor.visit_expr(left); for cmp_op in &mut **ops { @@ -460,6 +515,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { func, arguments, range: _, + node_index: _, }) => { visitor.visit_expr(func); visitor.visit_arguments(arguments); @@ -514,6 +570,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { slice, ctx, range: _, + node_index: _, }) => { visitor.visit_expr(value); visitor.visit_expr(slice); @@ -523,6 +580,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { value, ctx, range: _, + node_index: _, }) => { visitor.visit_expr(value); visitor.visit_expr_context(ctx); @@ -534,6 +592,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { elts, ctx, range: _, + node_index: _, }) => { for expr in elts { visitor.visit_expr(expr); @@ -544,6 +603,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { elts, ctx, range: _, + node_index: _, parenthesized: _, }) => { for expr in elts { @@ -556,6 +616,7 @@ pub fn walk_expr(visitor: &V, expr: &mut Expr) { upper, step, range: _, + node_index: _, }) => { if let Some(expr) = lower { visitor.visit_expr(expr); @@ -670,6 +731,7 @@ pub fn walk_type_param(visitor: &V, type_param: &mut Ty default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = bound { visitor.visit_expr(expr); @@ -682,6 +744,7 @@ pub fn walk_type_param(visitor: &V, type_param: &mut Ty default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = default { visitor.visit_expr(expr); @@ -691,6 +754,7 @@ pub fn walk_type_param(visitor: &V, type_param: &mut Ty default, name: _, range: _, + node_index: _, }) => { if let Some(expr) = default { visitor.visit_expr(expr); diff --git a/crates/ruff_python_ast_integration_tests/tests/visitor.rs b/crates/ruff_python_ast_integration_tests/tests/visitor.rs index 9cdc7d998a..b05655d9ba 100644 --- a/crates/ruff_python_ast_integration_tests/tests/visitor.rs +++ b/crates/ruff_python_ast_integration_tests/tests/visitor.rs @@ -178,10 +178,18 @@ where V: Visitor<'a> + ?Sized, { match module { - ast::Mod::Module(ast::ModModule { body, range: _ }) => { + ast::Mod::Module(ast::ModModule { + body, + range: _, + node_index: _, + }) => { visitor.visit_body(body); } - ast::Mod::Expression(ast::ModExpression { body, range: _ }) => visitor.visit_expr(body), + ast::Mod::Expression(ast::ModExpression { + body, + range: _, + node_index: _, + }) => visitor.visit_expr(body), } } diff --git a/crates/ruff_python_codegen/src/generator.rs b/crates/ruff_python_codegen/src/generator.rs index 8933205731..bf6e5b9a81 100644 --- a/crates/ruff_python_codegen/src/generator.rs +++ b/crates/ruff_python_codegen/src/generator.rs @@ -264,6 +264,7 @@ impl<'a> Generator<'a> { decorator_list, type_params, range: _, + node_index: _, }) => { self.newlines(if self.indent_depth == 0 { 2 } else { 1 }); for decorator in decorator_list { @@ -308,7 +309,11 @@ impl<'a> Generator<'a> { self.newlines(2); } } - Stmt::Return(ast::StmtReturn { value, range: _ }) => { + Stmt::Return(ast::StmtReturn { + value, + range: _, + node_index: _, + }) => { statement!({ if let Some(expr) = value { self.p("return "); @@ -318,7 +323,11 @@ impl<'a> Generator<'a> { } }); } - Stmt::Delete(ast::StmtDelete { targets, range: _ }) => { + Stmt::Delete(ast::StmtDelete { + targets, + range: _, + node_index: _, + }) => { statement!({ self.p("del "); let mut first = true; @@ -342,6 +351,7 @@ impl<'a> Generator<'a> { op, value, range: _, + node_index: _, }) => { statement!({ self.unparse_expr(target, precedence::AUG_ASSIGN); @@ -371,6 +381,7 @@ impl<'a> Generator<'a> { value, simple, range: _, + node_index: _, }) => { statement!({ let need_parens = matches!(target.as_ref(), Expr::Name(_)) && !simple; @@ -416,6 +427,7 @@ impl<'a> Generator<'a> { body, orelse, range: _, + node_index: _, }) => { statement!({ self.p("while "); @@ -435,6 +447,7 @@ impl<'a> Generator<'a> { body, elif_else_clauses, range: _, + node_index: _, }) => { statement!({ self.p("if "); @@ -482,6 +495,7 @@ impl<'a> Generator<'a> { subject, cases, range: _, + node_index: _, }) => { statement!({ self.p("match "); @@ -499,6 +513,7 @@ impl<'a> Generator<'a> { Stmt::TypeAlias(ast::StmtTypeAlias { name, range: _, + node_index: _, type_params, value, }) => { @@ -516,6 +531,7 @@ impl<'a> Generator<'a> { exc, cause, range: _, + node_index: _, }) => { statement!({ self.p("raise"); @@ -536,6 +552,7 @@ impl<'a> Generator<'a> { finalbody, is_star, range: _, + node_index: _, }) => { statement!({ self.p("try:"); @@ -565,6 +582,7 @@ impl<'a> Generator<'a> { test, msg, range: _, + node_index: _, }) => { statement!({ self.p("assert "); @@ -575,7 +593,11 @@ impl<'a> Generator<'a> { } }); } - Stmt::Import(ast::StmtImport { names, range: _ }) => { + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => { statement!({ self.p("import "); let mut first = true; @@ -590,6 +612,7 @@ impl<'a> Generator<'a> { names, level, range: _, + node_index: _, }) => { statement!({ self.p("from "); @@ -609,7 +632,11 @@ impl<'a> Generator<'a> { } }); } - Stmt::Global(ast::StmtGlobal { names, range: _ }) => { + Stmt::Global(ast::StmtGlobal { + names, + range: _, + node_index: _, + }) => { statement!({ self.p("global "); let mut first = true; @@ -619,7 +646,11 @@ impl<'a> Generator<'a> { } }); } - Stmt::Nonlocal(ast::StmtNonlocal { names, range: _ }) => { + Stmt::Nonlocal(ast::StmtNonlocal { + names, + range: _, + node_index: _, + }) => { statement!({ self.p("nonlocal "); let mut first = true; @@ -629,7 +660,11 @@ impl<'a> Generator<'a> { } }); } - Stmt::Expr(ast::StmtExpr { value, range: _ }) => { + Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) => { statement!({ self.unparse_expr(value, precedence::EXPR); }); @@ -664,6 +699,7 @@ impl<'a> Generator<'a> { name, body, range: _, + node_index: _, }) => { self.p("except"); if star { @@ -685,13 +721,25 @@ impl<'a> Generator<'a> { fn unparse_pattern(&mut self, ast: &Pattern) { match ast { - Pattern::MatchValue(ast::PatternMatchValue { value, range: _ }) => { + Pattern::MatchValue(ast::PatternMatchValue { + value, + range: _, + node_index: _, + }) => { self.unparse_expr(value, precedence::MAX); } - Pattern::MatchSingleton(ast::PatternMatchSingleton { value, range: _ }) => { + Pattern::MatchSingleton(ast::PatternMatchSingleton { + value, + range: _, + node_index: _, + }) => { self.unparse_singleton(*value); } - Pattern::MatchSequence(ast::PatternMatchSequence { patterns, range: _ }) => { + Pattern::MatchSequence(ast::PatternMatchSequence { + patterns, + range: _, + node_index: _, + }) => { self.p("["); let mut first = true; for pattern in patterns { @@ -705,6 +753,7 @@ impl<'a> Generator<'a> { patterns, rest, range: _, + node_index: _, }) => { self.p("{"); let mut first = true; @@ -722,7 +771,11 @@ impl<'a> Generator<'a> { self.p("}"); } Pattern::MatchClass(_) => {} - Pattern::MatchStar(ast::PatternMatchStar { name, range: _ }) => { + Pattern::MatchStar(ast::PatternMatchStar { + name, + range: _, + node_index: _, + }) => { self.p("*"); if let Some(name) = name { self.p_id(name); @@ -734,6 +787,7 @@ impl<'a> Generator<'a> { pattern, name, range: _, + node_index: _, }) => { if let Some(pattern) = pattern { self.unparse_pattern(pattern); @@ -745,7 +799,11 @@ impl<'a> Generator<'a> { self.p("_"); } } - Pattern::MatchOr(ast::PatternMatchOr { patterns, range: _ }) => { + Pattern::MatchOr(ast::PatternMatchOr { + patterns, + range: _, + node_index: _, + }) => { let mut first = true; for pattern in patterns { self.p_delim(&mut first, " | "); @@ -841,6 +899,7 @@ impl<'a> Generator<'a> { op, values, range: _, + node_index: _, }) => { let (op, prec) = opprec!(bin, op, BoolOp, And("and", AND), Or("or", OR)); group_if!(prec, { @@ -855,6 +914,7 @@ impl<'a> Generator<'a> { target, value, range: _, + node_index: _, }) => { group_if!(precedence::NAMED_EXPR, { self.unparse_expr(target, precedence::NAMED_EXPR); @@ -867,6 +927,7 @@ impl<'a> Generator<'a> { op, right, range: _, + node_index: _, }) => { let rassoc = matches!(op, Operator::Pow); let (op, prec) = opprec!( @@ -897,6 +958,7 @@ impl<'a> Generator<'a> { op, operand, range: _, + node_index: _, }) => { let (op, prec) = opprec!( un, @@ -916,6 +978,7 @@ impl<'a> Generator<'a> { parameters, body, range: _, + node_index: _, }) => { group_if!(precedence::LAMBDA, { self.p("lambda"); @@ -932,6 +995,7 @@ impl<'a> Generator<'a> { body, orelse, range: _, + node_index: _, }) => { group_if!(precedence::IF_EXP, { self.unparse_expr(body, precedence::IF_EXP + 1); @@ -974,6 +1038,7 @@ impl<'a> Generator<'a> { elt, generators, range: _, + node_index: _, }) => { self.p("["); self.unparse_expr(elt, precedence::COMPREHENSION_ELEMENT); @@ -984,6 +1049,7 @@ impl<'a> Generator<'a> { elt, generators, range: _, + node_index: _, }) => { self.p("{"); self.unparse_expr(elt, precedence::COMPREHENSION_ELEMENT); @@ -995,6 +1061,7 @@ impl<'a> Generator<'a> { value, generators, range: _, + node_index: _, }) => { self.p("{"); self.unparse_expr(key, precedence::COMPREHENSION_ELEMENT); @@ -1008,19 +1075,28 @@ impl<'a> Generator<'a> { generators, parenthesized: _, range: _, + node_index: _, }) => { self.p("("); self.unparse_expr(elt, precedence::COMPREHENSION_ELEMENT); self.unparse_comp(generators); self.p(")"); } - Expr::Await(ast::ExprAwait { value, range: _ }) => { + Expr::Await(ast::ExprAwait { + value, + range: _, + node_index: _, + }) => { group_if!(precedence::AWAIT, { self.p("await "); self.unparse_expr(value, precedence::MAX); }); } - Expr::Yield(ast::ExprYield { value, range: _ }) => { + Expr::Yield(ast::ExprYield { + value, + range: _, + node_index: _, + }) => { group_if!(precedence::YIELD, { self.p("yield"); if let Some(value) = value { @@ -1029,7 +1105,11 @@ impl<'a> Generator<'a> { } }); } - Expr::YieldFrom(ast::ExprYieldFrom { value, range: _ }) => { + Expr::YieldFrom(ast::ExprYieldFrom { + value, + range: _, + node_index: _, + }) => { group_if!(precedence::YIELD_FROM, { self.p("yield from "); self.unparse_expr(value, precedence::MAX); @@ -1040,6 +1120,7 @@ impl<'a> Generator<'a> { ops, comparators, range: _, + node_index: _, }) => { group_if!(precedence::CMP, { let new_lvl = precedence::CMP + 1; @@ -1066,6 +1147,7 @@ impl<'a> Generator<'a> { func, arguments, range: _, + node_index: _, }) => { self.unparse_expr(func, precedence::MAX); self.p("("); @@ -1075,6 +1157,7 @@ impl<'a> Generator<'a> { elt, generators, range: _, + node_index: _, parenthesized: _, }), ], @@ -1217,6 +1300,7 @@ impl<'a> Generator<'a> { upper, step, range: _, + node_index: _, }) => { if let Some(lower) = lower { self.unparse_expr(lower, precedence::SLICE); @@ -1396,6 +1480,7 @@ impl<'a> Generator<'a> { conversion, format_spec, range: _, + node_index: _, }) => self.unparse_interpolated_element( expression, debug_text.as_ref(), diff --git a/crates/ruff_python_formatter/CONTRIBUTING.md b/crates/ruff_python_formatter/CONTRIBUTING.md index 3084ec3607..f0e60974a4 100644 --- a/crates/ruff_python_formatter/CONTRIBUTING.md +++ b/crates/ruff_python_formatter/CONTRIBUTING.md @@ -204,7 +204,7 @@ impl FormatNodeRule for FormatStmtReturn { fn fmt_fields(&self, item: &StmtReturn, f: &mut PyFormatter) -> FormatResult<()> { // Here we destructure item and make sure each field is listed. // We generally don't need range if it's underscore-ignored - let StmtReturn { range: _, value } = item; + let StmtReturn { range: _, node_index: _, value } = item; // Implement some formatting logic, in this case no space (and no value) after a return with // no value if let Some(value) = value { diff --git a/crates/ruff_python_formatter/src/comments/debug.rs b/crates/ruff_python_formatter/src/comments/debug.rs index a2038669b4..8cd374464f 100644 --- a/crates/ruff_python_formatter/src/comments/debug.rs +++ b/crates/ruff_python_formatter/src/comments/debug.rs @@ -184,7 +184,7 @@ mod tests { use insta::assert_debug_snapshot; use ruff_formatter::SourceCode; - use ruff_python_ast::AnyNodeRef; + use ruff_python_ast::{AnyNodeRef, AtomicNodeIndex}; use ruff_python_ast::{StmtBreak, StmtContinue}; use ruff_python_trivia::{CommentLinePosition, CommentRanges}; use ruff_text_size::{TextRange, TextSize}; @@ -196,10 +196,12 @@ mod tests { fn debug() { let continue_statement = StmtContinue { range: TextRange::new(TextSize::new(18), TextSize::new(26)), + node_index: AtomicNodeIndex::dummy(), }; let break_statement = StmtBreak { range: TextRange::new(TextSize::new(55), TextSize::new(60)), + node_index: AtomicNodeIndex::dummy(), }; let source = r"# leading comment diff --git a/crates/ruff_python_formatter/src/comments/node_key.rs b/crates/ruff_python_formatter/src/comments/node_key.rs index 5c38ac10e5..a0c28ea286 100644 --- a/crates/ruff_python_formatter/src/comments/node_key.rs +++ b/crates/ruff_python_formatter/src/comments/node_key.rs @@ -53,6 +53,7 @@ impl<'a> From> for NodeRefEqualityKey<'a> { mod tests { use crate::comments::node_key::NodeRefEqualityKey; use ruff_python_ast::AnyNodeRef; + use ruff_python_ast::AtomicNodeIndex; use ruff_python_ast::StmtContinue; use ruff_text_size::TextRange; use std::collections::hash_map::DefaultHasher; @@ -68,6 +69,7 @@ mod tests { fn equality() { let continue_statement = StmtContinue { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }; let ref_a = NodeRefEqualityKey::from_ref(AnyNodeRef::from(&continue_statement)); @@ -81,6 +83,7 @@ mod tests { fn inequality() { let continue_statement = StmtContinue { range: TextRange::default(), + node_index: AtomicNodeIndex::dummy(), }; let boxed = Box::new(continue_statement.clone()); diff --git a/crates/ruff_python_formatter/src/comments/placement.rs b/crates/ruff_python_formatter/src/comments/placement.rs index 23cc3ee996..63075a7a0a 100644 --- a/crates/ruff_python_formatter/src/comments/placement.rs +++ b/crates/ruff_python_formatter/src/comments/placement.rs @@ -1067,6 +1067,7 @@ fn handle_slice_comments<'a>( ) -> CommentPlacement<'a> { let ast::ExprSlice { range: _, + node_index: _, lower, upper, step, @@ -1450,6 +1451,7 @@ fn handle_expr_if_comment<'a>( ) -> CommentPlacement<'a> { let ast::ExprIf { range: _, + node_index: _, test, body, orelse, diff --git a/crates/ruff_python_formatter/src/expression/expr_attribute.rs b/crates/ruff_python_formatter/src/expression/expr_attribute.rs index 3d1d6ddb78..ebb0093ccb 100644 --- a/crates/ruff_python_formatter/src/expression/expr_attribute.rs +++ b/crates/ruff_python_formatter/src/expression/expr_attribute.rs @@ -30,6 +30,7 @@ impl FormatNodeRule for FormatExprAttribute { let ExprAttribute { value, range: _, + node_index: _, attr, ctx: _, } = item; @@ -188,7 +189,12 @@ impl NeedsParentheses for ExprAttribute { // Non Hex, octal or binary number literals need parentheses to disambiguate the attribute `.` from // a decimal point. Floating point numbers don't strictly need parentheses but it reads better (rather than 0.0.test()). fn is_base_ten_number_literal(expr: &Expr, source: &str) -> bool { - if let Some(ExprNumberLiteral { value, range }) = expr.as_number_literal_expr() { + if let Some(ExprNumberLiteral { + value, + range, + node_index: _, + }) = expr.as_number_literal_expr() + { match value { Number::Float(_) => true, Number::Int(_) => { diff --git a/crates/ruff_python_formatter/src/expression/expr_await.rs b/crates/ruff_python_formatter/src/expression/expr_await.rs index 3985e87d67..cd862f2f9a 100644 --- a/crates/ruff_python_formatter/src/expression/expr_await.rs +++ b/crates/ruff_python_formatter/src/expression/expr_await.rs @@ -13,7 +13,11 @@ pub struct FormatExprAwait; impl FormatNodeRule for FormatExprAwait { fn fmt_fields(&self, item: &ExprAwait, f: &mut PyFormatter) -> FormatResult<()> { - let ExprAwait { range: _, value } = item; + let ExprAwait { + range: _, + node_index: _, + value, + } = item; write!( f, diff --git a/crates/ruff_python_formatter/src/expression/expr_call.rs b/crates/ruff_python_formatter/src/expression/expr_call.rs index 3fc156331f..a5c3227a7d 100644 --- a/crates/ruff_python_formatter/src/expression/expr_call.rs +++ b/crates/ruff_python_formatter/src/expression/expr_call.rs @@ -27,6 +27,7 @@ impl FormatNodeRule for FormatExprCall { fn fmt_fields(&self, item: &ExprCall, f: &mut PyFormatter) -> FormatResult<()> { let ExprCall { range: _, + node_index: _, func, arguments, } = item; diff --git a/crates/ruff_python_formatter/src/expression/expr_dict.rs b/crates/ruff_python_formatter/src/expression/expr_dict.rs index 41f9804a4f..9e5b4f1112 100644 --- a/crates/ruff_python_formatter/src/expression/expr_dict.rs +++ b/crates/ruff_python_formatter/src/expression/expr_dict.rs @@ -13,7 +13,11 @@ pub struct FormatExprDict; impl FormatNodeRule for FormatExprDict { fn fmt_fields(&self, item: &ExprDict, f: &mut PyFormatter) -> FormatResult<()> { - let ExprDict { range: _, items } = item; + let ExprDict { + range: _, + node_index: _, + items, + } = item; let comments = f.context().comments().clone(); let dangling = comments.dangling(item); diff --git a/crates/ruff_python_formatter/src/expression/expr_dict_comp.rs b/crates/ruff_python_formatter/src/expression/expr_dict_comp.rs index 793579b1d0..91eb318363 100644 --- a/crates/ruff_python_formatter/src/expression/expr_dict_comp.rs +++ b/crates/ruff_python_formatter/src/expression/expr_dict_comp.rs @@ -14,6 +14,7 @@ impl FormatNodeRule for FormatExprDictComp { fn fmt_fields(&self, item: &ExprDictComp, f: &mut PyFormatter) -> FormatResult<()> { let ExprDictComp { range: _, + node_index: _, key, value, generators, diff --git a/crates/ruff_python_formatter/src/expression/expr_generator.rs b/crates/ruff_python_formatter/src/expression/expr_generator.rs index c6c92dfa72..db0cd28ef2 100644 --- a/crates/ruff_python_formatter/src/expression/expr_generator.rs +++ b/crates/ruff_python_formatter/src/expression/expr_generator.rs @@ -37,6 +37,7 @@ impl FormatNodeRule for FormatExprGenerator { fn fmt_fields(&self, item: &ExprGenerator, f: &mut PyFormatter) -> FormatResult<()> { let ExprGenerator { range: _, + node_index: _, elt, generators, parenthesized: is_parenthesized, diff --git a/crates/ruff_python_formatter/src/expression/expr_if.rs b/crates/ruff_python_formatter/src/expression/expr_if.rs index 15be436c6a..8dfa92d885 100644 --- a/crates/ruff_python_formatter/src/expression/expr_if.rs +++ b/crates/ruff_python_formatter/src/expression/expr_if.rs @@ -46,6 +46,7 @@ impl FormatNodeRule for FormatExprIf { fn fmt_fields(&self, item: &ExprIf, f: &mut PyFormatter) -> FormatResult<()> { let ExprIf { range: _, + node_index: _, test, body, orelse, diff --git a/crates/ruff_python_formatter/src/expression/expr_lambda.rs b/crates/ruff_python_formatter/src/expression/expr_lambda.rs index 6d4c684585..c5890fba24 100644 --- a/crates/ruff_python_formatter/src/expression/expr_lambda.rs +++ b/crates/ruff_python_formatter/src/expression/expr_lambda.rs @@ -15,6 +15,7 @@ impl FormatNodeRule for FormatExprLambda { fn fmt_fields(&self, item: &ExprLambda, f: &mut PyFormatter) -> FormatResult<()> { let ExprLambda { range: _, + node_index: _, parameters, body, } = item; diff --git a/crates/ruff_python_formatter/src/expression/expr_list.rs b/crates/ruff_python_formatter/src/expression/expr_list.rs index 23586bf1a9..4e295001d3 100644 --- a/crates/ruff_python_formatter/src/expression/expr_list.rs +++ b/crates/ruff_python_formatter/src/expression/expr_list.rs @@ -15,6 +15,7 @@ impl FormatNodeRule for FormatExprList { fn fmt_fields(&self, item: &ExprList, f: &mut PyFormatter) -> FormatResult<()> { let ExprList { range: _, + node_index: _, elts, ctx: _, } = item; diff --git a/crates/ruff_python_formatter/src/expression/expr_list_comp.rs b/crates/ruff_python_formatter/src/expression/expr_list_comp.rs index b896c0a6a3..ba36b4b66e 100644 --- a/crates/ruff_python_formatter/src/expression/expr_list_comp.rs +++ b/crates/ruff_python_formatter/src/expression/expr_list_comp.rs @@ -12,6 +12,7 @@ impl FormatNodeRule for FormatExprListComp { fn fmt_fields(&self, item: &ExprListComp, f: &mut PyFormatter) -> FormatResult<()> { let ExprListComp { range: _, + node_index: _, elt, generators, } = item; diff --git a/crates/ruff_python_formatter/src/expression/expr_name.rs b/crates/ruff_python_formatter/src/expression/expr_name.rs index 5a8b6b2665..f9c4534722 100644 --- a/crates/ruff_python_formatter/src/expression/expr_name.rs +++ b/crates/ruff_python_formatter/src/expression/expr_name.rs @@ -14,6 +14,7 @@ impl FormatNodeRule for FormatExprName { id: _, range, ctx: _, + node_index: _, } = item; write!(f, [source_text_slice(*range)]) } diff --git a/crates/ruff_python_formatter/src/expression/expr_named.rs b/crates/ruff_python_formatter/src/expression/expr_named.rs index 5a5fa23ca3..117e42825e 100644 --- a/crates/ruff_python_formatter/src/expression/expr_named.rs +++ b/crates/ruff_python_formatter/src/expression/expr_named.rs @@ -17,6 +17,7 @@ impl FormatNodeRule for FormatExprNamed { target, value, range: _, + node_index: _, } = item; // This context, a dangling comment is a comment between the `:=` and the value. diff --git a/crates/ruff_python_formatter/src/expression/expr_set.rs b/crates/ruff_python_formatter/src/expression/expr_set.rs index d034e0c4fd..45d7f2f170 100644 --- a/crates/ruff_python_formatter/src/expression/expr_set.rs +++ b/crates/ruff_python_formatter/src/expression/expr_set.rs @@ -10,7 +10,11 @@ pub struct FormatExprSet; impl FormatNodeRule for FormatExprSet { fn fmt_fields(&self, item: &ExprSet, f: &mut PyFormatter) -> FormatResult<()> { - let ExprSet { range: _, elts } = item; + let ExprSet { + range: _, + node_index: _, + elts, + } = item; // That would be a dict expression assert!(!elts.is_empty()); // Avoid second mutable borrow of f diff --git a/crates/ruff_python_formatter/src/expression/expr_set_comp.rs b/crates/ruff_python_formatter/src/expression/expr_set_comp.rs index 4d37f07928..adbe2d9671 100644 --- a/crates/ruff_python_formatter/src/expression/expr_set_comp.rs +++ b/crates/ruff_python_formatter/src/expression/expr_set_comp.rs @@ -12,6 +12,7 @@ impl FormatNodeRule for FormatExprSetComp { fn fmt_fields(&self, item: &ExprSetComp, f: &mut PyFormatter) -> FormatResult<()> { let ExprSetComp { range: _, + node_index: _, elt, generators, } = item; diff --git a/crates/ruff_python_formatter/src/expression/expr_slice.rs b/crates/ruff_python_formatter/src/expression/expr_slice.rs index 061874642b..4f4b0f001d 100644 --- a/crates/ruff_python_formatter/src/expression/expr_slice.rs +++ b/crates/ruff_python_formatter/src/expression/expr_slice.rs @@ -21,6 +21,7 @@ impl FormatNodeRule for FormatExprSlice { upper, step, range, + node_index: _, } = item; let (first_colon, second_colon) = find_colons( @@ -232,6 +233,7 @@ pub(crate) fn assign_comment_in_slice( upper, step: _, range, + node_index: _, } = expr_slice; let (first_colon, second_colon) = diff --git a/crates/ruff_python_formatter/src/expression/expr_starred.rs b/crates/ruff_python_formatter/src/expression/expr_starred.rs index 07fa030260..57dd3c7aff 100644 --- a/crates/ruff_python_formatter/src/expression/expr_starred.rs +++ b/crates/ruff_python_formatter/src/expression/expr_starred.rs @@ -14,6 +14,7 @@ impl FormatNodeRule for FormatExprStarred { fn fmt_fields(&self, item: &ExprStarred, f: &mut PyFormatter) -> FormatResult<()> { let ExprStarred { range: _, + node_index: _, value, ctx: _, } = item; diff --git a/crates/ruff_python_formatter/src/expression/expr_subscript.rs b/crates/ruff_python_formatter/src/expression/expr_subscript.rs index 0c058d7326..ce3aaf1f69 100644 --- a/crates/ruff_python_formatter/src/expression/expr_subscript.rs +++ b/crates/ruff_python_formatter/src/expression/expr_subscript.rs @@ -27,6 +27,7 @@ impl FormatNodeRule for FormatExprSubscript { fn fmt_fields(&self, item: &ExprSubscript, f: &mut PyFormatter) -> FormatResult<()> { let ExprSubscript { range: _, + node_index: _, value, slice, ctx: _, diff --git a/crates/ruff_python_formatter/src/expression/expr_tuple.rs b/crates/ruff_python_formatter/src/expression/expr_tuple.rs index 3372ec219d..6d95048673 100644 --- a/crates/ruff_python_formatter/src/expression/expr_tuple.rs +++ b/crates/ruff_python_formatter/src/expression/expr_tuple.rs @@ -116,6 +116,7 @@ impl FormatNodeRule for FormatExprTuple { elts, ctx: _, range: _, + node_index: _, parenthesized: is_parenthesized, } = item; diff --git a/crates/ruff_python_formatter/src/expression/expr_unary_op.rs b/crates/ruff_python_formatter/src/expression/expr_unary_op.rs index e28bfd4a95..a8454cda1e 100644 --- a/crates/ruff_python_formatter/src/expression/expr_unary_op.rs +++ b/crates/ruff_python_formatter/src/expression/expr_unary_op.rs @@ -15,6 +15,7 @@ impl FormatNodeRule for FormatExprUnaryOp { fn fmt_fields(&self, item: &ExprUnaryOp, f: &mut PyFormatter) -> FormatResult<()> { let ExprUnaryOp { range: _, + node_index: _, op, operand, } = item; diff --git a/crates/ruff_python_formatter/src/expression/mod.rs b/crates/ruff_python_formatter/src/expression/mod.rs index 025c4e7513..a320a1edf5 100644 --- a/crates/ruff_python_formatter/src/expression/mod.rs +++ b/crates/ruff_python_formatter/src/expression/mod.rs @@ -685,6 +685,7 @@ impl<'input> CanOmitOptionalParenthesesVisitor<'input> { #[expect(clippy::cast_possible_truncation)] Expr::BoolOp(ast::ExprBoolOp { range: _, + node_index: _, op: _, values, }) => self.update_max_precedence_with_count( @@ -696,6 +697,7 @@ impl<'input> CanOmitOptionalParenthesesVisitor<'input> { left: _, right: _, range: _, + node_index: _, }) => self.update_max_precedence(OperatorPrecedence::from(*op)), Expr::If(_) => { @@ -708,6 +710,7 @@ impl<'input> CanOmitOptionalParenthesesVisitor<'input> { #[expect(clippy::cast_possible_truncation)] Expr::Compare(ast::ExprCompare { range: _, + node_index: _, left: _, ops, comparators: _, @@ -719,6 +722,7 @@ impl<'input> CanOmitOptionalParenthesesVisitor<'input> { } Expr::Call(ast::ExprCall { range: _, + node_index: _, func, arguments: _, }) => { @@ -740,6 +744,7 @@ impl<'input> CanOmitOptionalParenthesesVisitor<'input> { // `[a, b].test.test[300].dot` Expr::Attribute(ast::ExprAttribute { range: _, + node_index: _, value, attr: _, ctx: _, @@ -760,6 +765,7 @@ impl<'input> CanOmitOptionalParenthesesVisitor<'input> { // Visit the sub-expressions because the sub expressions may be the end of the entire expression. Expr::UnaryOp(ast::ExprUnaryOp { range: _, + node_index: _, op, operand: _, }) => { diff --git a/crates/ruff_python_formatter/src/module/mod_expression.rs b/crates/ruff_python_formatter/src/module/mod_expression.rs index 79822a2dbb..7a0664f4f8 100644 --- a/crates/ruff_python_formatter/src/module/mod_expression.rs +++ b/crates/ruff_python_formatter/src/module/mod_expression.rs @@ -7,7 +7,11 @@ pub struct FormatModExpression; impl FormatNodeRule for FormatModExpression { fn fmt_fields(&self, item: &ModExpression, f: &mut PyFormatter) -> FormatResult<()> { - let ModExpression { body, range: _ } = item; + let ModExpression { + body, + range: _, + node_index: _, + } = item; body.format().fmt(f) } } diff --git a/crates/ruff_python_formatter/src/module/mod_module.rs b/crates/ruff_python_formatter/src/module/mod_module.rs index 5b3436c6d1..f24eb90429 100644 --- a/crates/ruff_python_formatter/src/module/mod_module.rs +++ b/crates/ruff_python_formatter/src/module/mod_module.rs @@ -11,7 +11,11 @@ pub struct FormatModModule; impl FormatNodeRule for FormatModModule { fn fmt_fields(&self, item: &ModModule, f: &mut PyFormatter) -> FormatResult<()> { - let ModModule { range, body } = item; + let ModModule { + range, + body, + node_index: _, + } = item; if body.is_empty() { // Only preserve an empty line if the source contains an empty line too. diff --git a/crates/ruff_python_formatter/src/other/alias.rs b/crates/ruff_python_formatter/src/other/alias.rs index f8532d22d4..bce6485e12 100644 --- a/crates/ruff_python_formatter/src/other/alias.rs +++ b/crates/ruff_python_formatter/src/other/alias.rs @@ -11,6 +11,7 @@ impl FormatNodeRule for FormatAlias { fn fmt_fields(&self, item: &Alias, f: &mut PyFormatter) -> FormatResult<()> { let Alias { range: _, + node_index: _, name, asname, } = item; diff --git a/crates/ruff_python_formatter/src/other/arguments.rs b/crates/ruff_python_formatter/src/other/arguments.rs index 0ee77b790b..758deaeeb7 100644 --- a/crates/ruff_python_formatter/src/other/arguments.rs +++ b/crates/ruff_python_formatter/src/other/arguments.rs @@ -19,6 +19,7 @@ impl FormatNodeRule for FormatArguments { range, args, keywords, + node_index: _, } = item; // We have a case with `f()` without any argument, which is a special case because we can // have a comment with no node attachment inside: diff --git a/crates/ruff_python_formatter/src/other/comprehension.rs b/crates/ruff_python_formatter/src/other/comprehension.rs index 75910cdc55..cfa75b3e88 100644 --- a/crates/ruff_python_formatter/src/other/comprehension.rs +++ b/crates/ruff_python_formatter/src/other/comprehension.rs @@ -52,6 +52,7 @@ impl FormatNodeRule for FormatComprehension { let Comprehension { range: _, + node_index: _, target, iter, ifs, diff --git a/crates/ruff_python_formatter/src/other/decorator.rs b/crates/ruff_python_formatter/src/other/decorator.rs index 38e534d904..0c1719b991 100644 --- a/crates/ruff_python_formatter/src/other/decorator.rs +++ b/crates/ruff_python_formatter/src/other/decorator.rs @@ -14,6 +14,7 @@ impl FormatNodeRule for FormatDecorator { let Decorator { expression, range: _, + node_index: _, } = item; write!( diff --git a/crates/ruff_python_formatter/src/other/except_handler_except_handler.rs b/crates/ruff_python_formatter/src/other/except_handler_except_handler.rs index e638dc4b2a..4f2f93a3e9 100644 --- a/crates/ruff_python_formatter/src/other/except_handler_except_handler.rs +++ b/crates/ruff_python_formatter/src/other/except_handler_except_handler.rs @@ -42,6 +42,7 @@ impl FormatNodeRule for FormatExceptHandlerExceptHan let except_handler_kind = self.except_handler_kind; let ExceptHandlerExceptHandler { range: _, + node_index: _, type_, name, body, diff --git a/crates/ruff_python_formatter/src/other/keyword.rs b/crates/ruff_python_formatter/src/other/keyword.rs index 6c56883242..df00ed94cc 100644 --- a/crates/ruff_python_formatter/src/other/keyword.rs +++ b/crates/ruff_python_formatter/src/other/keyword.rs @@ -10,6 +10,7 @@ impl FormatNodeRule for FormatKeyword { fn fmt_fields(&self, item: &Keyword, f: &mut PyFormatter) -> FormatResult<()> { let Keyword { range: _, + node_index: _, arg, value, } = item; diff --git a/crates/ruff_python_formatter/src/other/match_case.rs b/crates/ruff_python_formatter/src/other/match_case.rs index 2c96a1546c..130efd01cd 100644 --- a/crates/ruff_python_formatter/src/other/match_case.rs +++ b/crates/ruff_python_formatter/src/other/match_case.rs @@ -26,6 +26,7 @@ impl FormatNodeRule for FormatMatchCase { fn fmt_fields(&self, item: &MatchCase, f: &mut PyFormatter) -> FormatResult<()> { let MatchCase { range: _, + node_index: _, pattern, guard, body, diff --git a/crates/ruff_python_formatter/src/other/parameter.rs b/crates/ruff_python_formatter/src/other/parameter.rs index 8a634928fc..483280082e 100644 --- a/crates/ruff_python_formatter/src/other/parameter.rs +++ b/crates/ruff_python_formatter/src/other/parameter.rs @@ -9,6 +9,7 @@ impl FormatNodeRule for FormatParameter { fn fmt_fields(&self, item: &Parameter, f: &mut PyFormatter) -> FormatResult<()> { let Parameter { range: _, + node_index: _, name, annotation, } = item; diff --git a/crates/ruff_python_formatter/src/other/parameter_with_default.rs b/crates/ruff_python_formatter/src/other/parameter_with_default.rs index 3248d7381f..a78c082a00 100644 --- a/crates/ruff_python_formatter/src/other/parameter_with_default.rs +++ b/crates/ruff_python_formatter/src/other/parameter_with_default.rs @@ -12,6 +12,7 @@ impl FormatNodeRule for FormatParameterWithDefault { fn fmt_fields(&self, item: &ParameterWithDefault, f: &mut PyFormatter) -> FormatResult<()> { let ParameterWithDefault { range: _, + node_index: _, parameter, default, } = item; diff --git a/crates/ruff_python_formatter/src/other/parameters.rs b/crates/ruff_python_formatter/src/other/parameters.rs index c677d7651e..1c6682bab1 100644 --- a/crates/ruff_python_formatter/src/other/parameters.rs +++ b/crates/ruff_python_formatter/src/other/parameters.rs @@ -49,6 +49,7 @@ impl FormatNodeRule for FormatParameters { fn fmt_fields(&self, item: &Parameters, f: &mut PyFormatter) -> FormatResult<()> { let Parameters { range: _, + node_index: _, posonlyargs, args, vararg, diff --git a/crates/ruff_python_formatter/src/other/with_item.rs b/crates/ruff_python_formatter/src/other/with_item.rs index 6a03b299a4..a309edd6e1 100644 --- a/crates/ruff_python_formatter/src/other/with_item.rs +++ b/crates/ruff_python_formatter/src/other/with_item.rs @@ -94,6 +94,7 @@ impl FormatNodeRule for FormatWithItem { fn fmt_fields(&self, item: &WithItem, f: &mut PyFormatter) -> FormatResult<()> { let WithItem { range: _, + node_index: _, context_expr, optional_vars, } = item; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_keyword.rs b/crates/ruff_python_formatter/src/pattern/pattern_keyword.rs index 974e653474..3f3aa6efa9 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_keyword.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_keyword.rs @@ -9,6 +9,7 @@ impl FormatNodeRule for FormatPatternKeyword { fn fmt_fields(&self, item: &PatternKeyword, f: &mut PyFormatter) -> FormatResult<()> { let PatternKeyword { range: _, + node_index: _, attr, pattern, } = item; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_as.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_as.rs index 68958cf02d..f313bf0309 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_as.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_as.rs @@ -13,6 +13,7 @@ impl FormatNodeRule for FormatPatternMatchAs { fn fmt_fields(&self, item: &PatternMatchAs, f: &mut PyFormatter) -> FormatResult<()> { let PatternMatchAs { range: _, + node_index: _, pattern, name, } = item; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_class.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_class.rs index d516940302..ce15830494 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_class.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_class.rs @@ -13,6 +13,7 @@ impl FormatNodeRule for FormatPatternMatchClass { fn fmt_fields(&self, item: &PatternMatchClass, f: &mut PyFormatter) -> FormatResult<()> { let PatternMatchClass { range: _, + node_index: _, cls, arguments, } = item; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_mapping.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_mapping.rs index 9ce8f7911e..cb5568f707 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_mapping.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_mapping.rs @@ -21,6 +21,7 @@ impl FormatNodeRule for FormatPatternMatchMapping { patterns, rest, range: _, + node_index: _, } = item; debug_assert_eq!(keys.len(), patterns.len()); @@ -163,6 +164,7 @@ fn find_double_star(pattern: &PatternMatchMapping, source: &str) -> Option<(Text patterns, rest, range: _, + node_index: _, } = pattern; // If there's no `rest` element, there's no `**`. diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_or.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_or.rs index d9653a81d4..b0b21f49e9 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_or.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_or.rs @@ -14,7 +14,11 @@ pub struct FormatPatternMatchOr; impl FormatNodeRule for FormatPatternMatchOr { fn fmt_fields(&self, item: &PatternMatchOr, f: &mut PyFormatter) -> FormatResult<()> { - let PatternMatchOr { range: _, patterns } = item; + let PatternMatchOr { + range: _, + node_index: _, + patterns, + } = item; let inner = format_with(|f: &mut PyFormatter| { let mut patterns = patterns.iter(); let comments = f.context().comments().clone(); diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_sequence.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_sequence.rs index 24f07f050d..0625f78a5e 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_sequence.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_sequence.rs @@ -14,7 +14,11 @@ pub struct FormatPatternMatchSequence; impl FormatNodeRule for FormatPatternMatchSequence { fn fmt_fields(&self, item: &PatternMatchSequence, f: &mut PyFormatter) -> FormatResult<()> { - let PatternMatchSequence { patterns, range } = item; + let PatternMatchSequence { + patterns, + range, + node_index: _, + } = item; let comments = f.context().comments().clone(); let dangling = comments.dangling(item); diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_value.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_value.rs index 5f8efadd9e..848b7c4a5d 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_value.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_value.rs @@ -9,7 +9,11 @@ pub struct FormatPatternMatchValue; impl FormatNodeRule for FormatPatternMatchValue { fn fmt_fields(&self, item: &PatternMatchValue, f: &mut PyFormatter) -> FormatResult<()> { - let PatternMatchValue { value, range: _ } = item; + let PatternMatchValue { + value, + range: _, + node_index: _, + } = item; value.format().with_options(Parentheses::Never).fmt(f) } } diff --git a/crates/ruff_python_formatter/src/range.rs b/crates/ruff_python_formatter/src/range.rs index 61043061b5..436c1a12c2 100644 --- a/crates/ruff_python_formatter/src/range.rs +++ b/crates/ruff_python_formatter/src/range.rs @@ -369,6 +369,7 @@ impl SourceOrderVisitor<'_> for NarrowRange<'_> { subject: _, cases, range: _, + node_index: _, }) => { if let Some(saved_state) = self.enter_level(cases.first().map(AnyNodeRef::from)) { for match_case in cases { @@ -387,6 +388,7 @@ impl SourceOrderVisitor<'_> for NarrowRange<'_> { finalbody, is_star: _, range: _, + node_index: _, }) => { self.visit_body(body); if let Some(except_handler_saved) = diff --git a/crates/ruff_python_formatter/src/statement/clause.rs b/crates/ruff_python_formatter/src/statement/clause.rs index 39b7025449..7cc82ca923 100644 --- a/crates/ruff_python_formatter/src/statement/clause.rs +++ b/crates/ruff_python_formatter/src/statement/clause.rs @@ -87,6 +87,7 @@ impl ClauseHeader<'_> { type_params, arguments, range: _, + node_index: _, decorator_list: _, name: _, body: _, @@ -103,6 +104,7 @@ impl ClauseHeader<'_> { type_params, parameters, range: _, + node_index: _, is_async: _, decorator_list: _, name: _, @@ -121,6 +123,7 @@ impl ClauseHeader<'_> { ClauseHeader::If(StmtIf { test, range: _, + node_index: _, body: _, elif_else_clauses: _, }) => { @@ -129,6 +132,7 @@ impl ClauseHeader<'_> { ClauseHeader::ElifElse(ElifElseClause { test, range: _, + node_index: _, body: _, }) => { if let Some(test) = test.as_ref() { @@ -139,6 +143,7 @@ impl ClauseHeader<'_> { ClauseHeader::ExceptHandler(ExceptHandlerExceptHandler { type_: type_expr, range: _, + node_index: _, name: _, body: _, }) => { @@ -149,6 +154,7 @@ impl ClauseHeader<'_> { ClauseHeader::Match(StmtMatch { subject, range: _, + node_index: _, cases: _, }) => { visit(subject.as_ref(), visitor); @@ -157,6 +163,7 @@ impl ClauseHeader<'_> { guard, pattern, range: _, + node_index: _, body: _, }) => { visit(pattern, visitor); @@ -169,6 +176,7 @@ impl ClauseHeader<'_> { target, iter, range: _, + node_index: _, is_async: _, body: _, orelse: _, @@ -179,6 +187,7 @@ impl ClauseHeader<'_> { ClauseHeader::While(StmtWhile { test, range: _, + node_index: _, body: _, orelse: _, }) => { @@ -187,6 +196,7 @@ impl ClauseHeader<'_> { ClauseHeader::With(StmtWith { items, range: _, + node_index: _, is_async: _, body: _, }) => { diff --git a/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs b/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs index a51e668f3e..1de79a6b07 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs @@ -17,6 +17,7 @@ impl FormatNodeRule for FormatStmtAnnAssign { fn fmt_fields(&self, item: &StmtAnnAssign, f: &mut PyFormatter) -> FormatResult<()> { let StmtAnnAssign { range: _, + node_index: _, target, annotation, value, diff --git a/crates/ruff_python_formatter/src/statement/stmt_assert.rs b/crates/ruff_python_formatter/src/statement/stmt_assert.rs index 099ce3c24d..fc2aba9701 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_assert.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_assert.rs @@ -14,6 +14,7 @@ impl FormatNodeRule for FormatStmtAssert { fn fmt_fields(&self, item: &StmtAssert, f: &mut PyFormatter) -> FormatResult<()> { let StmtAssert { range: _, + node_index: _, test, msg, } = item; diff --git a/crates/ruff_python_formatter/src/statement/stmt_assign.rs b/crates/ruff_python_formatter/src/statement/stmt_assign.rs index 54a2eec8bb..b9fbe6b7a3 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_assign.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_assign.rs @@ -33,6 +33,7 @@ impl FormatNodeRule for FormatStmtAssign { fn fmt_fields(&self, item: &StmtAssign, f: &mut PyFormatter) -> FormatResult<()> { let StmtAssign { range: _, + node_index: _, targets, value, } = item; diff --git a/crates/ruff_python_formatter/src/statement/stmt_aug_assign.rs b/crates/ruff_python_formatter/src/statement/stmt_aug_assign.rs index e69045d4e1..58ac4b34e5 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_aug_assign.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_aug_assign.rs @@ -21,6 +21,7 @@ impl FormatNodeRule for FormatStmtAugAssign { op, value, range: _, + node_index: _, } = item; if has_target_own_parentheses(target, f.context()) diff --git a/crates/ruff_python_formatter/src/statement/stmt_class_def.rs b/crates/ruff_python_formatter/src/statement/stmt_class_def.rs index f24409704b..9e84c76580 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_class_def.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_class_def.rs @@ -18,6 +18,7 @@ impl FormatNodeRule for FormatStmtClassDef { fn fmt_fields(&self, item: &StmtClassDef, f: &mut PyFormatter) -> FormatResult<()> { let StmtClassDef { range: _, + node_index: _, name, arguments, body, diff --git a/crates/ruff_python_formatter/src/statement/stmt_delete.rs b/crates/ruff_python_formatter/src/statement/stmt_delete.rs index e5b301e40f..fa3a27bb6f 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_delete.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_delete.rs @@ -13,7 +13,11 @@ pub struct FormatStmtDelete; impl FormatNodeRule for FormatStmtDelete { fn fmt_fields(&self, item: &StmtDelete, f: &mut PyFormatter) -> FormatResult<()> { - let StmtDelete { range: _, targets } = item; + let StmtDelete { + range: _, + node_index: _, + targets, + } = item; write!(f, [token("del"), space()])?; diff --git a/crates/ruff_python_formatter/src/statement/stmt_for.rs b/crates/ruff_python_formatter/src/statement/stmt_for.rs index a4758b6b6c..17517fc20a 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_for.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_for.rs @@ -36,6 +36,7 @@ impl FormatNodeRule for FormatStmtFor { body, orelse, range: _, + node_index: _, } = item; let comments = f.context().comments().clone(); diff --git a/crates/ruff_python_formatter/src/statement/stmt_function_def.rs b/crates/ruff_python_formatter/src/statement/stmt_function_def.rs index 61b1655fa5..86e2003efd 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_function_def.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_function_def.rs @@ -93,6 +93,7 @@ impl FormatNodeRule for FormatStmtFunctionDef { fn format_function_header(f: &mut PyFormatter, item: &StmtFunctionDef) -> FormatResult<()> { let StmtFunctionDef { range: _, + node_index: _, is_async, decorator_list: _, name, diff --git a/crates/ruff_python_formatter/src/statement/stmt_if.rs b/crates/ruff_python_formatter/src/statement/stmt_if.rs index 895c147675..9b080ddc6e 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_if.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_if.rs @@ -15,6 +15,7 @@ impl FormatNodeRule for FormatStmtIf { fn fmt_fields(&self, item: &StmtIf, f: &mut PyFormatter) -> FormatResult<()> { let StmtIf { range: _, + node_index: _, test, body, elif_else_clauses, @@ -68,6 +69,7 @@ pub(crate) fn format_elif_else_clause( ) -> FormatResult<()> { let ElifElseClause { range: _, + node_index: _, test, body, } = item; diff --git a/crates/ruff_python_formatter/src/statement/stmt_import.rs b/crates/ruff_python_formatter/src/statement/stmt_import.rs index 8045ae7864..c44b8ffd49 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_import.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_import.rs @@ -9,7 +9,11 @@ pub struct FormatStmtImport; impl FormatNodeRule for FormatStmtImport { fn fmt_fields(&self, item: &StmtImport, f: &mut PyFormatter) -> FormatResult<()> { - let StmtImport { names, range: _ } = item; + let StmtImport { + names, + range: _, + node_index: _, + } = item; let names = format_with(|f| { f.join_with(&format_args![token(","), space()]) .entries(names.iter().formatted()) diff --git a/crates/ruff_python_formatter/src/statement/stmt_import_from.rs b/crates/ruff_python_formatter/src/statement/stmt_import_from.rs index 6699013593..341adc64d2 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_import_from.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_import_from.rs @@ -19,6 +19,7 @@ impl FormatNodeRule for FormatStmtImportFrom { names, level, range: _, + node_index: _, } = item; write!( diff --git a/crates/ruff_python_formatter/src/statement/stmt_match.rs b/crates/ruff_python_formatter/src/statement/stmt_match.rs index 9ed641ba55..45e0f92386 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_match.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_match.rs @@ -15,6 +15,7 @@ impl FormatNodeRule for FormatStmtMatch { fn fmt_fields(&self, item: &StmtMatch, f: &mut PyFormatter) -> FormatResult<()> { let StmtMatch { range: _, + node_index: _, subject, cases, } = item; diff --git a/crates/ruff_python_formatter/src/statement/stmt_raise.rs b/crates/ruff_python_formatter/src/statement/stmt_raise.rs index 6a855e4418..bfb73d00af 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_raise.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_raise.rs @@ -13,6 +13,7 @@ impl FormatNodeRule for FormatStmtRaise { fn fmt_fields(&self, item: &StmtRaise, f: &mut PyFormatter) -> FormatResult<()> { let StmtRaise { range: _, + node_index: _, exc, cause, } = item; diff --git a/crates/ruff_python_formatter/src/statement/stmt_return.rs b/crates/ruff_python_formatter/src/statement/stmt_return.rs index ab782c02ed..fbeb9488e4 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_return.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_return.rs @@ -11,7 +11,11 @@ pub struct FormatStmtReturn; impl FormatNodeRule for FormatStmtReturn { fn fmt_fields(&self, item: &StmtReturn, f: &mut PyFormatter) -> FormatResult<()> { - let StmtReturn { range: _, value } = item; + let StmtReturn { + range: _, + node_index: _, + value, + } = item; token("return").fmt(f)?; diff --git a/crates/ruff_python_formatter/src/statement/stmt_try.rs b/crates/ruff_python_formatter/src/statement/stmt_try.rs index 97ef1512e4..411be5b339 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_try.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_try.rs @@ -66,6 +66,7 @@ impl FormatNodeRule for FormatStmtTry { finalbody, is_star, range: _, + node_index: _, } = item; let comments_info = f.context().comments().clone(); diff --git a/crates/ruff_python_formatter/src/statement/stmt_type_alias.rs b/crates/ruff_python_formatter/src/statement/stmt_type_alias.rs index e503d41366..a66b4f64be 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_type_alias.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_type_alias.rs @@ -17,6 +17,7 @@ impl FormatNodeRule for FormatStmtTypeAlias { type_params, value, range: _, + node_index: _, } = item; write!(f, [token("type"), space(), name.as_ref().format()])?; diff --git a/crates/ruff_python_formatter/src/statement/stmt_while.rs b/crates/ruff_python_formatter/src/statement/stmt_while.rs index c471078620..dc5593ded0 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_while.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_while.rs @@ -15,6 +15,7 @@ impl FormatNodeRule for FormatStmtWhile { fn fmt_fields(&self, item: &StmtWhile, f: &mut PyFormatter) -> FormatResult<()> { let StmtWhile { range: _, + node_index: _, test, body, orelse, diff --git a/crates/ruff_python_formatter/src/type_param/type_param_param_spec.rs b/crates/ruff_python_formatter/src/type_param/type_param_param_spec.rs index 6f9f5e5a72..4a33ed0684 100644 --- a/crates/ruff_python_formatter/src/type_param/type_param_param_spec.rs +++ b/crates/ruff_python_formatter/src/type_param/type_param_param_spec.rs @@ -10,6 +10,7 @@ impl FormatNodeRule for FormatTypeParamParamSpec { fn fmt_fields(&self, item: &TypeParamParamSpec, f: &mut PyFormatter) -> FormatResult<()> { let TypeParamParamSpec { range: _, + node_index: _, name, default, } = item; diff --git a/crates/ruff_python_formatter/src/type_param/type_param_type_var.rs b/crates/ruff_python_formatter/src/type_param/type_param_type_var.rs index 2944983267..c18032b795 100644 --- a/crates/ruff_python_formatter/src/type_param/type_param_type_var.rs +++ b/crates/ruff_python_formatter/src/type_param/type_param_type_var.rs @@ -10,6 +10,7 @@ impl FormatNodeRule for FormatTypeParamTypeVar { fn fmt_fields(&self, item: &TypeParamTypeVar, f: &mut PyFormatter) -> FormatResult<()> { let TypeParamTypeVar { range: _, + node_index: _, name, bound, default, diff --git a/crates/ruff_python_formatter/src/type_param/type_param_type_var_tuple.rs b/crates/ruff_python_formatter/src/type_param/type_param_type_var_tuple.rs index 30ab85e900..4b50da7704 100644 --- a/crates/ruff_python_formatter/src/type_param/type_param_type_var_tuple.rs +++ b/crates/ruff_python_formatter/src/type_param/type_param_type_var_tuple.rs @@ -10,6 +10,7 @@ impl FormatNodeRule for FormatTypeParamTypeVarTuple { fn fmt_fields(&self, item: &TypeParamTypeVarTuple, f: &mut PyFormatter) -> FormatResult<()> { let TypeParamTypeVarTuple { range: _, + node_index: _, name, default, } = item; diff --git a/crates/ruff_python_formatter/tests/normalizer.rs b/crates/ruff_python_formatter/tests/normalizer.rs index 8bed90221c..b89ec5130b 100644 --- a/crates/ruff_python_formatter/tests/normalizer.rs +++ b/crates/ruff_python_formatter/tests/normalizer.rs @@ -4,11 +4,11 @@ use { regex::Regex, }; -use ruff_python_ast::visitor::transformer::Transformer; use ruff_python_ast::{ self as ast, BytesLiteralFlags, Expr, FStringFlags, FStringPart, InterpolatedStringElement, InterpolatedStringLiteralElement, Stmt, StringFlags, }; +use ruff_python_ast::{AtomicNodeIndex, visitor::transformer::Transformer}; use ruff_python_ast::{StringLiteralFlags, visitor::transformer}; use ruff_text_size::{Ranged, TextRange}; @@ -82,6 +82,7 @@ impl Transformer for Normalizer { value: Box::from(string.value.to_str()), range: string.range, flags: StringLiteralFlags::empty(), + node_index: AtomicNodeIndex::dummy(), }); } } @@ -98,6 +99,7 @@ impl Transformer for Normalizer { value: bytes.value.bytes().collect(), range: bytes.range, flags: BytesLiteralFlags::empty(), + node_index: AtomicNodeIndex::dummy(), }); } } @@ -141,6 +143,7 @@ impl Transformer for Normalizer { InterpolatedStringLiteralElement { range, value: literal.into(), + node_index: AtomicNodeIndex::dummy(), }, )); } @@ -182,6 +185,7 @@ impl Transformer for Normalizer { elements: collector.elements.into(), range: fstring.range, flags: FStringFlags::empty(), + node_index: AtomicNodeIndex::dummy(), }); } } diff --git a/crates/ruff_python_parser/src/lib.rs b/crates/ruff_python_parser/src/lib.rs index 346bd89aa8..4825c2adce 100644 --- a/crates/ruff_python_parser/src/lib.rs +++ b/crates/ruff_python_parser/src/lib.rs @@ -208,13 +208,14 @@ pub fn parse_parenthesized_expression_range( /// /// ``` /// use ruff_python_parser::parse_string_annotation; -/// use ruff_python_ast::{StringLiteral, StringLiteralFlags}; +/// use ruff_python_ast::{StringLiteral, StringLiteralFlags, AtomicNodeIndex}; /// use ruff_text_size::{TextRange, TextSize}; /// /// let string = StringLiteral { /// value: "'''\n int | str'''".to_string().into_boxed_str(), /// flags: StringLiteralFlags::empty(), /// range: TextRange::new(TextSize::new(0), TextSize::new(16)), +/// node_index: AtomicNodeIndex::dummy() /// }; /// let parsed = parse_string_annotation("'''\n int | str'''", &string); /// assert!(!parsed.is_ok()); diff --git a/crates/ruff_python_parser/src/parser/expression.rs b/crates/ruff_python_parser/src/parser/expression.rs index 73ce206664..ffe6a56d8a 100644 --- a/crates/ruff_python_parser/src/parser/expression.rs +++ b/crates/ruff_python_parser/src/parser/expression.rs @@ -6,9 +6,9 @@ use rustc_hash::{FxBuildHasher, FxHashSet}; use ruff_python_ast::name::Name; use ruff_python_ast::{ - self as ast, AnyStringFlags, BoolOp, CmpOp, ConversionFlag, Expr, ExprContext, FString, - InterpolatedStringElement, InterpolatedStringElements, IpyEscapeKind, Number, Operator, - OperatorPrecedence, StringFlags, TString, UnaryOp, + self as ast, AnyStringFlags, AtomicNodeIndex, BoolOp, CmpOp, ConversionFlag, Expr, ExprContext, + FString, InterpolatedStringElement, InterpolatedStringElements, IpyEscapeKind, Number, + Operator, OperatorPrecedence, StringFlags, TString, UnaryOp, }; use ruff_text_size::{Ranged, TextLen, TextRange, TextSize}; @@ -305,6 +305,7 @@ impl<'src> Parser<'src> { op: bin_op, right: Box::new(right.expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } }; @@ -472,6 +473,7 @@ impl<'src> Parser<'src> { range: identifier.range, id: identifier.id, ctx, + node_index: AtomicNodeIndex::dummy(), } } @@ -487,13 +489,21 @@ impl<'src> Parser<'src> { let TokenValue::Name(name) = self.bump_value(TokenKind::Name) else { unreachable!(); }; - return ast::Identifier { id: name, range }; + return ast::Identifier { + id: name, + range, + node_index: AtomicNodeIndex::dummy(), + }; } if self.current_token_kind().is_soft_keyword() { let id = Name::new(self.src_text(range)); self.bump_soft_keyword_as_name(); - return ast::Identifier { id, range }; + return ast::Identifier { + id, + range, + node_index: AtomicNodeIndex::dummy(), + }; } if self.current_token_kind().is_keyword() { @@ -508,7 +518,11 @@ impl<'src> Parser<'src> { let id = Name::new(self.src_text(range)); self.bump_any(); - ast::Identifier { id, range } + ast::Identifier { + id, + range, + node_index: AtomicNodeIndex::dummy(), + } } else { self.add_error( ParseErrorType::OtherError("Expected an identifier".into()), @@ -518,6 +532,7 @@ impl<'src> Parser<'src> { ast::Identifier { id: Name::empty(), range: self.missing_node_range(), + node_index: AtomicNodeIndex::dummy(), } } } @@ -537,6 +552,7 @@ impl<'src> Parser<'src> { Expr::NumberLiteral(ast::ExprNumberLiteral { value: Number::Float(value), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::Complex => { @@ -546,6 +562,7 @@ impl<'src> Parser<'src> { Expr::NumberLiteral(ast::ExprNumberLiteral { value: Number::Complex { real, imag }, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::Int => { @@ -555,6 +572,7 @@ impl<'src> Parser<'src> { Expr::NumberLiteral(ast::ExprNumberLiteral { value: Number::Int(value), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::True => { @@ -562,6 +580,7 @@ impl<'src> Parser<'src> { Expr::BooleanLiteral(ast::ExprBooleanLiteral { value: true, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::False => { @@ -569,18 +588,21 @@ impl<'src> Parser<'src> { Expr::BooleanLiteral(ast::ExprBooleanLiteral { value: false, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::None => { self.bump(TokenKind::None); Expr::NoneLiteral(ast::ExprNoneLiteral { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::Ellipsis => { self.bump(TokenKind::Ellipsis); Expr::EllipsisLiteral(ast::ExprEllipsisLiteral { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::Name => Expr::Name(self.parse_name()), @@ -608,6 +630,7 @@ impl<'src> Parser<'src> { range: self.missing_node_range(), id: Name::empty(), ctx: ExprContext::Invalid, + node_index: AtomicNodeIndex::dummy(), }) } } @@ -650,6 +673,7 @@ impl<'src> Parser<'src> { func: Box::new(func), arguments, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -679,6 +703,7 @@ impl<'src> Parser<'src> { arg: None, value: value.expr, range: parser.node_range(argument_start), + node_index: AtomicNodeIndex::dummy(), }); seen_keyword_unpacking = true; @@ -743,6 +768,7 @@ impl<'src> Parser<'src> { ast::Identifier { id: ident_expr.id, range: ident_expr.range, + node_index: AtomicNodeIndex::dummy(), } } else { // TODO(dhruvmanila): Parser shouldn't drop the `parsed_expr` if it's @@ -755,6 +781,7 @@ impl<'src> Parser<'src> { ast::Identifier { id: Name::empty(), range: parsed_expr.range(), + node_index: AtomicNodeIndex::dummy(), } }; @@ -764,6 +791,7 @@ impl<'src> Parser<'src> { arg: Some(arg), value: value.expr, range: parser.node_range(argument_start), + node_index: AtomicNodeIndex::dummy(), }); } else { if !parsed_expr.is_unparenthesized_starred_expr() { @@ -788,6 +816,7 @@ impl<'src> Parser<'src> { let arguments = ast::Arguments { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), args: args.into_boxed_slice(), keywords: keywords.into_boxed_slice(), }; @@ -829,9 +858,11 @@ impl<'src> Parser<'src> { range: slice_range, id: Name::empty(), ctx: ExprContext::Invalid, + node_index: AtomicNodeIndex::dummy(), })), ctx: ExprContext::Load, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }; } @@ -851,6 +882,7 @@ impl<'src> Parser<'src> { ctx: ExprContext::Load, range: self.node_range(slice_start), parenthesized: false, + node_index: AtomicNodeIndex::dummy(), }); } else if slice.is_starred_expr() { // If the only slice element is a starred expression, that is represented @@ -861,6 +893,7 @@ impl<'src> Parser<'src> { ctx: ExprContext::Load, range: self.node_range(slice_start), parenthesized: false, + node_index: AtomicNodeIndex::dummy(), }); } @@ -909,6 +942,7 @@ impl<'src> Parser<'src> { slice: Box::new(slice), ctx: ExprContext::Load, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1002,6 +1036,7 @@ impl<'src> Parser<'src> { Expr::Slice(ast::ExprSlice { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), lower, upper, step, @@ -1032,6 +1067,7 @@ impl<'src> Parser<'src> { op, operand: Box::new(operand.expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1056,6 +1092,7 @@ impl<'src> Parser<'src> { attr, ctx: ExprContext::Load, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1099,6 +1136,7 @@ impl<'src> Parser<'src> { values, op, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1178,6 +1216,7 @@ impl<'src> Parser<'src> { ops: operators.into_boxed_slice(), comparators: comparators.into_boxed_slice(), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1229,18 +1268,22 @@ impl<'src> Parser<'src> { StringType::Str(string) => Expr::StringLiteral(ast::ExprStringLiteral { value: ast::StringLiteralValue::single(string), range, + node_index: AtomicNodeIndex::dummy(), }), StringType::Bytes(bytes) => Expr::BytesLiteral(ast::ExprBytesLiteral { value: ast::BytesLiteralValue::single(bytes), range, + node_index: AtomicNodeIndex::dummy(), }), StringType::FString(fstring) => Expr::FString(ast::ExprFString { value: ast::FStringValue::single(fstring), range, + node_index: AtomicNodeIndex::dummy(), }), StringType::TString(tstring) => Expr::TString(ast::ExprTString { value: ast::TStringValue::single(tstring), range, + node_index: AtomicNodeIndex::dummy(), }), }, _ => self.handle_implicitly_concatenated_strings(strings, range), @@ -1307,6 +1350,7 @@ impl<'src> Parser<'src> { return Expr::from(ast::ExprBytesLiteral { value: ast::BytesLiteralValue::concatenated(values), range, + node_index: AtomicNodeIndex::dummy(), }); } Ordering::Greater => unreachable!(), @@ -1346,6 +1390,7 @@ impl<'src> Parser<'src> { return Expr::from(ast::ExprStringLiteral { value: ast::StringLiteralValue::concatenated(values), range, + node_index: AtomicNodeIndex::dummy(), }); } @@ -1367,6 +1412,7 @@ impl<'src> Parser<'src> { return Expr::from(ast::ExprTString { value: ast::TStringValue::concatenated(parts), range, + node_index: AtomicNodeIndex::dummy(), }); } @@ -1387,6 +1433,7 @@ impl<'src> Parser<'src> { Expr::from(ast::ExprFString { value: ast::FStringValue::concatenated(parts), range, + node_index: AtomicNodeIndex::dummy(), }) } @@ -1422,6 +1469,7 @@ impl<'src> Parser<'src> { value: Box::new([]), range, flags: ast::BytesLiteralFlags::from(flags).with_invalid(), + node_index: AtomicNodeIndex::dummy(), }) } else { // test_err invalid_string_literal @@ -1431,6 +1479,7 @@ impl<'src> Parser<'src> { value: "".into(), range, flags: ast::StringLiteralFlags::from(flags).with_invalid(), + node_index: AtomicNodeIndex::dummy(), }) } } @@ -1604,6 +1653,7 @@ impl<'src> Parser<'src> { ast::InterpolatedStringLiteralElement { value: "".into(), range, + node_index: AtomicNodeIndex::dummy(), } }), ) @@ -1759,6 +1809,7 @@ impl<'src> Parser<'src> { Some(Box::new(ast::InterpolatedStringFormatSpec { range: self.node_range(spec_start), elements, + node_index: AtomicNodeIndex::dummy(), })) } else { None @@ -1810,6 +1861,7 @@ impl<'src> Parser<'src> { conversion, format_spec, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1839,6 +1891,7 @@ impl<'src> Parser<'src> { elts: vec![], ctx: ExprContext::Load, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }); } @@ -1890,6 +1943,7 @@ impl<'src> Parser<'src> { return Expr::Dict(ast::ExprDict { items: vec![], range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }); } @@ -2000,6 +2054,7 @@ impl<'src> Parser<'src> { elts: vec![], ctx: ExprContext::Load, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), parenthesized: true, }) .into(); @@ -2088,6 +2143,7 @@ impl<'src> Parser<'src> { elts, ctx: ExprContext::Load, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), parenthesized: parenthesized.is_yes(), } } @@ -2116,6 +2172,7 @@ impl<'src> Parser<'src> { elts, ctx: ExprContext::Load, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2164,6 +2221,7 @@ impl<'src> Parser<'src> { ast::ExprSet { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), elts, } } @@ -2206,6 +2264,7 @@ impl<'src> Parser<'src> { ast::ExprDict { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), items, } } @@ -2273,6 +2332,7 @@ impl<'src> Parser<'src> { ast::Comprehension { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), target: target.expr, iter: iter.expr, ifs, @@ -2302,6 +2362,7 @@ impl<'src> Parser<'src> { elt: Box::new(element), generators, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), parenthesized: parenthesized.is_yes(), } } @@ -2322,6 +2383,7 @@ impl<'src> Parser<'src> { elt: Box::new(element), generators, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2343,6 +2405,7 @@ impl<'src> Parser<'src> { value: Box::new(value), generators, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2362,6 +2425,7 @@ impl<'src> Parser<'src> { elt: Box::new(element), generators, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2398,6 +2462,7 @@ impl<'src> Parser<'src> { value: Box::new(parsed_expr.expr), ctx: ExprContext::Load, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2420,6 +2485,7 @@ impl<'src> Parser<'src> { ast::ExprAwait { value: Box::new(parsed_expr.expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2468,6 +2534,7 @@ impl<'src> Parser<'src> { Expr::Yield(ast::ExprYield { value, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } @@ -2507,6 +2574,7 @@ impl<'src> Parser<'src> { Expr::YieldFrom(ast::ExprYieldFrom { value: Box::new(expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } @@ -2547,6 +2615,7 @@ impl<'src> Parser<'src> { target: Box::new(target), value: Box::new(value.expr), range, + node_index: AtomicNodeIndex::dummy(), } } @@ -2594,6 +2663,7 @@ impl<'src> Parser<'src> { body: Box::new(body.expr), parameters, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2618,6 +2688,7 @@ impl<'src> Parser<'src> { test: Box::new(test.expr), orelse: Box::new(orelse.expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2643,6 +2714,7 @@ impl<'src> Parser<'src> { let command = ast::ExprIpyEscapeCommand { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), kind, value, }; @@ -2901,6 +2973,7 @@ impl From for FString { elements: value.elements, range: value.range, flags: value.flags.into(), + node_index: AtomicNodeIndex::dummy(), } } } @@ -2911,6 +2984,7 @@ impl From for TString { elements: value.elements, range: value.range, flags: value.flags.into(), + node_index: AtomicNodeIndex::dummy(), } } } diff --git a/crates/ruff_python_parser/src/parser/mod.rs b/crates/ruff_python_parser/src/parser/mod.rs index 0668f18b29..904e92df95 100644 --- a/crates/ruff_python_parser/src/parser/mod.rs +++ b/crates/ruff_python_parser/src/parser/mod.rs @@ -2,7 +2,7 @@ use std::cmp::Ordering; use bitflags::bitflags; -use ruff_python_ast::{Mod, ModExpression, ModModule}; +use ruff_python_ast::{AtomicNodeIndex, Mod, ModExpression, ModModule}; use ruff_text_size::{Ranged, TextRange, TextSize}; use crate::error::UnsupportedSyntaxError; @@ -132,6 +132,7 @@ impl<'src> Parser<'src> { ModExpression { body: Box::new(parsed_expr.expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -149,6 +150,7 @@ impl<'src> Parser<'src> { ModModule { body, range: TextRange::new(self.start_offset, self.current_token_range().end()), + node_index: AtomicNodeIndex::dummy(), } } diff --git a/crates/ruff_python_parser/src/parser/pattern.rs b/crates/ruff_python_parser/src/parser/pattern.rs index 461b859c78..dd552410db 100644 --- a/crates/ruff_python_parser/src/parser/pattern.rs +++ b/crates/ruff_python_parser/src/parser/pattern.rs @@ -1,5 +1,7 @@ use ruff_python_ast::name::Name; -use ruff_python_ast::{self as ast, Expr, ExprContext, Number, Operator, Pattern, Singleton}; +use ruff_python_ast::{ + self as ast, AtomicNodeIndex, Expr, ExprContext, Number, Operator, Pattern, Singleton, +}; use ruff_text_size::{Ranged, TextSize}; use crate::ParseErrorType; @@ -110,6 +112,7 @@ impl Parser<'_> { lhs = Pattern::MatchOr(ast::PatternMatchOr { range: self.node_range(start), patterns, + node_index: AtomicNodeIndex::dummy(), }); } @@ -125,6 +128,7 @@ impl Parser<'_> { range: self.node_range(start), name: Some(ident), pattern: Some(Box::new(lhs)), + node_index: AtomicNodeIndex::dummy(), }); } @@ -200,18 +204,25 @@ impl Parser<'_> { } else { let key = match parser.parse_match_pattern_lhs(AllowStarPattern::No) { Pattern::MatchValue(ast::PatternMatchValue { value, .. }) => *value, - Pattern::MatchSingleton(ast::PatternMatchSingleton { value, range }) => { - match value { - Singleton::None => Expr::NoneLiteral(ast::ExprNoneLiteral { range }), - Singleton::True => { - Expr::BooleanLiteral(ast::ExprBooleanLiteral { value: true, range }) - } - Singleton::False => Expr::BooleanLiteral(ast::ExprBooleanLiteral { - value: false, - range, - }), + Pattern::MatchSingleton(ast::PatternMatchSingleton { + value, + range, + node_index, + }) => match value { + Singleton::None => { + Expr::NoneLiteral(ast::ExprNoneLiteral { range, node_index }) } - } + Singleton::True => Expr::BooleanLiteral(ast::ExprBooleanLiteral { + value: true, + range, + node_index, + }), + Singleton::False => Expr::BooleanLiteral(ast::ExprBooleanLiteral { + value: false, + range, + node_index, + }), + }, pattern => { parser.add_error( ParseErrorType::OtherError("Invalid mapping pattern key".to_string()), @@ -244,6 +255,7 @@ impl Parser<'_> { keys, patterns, rest, + node_index: AtomicNodeIndex::dummy(), } } @@ -267,6 +279,7 @@ impl Parser<'_> { } else { Some(ident) }, + node_index: AtomicNodeIndex::dummy(), } } @@ -306,6 +319,7 @@ impl Parser<'_> { return Pattern::MatchSequence(ast::PatternMatchSequence { patterns: vec![], range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }); } @@ -360,6 +374,7 @@ impl Parser<'_> { ast::PatternMatchSequence { range: self.node_range(start), patterns, + node_index: AtomicNodeIndex::dummy(), } } @@ -374,6 +389,7 @@ impl Parser<'_> { Pattern::MatchSingleton(ast::PatternMatchSingleton { value: Singleton::None, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::True => { @@ -381,6 +397,7 @@ impl Parser<'_> { Pattern::MatchSingleton(ast::PatternMatchSingleton { value: Singleton::True, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::False => { @@ -388,6 +405,7 @@ impl Parser<'_> { Pattern::MatchSingleton(ast::PatternMatchSingleton { value: Singleton::False, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::String | TokenKind::FStringStart | TokenKind::TStringStart => { @@ -396,6 +414,7 @@ impl Parser<'_> { Pattern::MatchValue(ast::PatternMatchValue { value: Box::new(str), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::Complex => { @@ -408,8 +427,10 @@ impl Parser<'_> { value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral { value: Number::Complex { real, imag }, range, + node_index: AtomicNodeIndex::dummy(), })), range, + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::Int => { @@ -422,8 +443,10 @@ impl Parser<'_> { value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral { value: Number::Int(value), range, + node_index: AtomicNodeIndex::dummy(), })), range, + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::Float => { @@ -436,8 +459,10 @@ impl Parser<'_> { value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral { value: Number::Float(value), range, + node_index: AtomicNodeIndex::dummy(), })), range, + node_index: AtomicNodeIndex::dummy(), }) } kind => { @@ -464,6 +489,7 @@ impl Parser<'_> { return Pattern::MatchValue(ast::PatternMatchValue { value: Box::new(Expr::UnaryOp(unary_expr)), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }); } } @@ -483,6 +509,7 @@ impl Parser<'_> { Pattern::MatchValue(ast::PatternMatchValue { value: Box::new(attribute), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } else { // test_ok match_as_pattern_soft_keyword @@ -503,6 +530,7 @@ impl Parser<'_> { range: ident.range, pattern: None, name: if &ident == "_" { None } else { Some(ident) }, + node_index: AtomicNodeIndex::dummy(), }) } } else { @@ -516,10 +544,12 @@ impl Parser<'_> { range: self.missing_node_range(), id: Name::empty(), ctx: ExprContext::Invalid, + node_index: AtomicNodeIndex::dummy(), }); Pattern::MatchValue(ast::PatternMatchValue { range: invalid_node.range(), value: Box::new(invalid_node), + node_index: AtomicNodeIndex::dummy(), }) } } @@ -575,8 +605,10 @@ impl Parser<'_> { op: operator, right: rhs_value, range, + node_index: AtomicNodeIndex::dummy(), })), range, + node_index: AtomicNodeIndex::dummy(), } } @@ -616,12 +648,14 @@ impl Parser<'_> { range: ident.range(), id: ident.id, ctx: ExprContext::Load, + node_index: AtomicNodeIndex::dummy(), })) } else { Box::new(Expr::Name(ast::ExprName { range: ident.range(), id: Name::empty(), ctx: ExprContext::Invalid, + node_index: AtomicNodeIndex::dummy(), })) } } @@ -673,6 +707,7 @@ impl Parser<'_> { ast::Identifier { id: Name::empty(), range: parser.missing_node_range(), + node_index: AtomicNodeIndex::dummy(), } }; @@ -682,6 +717,7 @@ impl Parser<'_> { attr: key, pattern: value_pattern, range: parser.node_range(pattern_start), + node_index: AtomicNodeIndex::dummy(), }); } else { has_seen_pattern = true; @@ -707,8 +743,10 @@ impl Parser<'_> { patterns, keywords, range: self.node_range(arguments_start), + node_index: AtomicNodeIndex::dummy(), }, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } } diff --git a/crates/ruff_python_parser/src/parser/recovery.rs b/crates/ruff_python_parser/src/parser/recovery.rs index 1dd4489a8c..f66f7e6dd1 100644 --- a/crates/ruff_python_parser/src/parser/recovery.rs +++ b/crates/ruff_python_parser/src/parser/recovery.rs @@ -27,27 +27,38 @@ use ruff_text_size::{Ranged, TextLen, TextRange}; /// without dropping one of them as there's no way to represent `x as y` as a valid expression. pub(super) fn pattern_to_expr(pattern: Pattern) -> Expr { match pattern { - Pattern::MatchSingleton(ast::PatternMatchSingleton { range, value }) => match value { - ast::Singleton::True => { - Expr::BooleanLiteral(ast::ExprBooleanLiteral { value: true, range }) - } + Pattern::MatchSingleton(ast::PatternMatchSingleton { + range, + node_index, + value, + }) => match value { + ast::Singleton::True => Expr::BooleanLiteral(ast::ExprBooleanLiteral { + value: true, + range, + node_index, + }), ast::Singleton::False => Expr::BooleanLiteral(ast::ExprBooleanLiteral { value: false, range, + node_index, }), - ast::Singleton::None => Expr::NoneLiteral(ast::ExprNoneLiteral { range }), + ast::Singleton::None => Expr::NoneLiteral(ast::ExprNoneLiteral { range, node_index }), }, Pattern::MatchValue(ast::PatternMatchValue { value, .. }) => *value, // We don't know which kind of sequence this is: `case [1, 2]:` or `case (1, 2):`. - Pattern::MatchSequence(ast::PatternMatchSequence { range, patterns }) => { - Expr::List(ast::ExprList { - elts: patterns.into_iter().map(pattern_to_expr).collect(), - ctx: ExprContext::Store, - range, - }) - } + Pattern::MatchSequence(ast::PatternMatchSequence { + range, + node_index, + patterns, + }) => Expr::List(ast::ExprList { + elts: patterns.into_iter().map(pattern_to_expr).collect(), + ctx: ExprContext::Store, + range, + node_index, + }), Pattern::MatchMapping(ast::PatternMatchMapping { range, + node_index, keys, patterns, rest, @@ -63,22 +74,30 @@ pub(super) fn pattern_to_expr(pattern: Pattern) -> Expr { if let Some(rest) = rest { let value = Expr::Name(ast::ExprName { range: rest.range, + node_index: node_index.clone(), id: rest.id, ctx: ExprContext::Store, }); items.push(ast::DictItem { key: None, value }); } - Expr::Dict(ast::ExprDict { range, items }) + Expr::Dict(ast::ExprDict { + range, + node_index, + items, + }) } Pattern::MatchClass(ast::PatternMatchClass { range, + node_index, cls, arguments, }) => Expr::Call(ast::ExprCall { range, + node_index: node_index.clone(), func: cls, arguments: ast::Arguments { range: arguments.range, + node_index: node_index.clone(), args: arguments .patterns .into_iter() @@ -89,18 +108,25 @@ pub(super) fn pattern_to_expr(pattern: Pattern) -> Expr { .into_iter() .map(|keyword_pattern| ast::Keyword { range: keyword_pattern.range, + node_index: node_index.clone(), arg: Some(keyword_pattern.attr), value: pattern_to_expr(keyword_pattern.pattern), }) .collect(), }, }), - Pattern::MatchStar(ast::PatternMatchStar { range, name }) => { + Pattern::MatchStar(ast::PatternMatchStar { + range, + node_index, + name, + }) => { if let Some(name) = name { Expr::Starred(ast::ExprStarred { range, + node_index: node_index.clone(), value: Box::new(Expr::Name(ast::ExprName { range: name.range, + node_index, id: name.id, ctx: ExprContext::Store, })), @@ -109,10 +135,12 @@ pub(super) fn pattern_to_expr(pattern: Pattern) -> Expr { } else { Expr::Starred(ast::ExprStarred { range, + node_index: node_index.clone(), value: Box::new(Expr::Name(ast::ExprName { range: TextRange::new(range.end() - "_".text_len(), range.end()), id: Name::new_static("_"), ctx: ExprContext::Store, + node_index, })), ctx: ExprContext::Store, }) @@ -120,32 +148,41 @@ pub(super) fn pattern_to_expr(pattern: Pattern) -> Expr { } Pattern::MatchAs(ast::PatternMatchAs { range, + node_index, pattern, name, }) => match (pattern, name) { (Some(_), Some(_)) => Expr::Name(ast::ExprName { range, + node_index, id: Name::empty(), ctx: ExprContext::Invalid, }), (Some(pattern), None) => pattern_to_expr(*pattern), (None, Some(name)) => Expr::Name(ast::ExprName { range: name.range, + node_index, id: name.id, ctx: ExprContext::Store, }), (None, None) => Expr::Name(ast::ExprName { range, + node_index, id: Name::new_static("_"), ctx: ExprContext::Store, }), }, - Pattern::MatchOr(ast::PatternMatchOr { patterns, .. }) => { + Pattern::MatchOr(ast::PatternMatchOr { + patterns, + node_index, + .. + }) => { let to_bin_expr = |left: Pattern, right: Pattern| ast::ExprBinOp { range: TextRange::new(left.start(), right.end()), left: Box::new(pattern_to_expr(left)), op: ast::Operator::BitOr, right: Box::new(pattern_to_expr(right)), + node_index: node_index.clone(), }; let mut iter = patterns.into_iter(); @@ -158,6 +195,7 @@ pub(super) fn pattern_to_expr(pattern: Pattern) -> Expr { left: Box::new(Expr::BinOp(expr_bin_op)), op: ast::Operator::BitOr, right: Box::new(pattern_to_expr(pattern)), + node_index: node_index.clone(), } })) } diff --git a/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__expr_mode_valid_syntax.snap b/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__expr_mode_valid_syntax.snap index 29cb09b85a..ab002c583a 100644 --- a/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__expr_mode_valid_syntax.snap +++ b/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__expr_mode_valid_syntax.snap @@ -1,10 +1,10 @@ --- source: crates/ruff_python_parser/src/parser/tests.rs expression: parsed.expr() -snapshot_kind: text --- Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..5, id: Name("first"), ctx: Load, diff --git a/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__ipython_escape_commands.snap b/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__ipython_escape_commands.snap index e5566ded21..8d6fbc000c 100644 --- a/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__ipython_escape_commands.snap +++ b/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__ipython_escape_commands.snap @@ -1,20 +1,23 @@ --- source: crates/ruff_python_parser/src/parser/tests.rs expression: parsed.syntax() -snapshot_kind: text --- Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..929, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..42, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 27..40, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("a"), ctx: Load, @@ -23,6 +26,7 @@ Module( op: Mod, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("b"), ctx: Load, @@ -34,6 +38,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 66..73, kind: Help2, value: "a.foo", @@ -41,6 +46,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 74..80, kind: Help, value: "a.foo", @@ -48,6 +54,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 81..88, kind: Help, value: "a.foo", @@ -55,6 +62,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 89..100, kind: Help2, value: "a.foo()", @@ -62,6 +70,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 115..128, kind: Magic, value: "timeit a = b", @@ -69,6 +78,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 129..147, kind: Magic, value: "timeit foo(b) % 3", @@ -76,6 +86,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 148..176, kind: Magic, value: "alias showPath pwd && ls -a", @@ -83,6 +94,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 177..205, kind: Magic, value: "timeit a = foo(b); b = 2", @@ -90,6 +102,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 206..226, kind: Magic, value: "matplotlib --inline", @@ -97,6 +110,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 227..253, kind: Magic, value: "matplotlib --inline", @@ -104,6 +118,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 277..309, kind: Shell, value: "pwd && ls -a | sed 's/^/\\ /'", @@ -111,6 +126,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 310..347, kind: Shell, value: "pwd && ls -a | sed 's/^/\\\\ /'", @@ -118,6 +134,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 348..393, kind: ShCap, value: "cd /Users/foo/Library/Application\\ Support/", @@ -125,16 +142,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 566..626, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 570..573, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 573..575, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -145,13 +167,16 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 581..626, value: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 598..620, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 598..599, id: Name("a"), ctx: Load, @@ -163,6 +188,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 619..620, id: Name("b"), ctx: Load, @@ -179,6 +205,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 656..664, kind: Paren, value: "foo 1 2", @@ -186,6 +213,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 665..673, kind: Quote2, value: "foo 1 2", @@ -193,6 +221,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 674..682, kind: Quote, value: "foo 1 2", @@ -200,10 +229,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 711..737, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 715..716, id: Name("a"), ctx: Store, @@ -211,9 +242,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 720..728, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 720..725, id: Name("range"), ctx: Load, @@ -221,9 +254,11 @@ Module( ), arguments: Arguments { range: 725..728, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 726..727, value: Int( 5, @@ -238,6 +273,7 @@ Module( body: [ IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 734..737, kind: Shell, value: "ls", @@ -249,10 +285,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 739..748, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 739..741, id: Name("p1"), ctx: Store, @@ -261,6 +299,7 @@ Module( ], value: IpyEscapeCommand( ExprIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 744..748, kind: Shell, value: "pwd", @@ -270,9 +309,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 749..763, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 749..751, id: Name("p2"), ctx: Store, @@ -280,6 +321,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 753..756, id: Name("str"), ctx: Load, @@ -288,6 +330,7 @@ Module( value: Some( IpyEscapeCommand( ExprIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 759..763, kind: Shell, value: "pwd", @@ -299,10 +342,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 764..784, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 764..767, id: Name("foo"), ctx: Store, @@ -311,6 +356,7 @@ Module( ], value: IpyEscapeCommand( ExprIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 770..784, kind: Magic, value: "foo bar", @@ -320,6 +366,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 786..791, kind: Magic, value: " foo", @@ -327,10 +374,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 792..813, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 792..795, id: Name("foo"), ctx: Store, @@ -339,6 +388,7 @@ Module( ], value: IpyEscapeCommand( ExprIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 798..813, kind: Magic, value: "foo # comment", @@ -348,6 +398,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 838..842, kind: Help, value: "foo", @@ -355,6 +406,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 843..852, kind: Help2, value: "foo.bar", @@ -362,6 +414,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 853..865, kind: Help, value: "foo.bar.baz", @@ -369,6 +422,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 866..874, kind: Help2, value: "foo[0]", @@ -376,6 +430,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 875..885, kind: Help, value: "foo[0][1]", @@ -383,6 +438,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 886..905, kind: Help2, value: "foo.bar[0].baz[1]", @@ -390,6 +446,7 @@ Module( ), IpyEscapeCommand( StmtIpyEscapeCommand { + node_index: AtomicNodeIndex(..), range: 906..929, kind: Help2, value: "foo.bar[0].baz[2].egg", diff --git a/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__unicode_aliases.snap b/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__unicode_aliases.snap index fe8e440c17..6ee807fc8c 100644 --- a/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__unicode_aliases.snap +++ b/crates/ruff_python_parser/src/parser/snapshots/ruff_python_parser__parser__tests__unicode_aliases.snap @@ -1,15 +1,16 @@ --- source: crates/ruff_python_parser/src/parser/tests.rs expression: suite -snapshot_kind: text --- [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..37, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -18,11 +19,13 @@ snapshot_kind: text ], value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 4..37, value: StringLiteralValue { inner: Single( StringLiteral { range: 4..37, + node_index: AtomicNodeIndex(..), value: "\u{8}another cool trick", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/parser/statement.rs b/crates/ruff_python_parser/src/parser/statement.rs index 6a44192746..d738fc78d6 100644 --- a/crates/ruff_python_parser/src/parser/statement.rs +++ b/crates/ruff_python_parser/src/parser/statement.rs @@ -3,8 +3,8 @@ use std::fmt::{Display, Write}; use ruff_python_ast::name::Name; use ruff_python_ast::{ - self as ast, ExceptHandler, Expr, ExprContext, IpyEscapeKind, Operator, PythonVersion, Stmt, - WithItem, + self as ast, AtomicNodeIndex, ExceptHandler, Expr, ExprContext, IpyEscapeKind, Operator, + PythonVersion, Stmt, WithItem, }; use ruff_text_size::{Ranged, TextRange, TextSize}; @@ -312,6 +312,7 @@ impl<'src> Parser<'src> { Stmt::Expr(ast::StmtExpr { range: self.node_range(start), value: Box::new(parsed_expr.expr), + node_index: AtomicNodeIndex::dummy(), }) } } @@ -367,6 +368,7 @@ impl<'src> Parser<'src> { ast::StmtDelete { targets, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -415,6 +417,7 @@ impl<'src> Parser<'src> { ast::StmtReturn { range: self.node_range(start), value, + node_index: AtomicNodeIndex::dummy(), } } @@ -520,6 +523,7 @@ impl<'src> Parser<'src> { range: self.node_range(start), exc, cause, + node_index: AtomicNodeIndex::dummy(), } } @@ -560,6 +564,7 @@ impl<'src> Parser<'src> { ast::StmtImport { range: self.node_range(start), names, + node_index: AtomicNodeIndex::dummy(), } } @@ -671,6 +676,7 @@ impl<'src> Parser<'src> { names, level: leading_dots, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -687,9 +693,11 @@ impl<'src> Parser<'src> { name: ast::Identifier { id: Name::new_static("*"), range, + node_index: AtomicNodeIndex::dummy(), }, asname: None, range, + node_index: AtomicNodeIndex::dummy(), }; } @@ -722,6 +730,7 @@ impl<'src> Parser<'src> { range: self.node_range(start), name, asname, + node_index: AtomicNodeIndex::dummy(), } } @@ -750,6 +759,7 @@ impl<'src> Parser<'src> { ast::Identifier { id: Name::from(dotted_name), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -765,6 +775,7 @@ impl<'src> Parser<'src> { self.bump(TokenKind::Pass); ast::StmtPass { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -780,6 +791,7 @@ impl<'src> Parser<'src> { self.bump(TokenKind::Continue); ast::StmtContinue { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -795,6 +807,7 @@ impl<'src> Parser<'src> { self.bump(TokenKind::Break); ast::StmtBreak { range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -844,6 +857,7 @@ impl<'src> Parser<'src> { test: Box::new(test.expr), msg, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -882,6 +896,7 @@ impl<'src> Parser<'src> { ast::StmtGlobal { range: self.node_range(start), names, + node_index: AtomicNodeIndex::dummy(), } } @@ -927,6 +942,7 @@ impl<'src> Parser<'src> { ast::StmtNonlocal { range: self.node_range(start), names, + node_index: AtomicNodeIndex::dummy(), } } @@ -979,6 +995,7 @@ impl<'src> Parser<'src> { type_params: type_params.map(Box::new), value: Box::new(value.expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1001,7 +1018,12 @@ impl<'src> Parser<'src> { self.add_error(ParseErrorType::UnexpectedIpythonEscapeCommand, range); } - ast::StmtIpyEscapeCommand { range, kind, value } + ast::StmtIpyEscapeCommand { + range, + kind, + value, + node_index: AtomicNodeIndex::dummy(), + } } /// Parses an IPython help end escape command at the statement level. @@ -1097,6 +1119,7 @@ impl<'src> Parser<'src> { value: value.into_boxed_str(), kind, range: self.node_range(parsed_expr.start()), + node_index: AtomicNodeIndex::dummy(), } } @@ -1164,6 +1187,7 @@ impl<'src> Parser<'src> { targets, value: Box::new(value.expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1243,6 +1267,7 @@ impl<'src> Parser<'src> { value, simple, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1297,6 +1322,7 @@ impl<'src> Parser<'src> { op, value: Box::new(value.expr), range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1352,6 +1378,7 @@ impl<'src> Parser<'src> { body, elif_else_clauses, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1395,6 +1422,7 @@ impl<'src> Parser<'src> { test, body, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1544,6 +1572,7 @@ impl<'src> Parser<'src> { finalbody, is_star, range: self.node_range(try_start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1693,6 +1722,7 @@ impl<'src> Parser<'src> { name, body: except_body, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }), block_kind, ) @@ -1804,6 +1834,7 @@ impl<'src> Parser<'src> { body, orelse, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1851,6 +1882,7 @@ impl<'src> Parser<'src> { body, orelse, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -1980,6 +2012,7 @@ impl<'src> Parser<'src> { is_async: false, returns, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2049,6 +2082,7 @@ impl<'src> Parser<'src> { type_params: type_params.map(Box::new), arguments, body, + node_index: AtomicNodeIndex::dummy(), } } @@ -2075,6 +2109,7 @@ impl<'src> Parser<'src> { body, is_async: false, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2343,6 +2378,7 @@ impl<'src> Parser<'src> { range: self.node_range(start), context_expr: context_expr.expr, optional_vars, + node_index: AtomicNodeIndex::dummy(), }, } } @@ -2411,6 +2447,7 @@ impl<'src> Parser<'src> { subject: Box::new(subject), cases, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } TokenKind::Newline if matches!(self.peek2(), (TokenKind::Indent, TokenKind::Case)) => { @@ -2433,6 +2470,7 @@ impl<'src> Parser<'src> { subject: Box::new(subject), cases, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), }) } _ => { @@ -2480,6 +2518,7 @@ impl<'src> Parser<'src> { subject: Box::new(subject), cases, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2658,6 +2697,7 @@ impl<'src> Parser<'src> { guard, body, range: self.node_range(start), + node_index: AtomicNodeIndex::dummy(), } } @@ -2826,6 +2866,7 @@ impl<'src> Parser<'src> { decorators.push(ast::Decorator { expression: parsed_expr.expr, range: self.node_range(decorator_start), + node_index: AtomicNodeIndex::dummy(), }); // test_err decorator_missing_newline @@ -3039,6 +3080,7 @@ impl<'src> Parser<'src> { range: self.node_range(start), name, annotation, + node_index: AtomicNodeIndex::dummy(), } } @@ -3088,6 +3130,7 @@ impl<'src> Parser<'src> { range: self.node_range(start), parameter, default, + node_index: AtomicNodeIndex::dummy(), } } @@ -3405,6 +3448,7 @@ impl<'src> Parser<'src> { ast::TypeParams { range: self.node_range(start), type_params, + node_index: AtomicNodeIndex::dummy(), } } @@ -3467,6 +3511,7 @@ impl<'src> Parser<'src> { range: self.node_range(start), name, default, + node_index: AtomicNodeIndex::dummy(), }) // test_ok type_param_param_spec @@ -3506,6 +3551,7 @@ impl<'src> Parser<'src> { range: self.node_range(start), name, default, + node_index: AtomicNodeIndex::dummy(), }) // test_ok type_param_type_var // type X[T] = int @@ -3589,6 +3635,7 @@ impl<'src> Parser<'src> { name, bound, default, + node_index: AtomicNodeIndex::dummy(), }) } } diff --git a/crates/ruff_python_parser/src/semantic_errors.rs b/crates/ruff_python_parser/src/semantic_errors.rs index 0996ea4644..c8d7fb458f 100644 --- a/crates/ruff_python_parser/src/semantic_errors.rs +++ b/crates/ruff_python_parser/src/semantic_errors.rs @@ -118,7 +118,11 @@ impl SemanticSyntaxChecker { // _ = *(p + q) Self::invalid_star_expression(value, ctx); } - Stmt::Return(ast::StmtReturn { value, range }) => { + Stmt::Return(ast::StmtReturn { + value, + range, + node_index: _, + }) => { if let Some(value) = value { // test_err single_star_return // def f(): return *x @@ -638,6 +642,7 @@ impl SemanticSyntaxChecker { range, id, ctx: expr_ctx, + node_index: _, }) => { // test_err write_to_debug_expr // del __debug__ diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap index 84fbc3cae0..04e5596e74 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..15, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..15, + node_index: AtomicNodeIndex(..), value: "\u{8}", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap index 4cfaed6c05..8f28967afe 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..9, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..9, + node_index: AtomicNodeIndex(..), value: "\u{7}", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap index 9fce7955de..258440c8d4 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..21, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..21, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..21, + node_index: AtomicNodeIndex(..), value: "\r", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap index 9f6bf06e28..447e6a7e41 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..45, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..45, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..45, + node_index: AtomicNodeIndex(..), value: "\u{89}", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap index 9a8831f2db..ac810427d1 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..12, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..12, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..12, + node_index: AtomicNodeIndex(..), value: "\u{7f}", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__dont_panic_on_8_in_octal_escape.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__dont_panic_on_8_in_octal_escape.snap index 3fd84081eb..ccac176830 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__dont_panic_on_8_in_octal_escape.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__dont_panic_on_8_in_octal_escape.snap @@ -1,15 +1,16 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..16, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("bold"), ctx: Store, @@ -18,11 +19,13 @@ snapshot_kind: text ], value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 7..16, value: StringLiteralValue { inner: Single( StringLiteral { range: 7..16, + node_index: AtomicNodeIndex(..), value: "\u{3}8[1m", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap index fd003b6a4a..59f9b5213b 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..738, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 0..738, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 0..738, + node_index: AtomicNodeIndex(..), value: [ 0, 1, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap index d924ebd21a..4f706e1fde 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..12, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..12, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..12, + node_index: AtomicNodeIndex(..), value: "\u{1b}", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap index e830dd89ea..aad2af9894 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 0..13, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 0..13, + node_index: AtomicNodeIndex(..), value: [ 111, 109, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap index cf13defcb6..cfc7e3ee09 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..14, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 0..14, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 0..14, + node_index: AtomicNodeIndex(..), value: [ 35, 97, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap index bd6d960559..21c8747c01 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..15, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..15, + node_index: AtomicNodeIndex(..), value: "\u{c}", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap index 78e450c4e2..b418df379e 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..22, value: FStringValue { inner: Single( FString( FString { range: 0..22, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..5, + node_index: AtomicNodeIndex(..), value: "aaa", }, ), Interpolation( InterpolatedElement { range: 5..10, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("bbb"), ctx: Load, @@ -39,14 +45,17 @@ expression: suite Literal( InterpolatedStringLiteralElement { range: 10..13, + node_index: AtomicNodeIndex(..), value: "ccc", }, ), Interpolation( InterpolatedElement { range: 13..18, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("ddd"), ctx: Load, @@ -60,6 +69,7 @@ expression: suite Literal( InterpolatedStringLiteralElement { range: 18..21, + node_index: AtomicNodeIndex(..), value: "eee", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap index 02db608ab1..8cb891a551 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..8, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..8, value: FStringValue { inner: Single( FString( FString { range: 0..8, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..4, + node_index: AtomicNodeIndex(..), value: "\\", }, ), Interpolation( InterpolatedElement { range: 4..7, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap index 9482530d4a..b1df67c78f 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..8, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..8, value: FStringValue { inner: Single( FString( FString { range: 0..8, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..4, + node_index: AtomicNodeIndex(..), value: "\n", }, ), Interpolation( InterpolatedElement { range: 4..7, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap index 6ccd6f466d..c3fd51c096 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..9, value: FStringValue { inner: Single( FString( FString { range: 0..9, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 3..5, + node_index: AtomicNodeIndex(..), value: "\\\n", }, ), Interpolation( InterpolatedElement { range: 5..8, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap index 840873127a..35e090916c 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..10, value: FStringValue { inner: Single( FString( FString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..7, id: Name("user"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap index 3d5f1e79c0..e05de72bc4 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..38, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..38, value: FStringValue { inner: Single( FString( FString { range: 0..38, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..6, + node_index: AtomicNodeIndex(..), value: "mix ", }, ), Interpolation( InterpolatedElement { range: 6..13, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..11, id: Name("user"), ctx: Load, @@ -44,14 +50,17 @@ expression: suite Literal( InterpolatedStringLiteralElement { range: 13..28, + node_index: AtomicNodeIndex(..), value: " with text and ", }, ), Interpolation( InterpolatedElement { range: 28..37, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..35, id: Name("second"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap index d2063a00ec..932339c359 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..14, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..14, value: FStringValue { inner: Single( FString( FString { range: 0..14, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..13, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..7, id: Name("user"), ctx: Load, @@ -35,10 +40,12 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 9..12, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 9..12, + node_index: AtomicNodeIndex(..), value: ">10", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap index 98be2ba27a..f651b99dff 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..11, value: FStringValue { inner: Single( FString( FString { range: 0..11, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 4..5, + node_index: AtomicNodeIndex(..), value: "\n", }, ), Interpolation( InterpolatedElement { range: 5..8, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap index c65231cc33..4d694d9dca 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..9, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..9, + node_index: AtomicNodeIndex(..), value: "\u{88}", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap index 1a57e2606a..52bb0728d3 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap @@ -5,15 +5,18 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..3, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..3, value: FStringValue { inner: Single( FString( FString { range: 0..3, + node_index: AtomicNodeIndex(..), elements: [], flags: FStringFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_tstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_tstring.snap index 3ccfef4404..3e32e6364a 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_tstring.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_tstring.snap @@ -5,15 +5,18 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..3, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..3, value: TStringValue { inner: Single( TString( TString { range: 0..3, + node_index: AtomicNodeIndex(..), elements: [], flags: TStringFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap index e43a1b109c..291eb7e8f4 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..17, value: FStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,10 +29,12 @@ expression: suite FString( FString { range: 9..17, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 11..16, + node_index: AtomicNodeIndex(..), value: "world", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap index e43a1b109c..291eb7e8f4 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..17, value: FStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,10 +29,12 @@ expression: suite FString( FString { range: 9..17, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 11..16, + node_index: AtomicNodeIndex(..), value: "world", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap index a9f5a2c31f..66e0a2cbd9 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..22, value: FStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,23 +29,28 @@ expression: suite FString( FString { range: 9..22, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 11..16, + node_index: AtomicNodeIndex(..), value: "world", }, ), Interpolation( InterpolatedElement { range: 16..21, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, value: StringLiteralValue { inner: Single( StringLiteral { range: 17..20, + node_index: AtomicNodeIndex(..), value: "!", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_4.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_4.snap index 6b348cab6d..d7830a63d0 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_4.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_4.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..31, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..31, value: FStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,23 +29,28 @@ expression: suite FString( FString { range: 9..22, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 11..16, + node_index: AtomicNodeIndex(..), value: "world", }, ), Interpolation( InterpolatedElement { range: 16..21, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, value: StringLiteralValue { inner: Single( StringLiteral { range: 17..20, + node_index: AtomicNodeIndex(..), value: "!", flags: StringLiteralFlags { quote_style: Double, @@ -70,6 +78,7 @@ expression: suite Literal( StringLiteral { range: 23..31, + node_index: AtomicNodeIndex(..), value: "again!", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_t_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_t_string_concat_1.snap index c1432f9b03..5e211ea8ca 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_t_string_concat_1.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_t_string_concat_1.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..18, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..18, value: TStringValue { inner: Concatenated( @@ -15,10 +17,12 @@ expression: suite FString( FString { range: 0..9, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..8, + node_index: AtomicNodeIndex(..), value: "Hello ", }, ), @@ -33,10 +37,12 @@ expression: suite TString( TString { range: 10..18, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 12..17, + node_index: AtomicNodeIndex(..), value: "world", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_t_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_t_string_concat_2.snap index b3a9d72180..67c09862be 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_t_string_concat_2.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_t_string_concat_2.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..22, value: TStringValue { inner: Concatenated( @@ -15,10 +17,12 @@ expression: suite FString( FString { range: 0..9, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..8, + node_index: AtomicNodeIndex(..), value: "Hello ", }, ), @@ -33,10 +37,12 @@ expression: suite TString( TString { range: 10..18, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 12..17, + node_index: AtomicNodeIndex(..), value: "world", }, ), @@ -51,6 +57,7 @@ expression: suite Literal( StringLiteral { range: 19..22, + node_index: AtomicNodeIndex(..), value: "!", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap index b4fbc87730..d4d4e01a4a 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..18, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..18, value: FStringValue { inner: Single( FString( FString { range: 0..18, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..5, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("a"), ctx: Load, @@ -33,8 +38,10 @@ expression: suite Interpolation( InterpolatedElement { range: 5..10, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("b"), ctx: Load, @@ -48,6 +55,7 @@ expression: suite Literal( InterpolatedStringLiteralElement { range: 10..17, + node_index: AtomicNodeIndex(..), value: "{foo}", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap index 57e5d8296c..93333df2aa 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap @@ -5,24 +5,30 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..13, value: FStringValue { inner: Single( FString( FString { range: 0..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..12, + node_index: AtomicNodeIndex(..), expression: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 3..11, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3..5, value: Int( 42, @@ -35,6 +41,7 @@ expression: suite comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..11, value: Int( 42, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_concatenation_string_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_concatenation_string_spec.snap index f0f88bc994..2e0f5c6474 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_concatenation_string_spec.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_concatenation_string_spec.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..16, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..16, value: FStringValue { inner: Single( FString( FString { range: 0..16, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..15, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("foo"), ctx: Load, @@ -30,12 +35,15 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 7..14, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 7..14, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 8..13, value: StringLiteralValue { inner: Concatenated( @@ -43,6 +51,7 @@ expression: suite strings: [ StringLiteral { range: 8..10, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, @@ -52,6 +61,7 @@ expression: suite }, StringLiteral { range: 11..13, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap index 5b4aebba06..479ea844b6 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..15, value: FStringValue { inner: Single( FString( FString { range: 0..15, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..14, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("foo"), ctx: Load, @@ -30,12 +35,15 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 7..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 7..13, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..12, id: Name("spec"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_string_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_string_spec.snap index c9ab599e07..c9ef305e70 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_string_spec.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_string_spec.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..13, value: FStringValue { inner: Single( FString( FString { range: 0..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..12, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("foo"), ctx: Load, @@ -30,17 +35,21 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 7..11, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 7..11, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 8..10, value: StringLiteralValue { inner: Single( StringLiteral { range: 8..10, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap index b631befca6..42ef942c16 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap @@ -5,24 +5,30 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..11, value: FStringValue { inner: Single( FString( FString { range: 0..11, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..10, + node_index: AtomicNodeIndex(..), expression: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 3..9, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3..4, value: Int( 1, @@ -35,6 +41,7 @@ expression: suite comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 2, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap index 93308bd0ca..3b428b4148 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..13, value: FStringValue { inner: Single( FString( FString { range: 0..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..12, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("foo"), ctx: Load, @@ -30,10 +35,12 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 7..11, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 7..11, + node_index: AtomicNodeIndex(..), value: "spec", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap index 2d72726265..764c3768a4 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..10, value: FStringValue { inner: Single( FString( FString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap index e11b44be8a..869d7ff2d3 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..10, value: FStringValue { inner: Single( FString( FString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap index bcd14124f1..1989651e7f 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..10, value: FStringValue { inner: Single( FString( FString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 3..8, value: None, }, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap index 11f5a0bd1f..c5e7745a97 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap @@ -1,14 +1,15 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..16, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..16, value: StringLiteralValue { inner: Concatenated( @@ -16,6 +17,7 @@ snapshot_kind: text strings: [ StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -25,6 +27,7 @@ snapshot_kind: text }, StringLiteral { range: 9..16, + node_index: AtomicNodeIndex(..), value: "world", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap index cdf62c658a..295d3fd634 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..20, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..20, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..20, + node_index: AtomicNodeIndex(..), value: "Hello, world!", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_1.snap index cc79ec38df..e09433deb3 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_1.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_1.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..17, value: TStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,10 +29,12 @@ expression: suite TString( TString { range: 9..17, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 11..16, + node_index: AtomicNodeIndex(..), value: "world", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_2.snap index cc79ec38df..e09433deb3 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_2.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_2.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..17, value: TStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,10 +29,12 @@ expression: suite TString( TString { range: 9..17, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 11..16, + node_index: AtomicNodeIndex(..), value: "world", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_3.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_3.snap index 080c41beec..3497f4897d 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_3.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_3.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..22, value: TStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,23 +29,28 @@ expression: suite TString( TString { range: 9..22, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 11..16, + node_index: AtomicNodeIndex(..), value: "world", }, ), Interpolation( InterpolatedElement { range: 16..21, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, value: StringLiteralValue { inner: Single( StringLiteral { range: 17..20, + node_index: AtomicNodeIndex(..), value: "!", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_4.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_4.snap index 7d178f9569..9415927781 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_4.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_t_string_concat_4.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..31, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..31, value: TStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,23 +29,28 @@ expression: suite TString( TString { range: 9..22, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 11..16, + node_index: AtomicNodeIndex(..), value: "world", }, ), Interpolation( InterpolatedElement { range: 16..21, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, value: StringLiteralValue { inner: Single( StringLiteral { range: 17..20, + node_index: AtomicNodeIndex(..), value: "!", flags: StringLiteralFlags { quote_style: Double, @@ -70,6 +78,7 @@ expression: suite Literal( StringLiteral { range: 23..31, + node_index: AtomicNodeIndex(..), value: "again!", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring.snap index 999de0e0e8..343661c2b0 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..18, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..18, value: TStringValue { inner: Single( TString( TString { range: 0..18, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..5, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("a"), ctx: Load, @@ -33,8 +38,10 @@ expression: suite Interpolation( InterpolatedElement { range: 5..10, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("b"), ctx: Load, @@ -48,6 +55,7 @@ expression: suite Literal( InterpolatedStringLiteralElement { range: 10..17, + node_index: AtomicNodeIndex(..), value: "{foo}", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_equals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_equals.snap index 2618c0abf7..676e05c163 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_equals.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_equals.snap @@ -5,24 +5,30 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..13, value: TStringValue { inner: Single( TString( TString { range: 0..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..12, + node_index: AtomicNodeIndex(..), expression: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 3..11, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3..5, value: Int( 42, @@ -35,6 +41,7 @@ expression: suite comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..11, value: Int( 42, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_concatenation_string_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_concatenation_string_spec.snap index 26719dcb0a..7154789c31 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_concatenation_string_spec.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_concatenation_string_spec.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..16, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..16, value: TStringValue { inner: Single( TString( TString { range: 0..16, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..15, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("foo"), ctx: Load, @@ -30,12 +35,15 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 7..14, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 7..14, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 8..13, value: StringLiteralValue { inner: Concatenated( @@ -43,6 +51,7 @@ expression: suite strings: [ StringLiteral { range: 8..10, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, @@ -52,6 +61,7 @@ expression: suite }, StringLiteral { range: 11..13, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_spec.snap index 0bd592171b..68bb64bd87 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_spec.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_spec.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..15, value: TStringValue { inner: Single( TString( TString { range: 0..15, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..14, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("foo"), ctx: Load, @@ -30,12 +35,15 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 7..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 7..13, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..12, id: Name("spec"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_string_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_string_spec.snap index cfa89174c8..e860374bd0 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_string_spec.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_nested_string_spec.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..13, value: TStringValue { inner: Single( TString( TString { range: 0..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..12, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("foo"), ctx: Load, @@ -30,17 +35,21 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 7..11, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 7..11, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 8..10, value: StringLiteralValue { inner: Single( StringLiteral { range: 8..10, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_not_equals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_not_equals.snap index 96bc26e6fc..4747eef4cd 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_not_equals.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_not_equals.snap @@ -5,24 +5,30 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..11, value: TStringValue { inner: Single( TString( TString { range: 0..11, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..10, + node_index: AtomicNodeIndex(..), expression: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 3..9, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3..4, value: Int( 1, @@ -35,6 +41,7 @@ expression: suite comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 2, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_not_nested_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_not_nested_spec.snap index b77e560ea2..360789335e 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_not_nested_spec.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_not_nested_spec.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..13, value: TStringValue { inner: Single( TString( TString { range: 0..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..12, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("foo"), ctx: Load, @@ -30,10 +35,12 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 7..11, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 7..11, + node_index: AtomicNodeIndex(..), value: "spec", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_self_doc_prec_space.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_self_doc_prec_space.snap index dc1558c8d2..cd25297e73 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_self_doc_prec_space.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_self_doc_prec_space.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..10, value: TStringValue { inner: Single( TString( TString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_self_doc_trailing_space.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_self_doc_trailing_space.snap index a6c8b8849b..ab56895948 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_self_doc_trailing_space.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_self_doc_trailing_space.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..10, value: TStringValue { inner: Single( TString( TString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_yield_expr.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_yield_expr.snap index 7693375a34..bb265f1a94 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_yield_expr.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_tstring_yield_expr.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..10, value: TStringValue { inner: Single( TString( TString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 3..8, value: None, }, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap index 31a9098fde..0b9244c730 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..18, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..18, value: FStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..9, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,10 +29,12 @@ expression: suite FString( FString { range: 10..18, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 12..17, + node_index: AtomicNodeIndex(..), value: "world", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap index 04c02e6462..76de944bab 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..22, value: FStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..9, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,10 +29,12 @@ expression: suite FString( FString { range: 10..18, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 12..17, + node_index: AtomicNodeIndex(..), value: "world", }, ), @@ -44,6 +49,7 @@ expression: suite Literal( StringLiteral { range: 19..22, + node_index: AtomicNodeIndex(..), value: "!", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap index ea637bffc3..b6c48ef5d8 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap @@ -1,14 +1,15 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..17, value: StringLiteralValue { inner: Concatenated( @@ -16,6 +17,7 @@ snapshot_kind: text strings: [ StringLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -25,6 +27,7 @@ snapshot_kind: text }, StringLiteral { range: 9..17, + node_index: AtomicNodeIndex(..), value: "world", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap index 7748193e5b..7ad459df3f 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap @@ -1,14 +1,15 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..17, value: StringLiteralValue { inner: Concatenated( @@ -16,6 +17,7 @@ snapshot_kind: text strings: [ StringLiteral { range: 0..9, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -25,6 +27,7 @@ snapshot_kind: text }, StringLiteral { range: 10..17, + node_index: AtomicNodeIndex(..), value: "world", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_t_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_t_string_concat_1.snap index 0fd3e39703..0a72333dda 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_t_string_concat_1.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_t_string_concat_1.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..18, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..18, value: TStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..9, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,10 +29,12 @@ expression: suite TString( TString { range: 10..18, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 12..17, + node_index: AtomicNodeIndex(..), value: "world", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_t_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_t_string_concat_2.snap index ae5721a931..ac4d44cd3f 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_t_string_concat_2.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_t_string_concat_2.snap @@ -5,9 +5,11 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..22, value: TStringValue { inner: Concatenated( @@ -15,6 +17,7 @@ expression: suite Literal( StringLiteral { range: 0..9, + node_index: AtomicNodeIndex(..), value: "Hello ", flags: StringLiteralFlags { quote_style: Single, @@ -26,10 +29,12 @@ expression: suite TString( TString { range: 10..18, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 12..17, + node_index: AtomicNodeIndex(..), value: "world", }, ), @@ -44,6 +49,7 @@ expression: suite Literal( StringLiteral { range: 19..22, + node_index: AtomicNodeIndex(..), value: "!", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap index 68da7f5aaa..8c3cd6bc04 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..8, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 0..8, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 0..8, + node_index: AtomicNodeIndex(..), value: [ 92, 120, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap index 6cf0a69a02..f3a05cb297 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..6, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 0..6, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 0..6, + node_index: AtomicNodeIndex(..), value: [ 92, 92, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap index d835921a9a..7156cd9073 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..7, value: FStringValue { inner: Single( FString( FString { range: 0..7, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 3..6, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_tstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_tstring.snap index 5f16d7cc6b..50449bdc14 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_tstring.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_tstring.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..7, value: TStringValue { inner: Single( TString( TString { range: 0..7, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 3..6, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap index 921213a707..b85749f0dc 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..738, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 0..738, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 0..738, + node_index: AtomicNodeIndex(..), value: [ 0, 1, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_mac_eol.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_mac_eol.snap index 67456edf4f..432c43fcf4 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_mac_eol.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_mac_eol.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..18, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..18, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..18, + node_index: AtomicNodeIndex(..), value: "text more text", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_unix_eol.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_unix_eol.snap index 67456edf4f..432c43fcf4 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_unix_eol.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_unix_eol.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..18, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..18, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..18, + node_index: AtomicNodeIndex(..), value: "text more text", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_windows_eol.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_windows_eol.snap index 46afa1625b..dfaefc86f8 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_windows_eol.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__string_parser_escaped_windows_eol.snap @@ -1,19 +1,21 @@ --- source: crates/ruff_python_parser/src/string.rs expression: suite -snapshot_kind: text --- [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..19, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..19, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..19, + node_index: AtomicNodeIndex(..), value: "text more text", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap index 2c0adae7d1..a65a7d4b39 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..11, value: FStringValue { inner: Single( FString( FString { range: 0..11, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 5..8, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_tstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_tstring.snap index 7a383de39c..afbf6c6688 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_tstring.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_tstring.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..11, value: TStringValue { inner: Single( TString( TString { range: 0..11, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 5..8, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_constant_range.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_constant_range.snap index 6227dea0fe..8e099c0f66 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_constant_range.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_constant_range.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..22, value: TStringValue { inner: Single( TString( TString { range: 0..22, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..5, + node_index: AtomicNodeIndex(..), value: "aaa", }, ), Interpolation( InterpolatedElement { range: 5..10, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("bbb"), ctx: Load, @@ -39,14 +45,17 @@ expression: suite Literal( InterpolatedStringLiteralElement { range: 10..13, + node_index: AtomicNodeIndex(..), value: "ccc", }, ), Interpolation( InterpolatedElement { range: 13..18, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("ddd"), ctx: Load, @@ -60,6 +69,7 @@ expression: suite Literal( InterpolatedStringLiteralElement { range: 18..21, + node_index: AtomicNodeIndex(..), value: "eee", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_escaped_character.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_escaped_character.snap index b72088efc8..d65d8f0a38 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_escaped_character.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_escaped_character.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..8, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..8, value: TStringValue { inner: Single( TString( TString { range: 0..8, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..4, + node_index: AtomicNodeIndex(..), value: "\\", }, ), Interpolation( InterpolatedElement { range: 4..7, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_escaped_newline.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_escaped_newline.snap index d34b25231f..7b3fa58457 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_escaped_newline.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_escaped_newline.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..8, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..8, value: TStringValue { inner: Single( TString( TString { range: 0..8, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..4, + node_index: AtomicNodeIndex(..), value: "\n", }, ), Interpolation( InterpolatedElement { range: 4..7, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_line_continuation.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_line_continuation.snap index 396755f985..d285f2ff88 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_line_continuation.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_line_continuation.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..9, value: TStringValue { inner: Single( TString( TString { range: 0..9, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 3..5, + node_index: AtomicNodeIndex(..), value: "\\\n", }, ), Interpolation( InterpolatedElement { range: 5..8, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_base.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_base.snap index 99398a48b1..2540e8745b 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_base.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_base.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..10, value: TStringValue { inner: Single( TString( TString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..7, id: Name("user"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_base_more.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_base_more.snap index a745f0f639..2bb2303078 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_base_more.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_base_more.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..38, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..38, value: TStringValue { inner: Single( TString( TString { range: 0..38, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..6, + node_index: AtomicNodeIndex(..), value: "mix ", }, ), Interpolation( InterpolatedElement { range: 6..13, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..11, id: Name("user"), ctx: Load, @@ -44,14 +50,17 @@ expression: suite Literal( InterpolatedStringLiteralElement { range: 13..28, + node_index: AtomicNodeIndex(..), value: " with text and ", }, ), Interpolation( InterpolatedElement { range: 28..37, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..35, id: Name("second"), ctx: Load, diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_format.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_format.snap index a401f11e74..43e424c4bc 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_format.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_parse_self_documenting_format.snap @@ -5,21 +5,26 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..14, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..14, value: TStringValue { inner: Single( TString( TString { range: 0..14, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..13, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..7, id: Name("user"), ctx: Load, @@ -35,10 +40,12 @@ expression: suite format_spec: Some( InterpolatedStringFormatSpec { range: 9..12, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 9..12, + node_index: AtomicNodeIndex(..), value: ">10", }, ), diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_unescaped_newline.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_unescaped_newline.snap index b14e366fb4..188b88a0d3 100644 --- a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_unescaped_newline.snap +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__tstring_unescaped_newline.snap @@ -5,27 +5,33 @@ expression: suite [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 0..11, value: TStringValue { inner: Single( TString( TString { range: 0..11, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 4..5, + node_index: AtomicNodeIndex(..), value: "\n", }, ), Interpolation( InterpolatedElement { range: 5..8, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/src/string.rs b/crates/ruff_python_parser/src/string.rs index 6642fbc25a..8dd9190b90 100644 --- a/crates/ruff_python_parser/src/string.rs +++ b/crates/ruff_python_parser/src/string.rs @@ -3,7 +3,7 @@ use bstr::ByteSlice; use std::fmt; -use ruff_python_ast::{self as ast, AnyStringFlags, Expr, StringFlags}; +use ruff_python_ast::{self as ast, AnyStringFlags, AtomicNodeIndex, Expr, StringFlags}; use ruff_text_size::{Ranged, TextRange, TextSize}; use crate::{ @@ -287,6 +287,7 @@ impl StringParser { return Ok(ast::InterpolatedStringLiteralElement { value: self.source, range: self.range, + node_index: AtomicNodeIndex::dummy(), }); }; @@ -364,6 +365,7 @@ impl StringParser { Ok(ast::InterpolatedStringLiteralElement { value: value.into_boxed_str(), range: self.range, + node_index: AtomicNodeIndex::dummy(), }) } @@ -385,6 +387,7 @@ impl StringParser { value: self.source.into_boxed_bytes(), range: self.range, flags: self.flags.into(), + node_index: AtomicNodeIndex::dummy(), })); } @@ -394,6 +397,7 @@ impl StringParser { value: self.source.into_boxed_bytes(), range: self.range, flags: self.flags.into(), + node_index: AtomicNodeIndex::dummy(), })); }; @@ -431,6 +435,7 @@ impl StringParser { value: value.into_boxed_slice(), range: self.range, flags: self.flags.into(), + node_index: AtomicNodeIndex::dummy(), })) } @@ -441,6 +446,7 @@ impl StringParser { value: self.source, range: self.range, flags: self.flags.into(), + node_index: AtomicNodeIndex::dummy(), })); } @@ -450,6 +456,7 @@ impl StringParser { value: self.source, range: self.range, flags: self.flags.into(), + node_index: AtomicNodeIndex::dummy(), })); }; @@ -487,6 +494,7 @@ impl StringParser { value: value.into_boxed_str(), range: self.range, flags: self.flags.into(), + node_index: AtomicNodeIndex::dummy(), })) } diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_annotation.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_annotation.py.snap index b758b7438b..172e4daa89 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_annotation.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_annotation.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/ann_assign_stmt_inval ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..63, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 0..11, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -21,9 +24,11 @@ Module( ), annotation: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 3..7, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..7, id: Name("int"), ctx: Load, @@ -35,6 +40,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..11, value: Int( 1, @@ -47,9 +53,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 12..26, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..13, id: Name("x"), ctx: Store, @@ -57,10 +65,12 @@ Module( ), annotation: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 15..22, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("a"), ctx: Load, @@ -72,6 +82,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 25..26, value: Int( 1, @@ -84,9 +95,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 27..46, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("x"), ctx: Store, @@ -94,9 +107,11 @@ Module( ), annotation: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 30..42, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("b"), ctx: Load, @@ -107,6 +122,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 45..46, value: Int( 1, @@ -119,9 +135,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 47..51, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -129,6 +147,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 50..51, id: Name("y"), ctx: Load, @@ -140,10 +159,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 55..62, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..58, id: Name("int"), ctx: Store, @@ -152,6 +173,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 61..62, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_target.py.snap index 9bd4841679..4a80fdc2f5 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_target.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/ann_assign_stmt_invalid_target.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..170, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 0..18, target: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..5, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..5, + node_index: AtomicNodeIndex(..), value: "abc", flags: StringLiteralFlags { quote_style: Double, @@ -33,6 +36,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..10, id: Name("str"), ctx: Load, @@ -41,11 +45,13 @@ Module( value: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 13..18, value: StringLiteralValue { inner: Single( StringLiteral { range: 13..18, + node_index: AtomicNodeIndex(..), value: "def", flags: StringLiteralFlags { quote_style: Double, @@ -63,12 +69,15 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 19..37, target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 19..25, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..23, id: Name("call"), ctx: Load, @@ -76,6 +85,7 @@ Module( ), arguments: Arguments { range: 23..25, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -83,6 +93,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..30, id: Name("str"), ctx: Load, @@ -91,11 +102,13 @@ Module( value: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 33..37, value: StringLiteralValue { inner: Single( StringLiteral { range: 33..37, + node_index: AtomicNodeIndex(..), value: "no", flags: StringLiteralFlags { quote_style: Double, @@ -113,12 +126,15 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 38..52, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 38..40, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("x"), ctx: Store, @@ -129,6 +145,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 42..45, id: Name("int"), ctx: Load, @@ -137,10 +154,12 @@ Module( value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 48..52, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 48..49, value: Int( 1, @@ -149,6 +168,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 2, @@ -166,13 +186,16 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 72..83, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 72..74, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("x"), ctx: Store, @@ -185,6 +208,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..79, id: Name("int"), ctx: Load, @@ -193,6 +217,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 1, @@ -205,13 +230,16 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 84..100, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 84..88, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..85, id: Name("x"), ctx: Store, @@ -219,6 +247,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..88, id: Name("y"), ctx: Store, @@ -231,6 +260,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..93, id: Name("int"), ctx: Load, @@ -239,10 +269,12 @@ Module( value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 96..100, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 96..97, value: Int( 1, @@ -251,6 +283,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 99..100, value: Int( 2, @@ -268,13 +301,16 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 101..119, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 101..107, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..103, id: Name("x"), ctx: Store, @@ -282,6 +318,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..106, id: Name("y"), ctx: Store, @@ -294,6 +331,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 109..112, id: Name("int"), ctx: Load, @@ -302,10 +340,12 @@ Module( value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 115..119, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 115..116, value: Int( 1, @@ -314,6 +354,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 118..119, value: Int( 2, @@ -331,13 +372,16 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 138..150, target: List( ExprList { + node_index: AtomicNodeIndex(..), range: 138..141, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..140, id: Name("x"), ctx: Store, @@ -349,6 +393,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 143..146, id: Name("int"), ctx: Load, @@ -357,6 +402,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 149..150, value: Int( 1, @@ -369,13 +415,16 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 151..169, target: List( ExprList { + node_index: AtomicNodeIndex(..), range: 151..157, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 152..153, id: Name("x"), ctx: Store, @@ -383,6 +432,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 155..156, id: Name("y"), ctx: Store, @@ -394,6 +444,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 159..162, id: Name("int"), ctx: Load, @@ -402,10 +453,12 @@ Module( value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 165..169, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 165..166, value: Int( 1, @@ -414,6 +467,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 168..169, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_value.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_value.py.snap index f37b524ee3..1d69453670 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_value.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_invalid_value.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/ann_assign_stmt_invalid_value.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..65, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 0..17, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -22,6 +24,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("Any"), ctx: Load, @@ -30,14 +33,17 @@ Module( value: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 9..17, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 10..17, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("a"), ctx: Load, @@ -45,6 +51,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("b"), ctx: Load, @@ -62,9 +69,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 18..28, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("x"), ctx: Store, @@ -72,6 +81,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..24, id: Name("Any"), ctx: Load, @@ -80,6 +90,7 @@ Module( value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("x"), ctx: Load, @@ -91,9 +102,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 32..33, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 1, @@ -104,9 +117,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 34..64, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("x"), ctx: Store, @@ -114,6 +129,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..41, id: Name("list"), ctx: Load, @@ -122,10 +138,12 @@ Module( value: Some( List( ExprList { + node_index: AtomicNodeIndex(..), range: 44..64, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..46, id: Name("x"), ctx: Load, @@ -133,12 +151,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 48..54, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 49..54, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("a"), ctx: Load, @@ -147,6 +168,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("b"), ctx: Load, @@ -159,14 +181,17 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 56..63, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 57..63, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..58, id: Name("a"), ctx: Load, @@ -174,6 +199,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("b"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_missing_rhs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_missing_rhs.py.snap index dfd20d1d11..b1a6700394 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_missing_rhs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_missing_rhs.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/ann_assign_stmt_missing_rhs.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..9, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 0..8, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -22,6 +24,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_type_alias_annotation.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_type_alias_annotation.py.snap index 304d630374..957104e6d2 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_type_alias_annotation.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@ann_assign_stmt_type_alias_annotation.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/ann_assign_stmt_type_alias_annotation.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..37, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 0..7, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("a"), ctx: Store, @@ -22,6 +24,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..7, id: Name("type"), ctx: Load, @@ -33,10 +36,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 8..15, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("X"), ctx: Store, @@ -45,6 +50,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..15, id: Name("int"), ctx: Load, @@ -54,13 +60,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..28, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 16..28, parameters: None, body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..28, id: Name("type"), ctx: Load, @@ -72,10 +81,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 29..36, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("X"), ctx: Store, @@ -84,6 +95,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..36, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@args_unparenthesized_generator.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@args_unparenthesized_generator.py.snap index b4050ccf13..745c8c8c40 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@args_unparenthesized_generator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@args_unparenthesized_generator.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/err/args_unparenthesized_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..92, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..28, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..28, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..3, id: Name("sum"), ctx: Load, @@ -24,12 +28,15 @@ Module( ), arguments: Arguments { range: 3..28, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 4..24, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Load, @@ -38,8 +45,10 @@ Module( generators: [ Comprehension { range: 6..24, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("x"), ctx: Store, @@ -47,9 +56,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 15..24, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..20, id: Name("range"), ctx: Load, @@ -57,9 +68,11 @@ Module( ), arguments: Arguments { range: 20..24, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..23, value: Int( 10, @@ -80,6 +93,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 26..27, value: Int( 5, @@ -95,12 +109,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..64, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 29..64, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..34, id: Name("total"), ctx: Load, @@ -108,9 +125,11 @@ Module( ), arguments: Arguments { range: 34..64, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 35..36, value: Int( 1, @@ -119,6 +138,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 38..39, value: Int( 2, @@ -127,9 +147,11 @@ Module( ), Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 41..60, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("x"), ctx: Load, @@ -138,8 +160,10 @@ Module( generators: [ Comprehension { range: 43..60, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -147,9 +171,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 52..60, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..57, id: Name("range"), ctx: Load, @@ -157,9 +183,11 @@ Module( ), arguments: Arguments { range: 57..60, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 58..59, value: Int( 5, @@ -180,6 +208,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 62..63, value: Int( 6, @@ -195,12 +224,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 65..91, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 65..91, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..68, id: Name("sum"), ctx: Load, @@ -208,12 +240,15 @@ Module( ), arguments: Arguments { range: 68..91, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 69..89, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..70, id: Name("x"), ctx: Load, @@ -222,8 +257,10 @@ Module( generators: [ Comprehension { range: 71..89, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("x"), ctx: Store, @@ -231,9 +268,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 80..89, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..85, id: Name("range"), ctx: Load, @@ -241,9 +280,11 @@ Module( ), arguments: Arguments { range: 85..89, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 86..88, value: Int( 10, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_empty_msg.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_empty_msg.py.snap index 0de6bbd3f8..e4f9844f73 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_empty_msg.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_empty_msg.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/assert_empty_msg.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 0..9, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_empty_test.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_empty_test.py.snap index 24dfb690d2..8722a03c2e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_empty_test.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_empty_test.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/assert_empty_test.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..7, body: [ Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 0..6, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..6, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_invalid_msg_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_invalid_msg_expr.py.snap index 557cbe6bf3..bfef697184 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_invalid_msg_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_invalid_msg_expr.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/assert_invalid_msg_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..83, body: [ Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 0..16, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 7..12, value: false, }, @@ -22,9 +24,11 @@ Module( msg: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 14..16, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..16, id: Name("x"), ctx: Load, @@ -38,9 +42,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 17..30, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 24..29, value: false, }, @@ -50,9 +56,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 31..39, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("x"), ctx: Load, @@ -63,9 +71,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 40..61, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 47..52, value: false, }, @@ -73,10 +83,12 @@ Module( msg: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 54..61, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("x"), ctx: Load, @@ -90,9 +102,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 62..77, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 69..74, value: false, }, @@ -100,6 +114,7 @@ Module( msg: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..77, id: Name("x"), ctx: Load, @@ -110,9 +125,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..82, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 81..82, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_invalid_test_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_invalid_test_expr.py.snap index afe4aca2ba..1f87e7e7b6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_invalid_test_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assert_invalid_test_expr.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/assert_invalid_test_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..55, body: [ Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 0..9, test: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 7..9, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("x"), ctx: Load, @@ -31,9 +34,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 10..23, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..23, id: Name("assert"), ctx: Load, @@ -44,9 +49,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..25, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("x"), ctx: Load, @@ -56,13 +63,16 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 26..40, test: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 33..40, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("x"), ctx: Load, @@ -76,9 +86,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 41..49, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..49, id: Name("x"), ctx: Load, @@ -89,9 +101,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..54, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 53..54, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_invalid_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_invalid_target.py.snap index 8f47b9c042..e317e4b49c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_invalid_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_invalid_target.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/assign_stmt_invalid_target.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..58, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..5, targets: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 0..1, value: Int( 1, @@ -25,6 +27,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..5, value: Int( 1, @@ -35,10 +38,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 6..15, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Store, @@ -46,6 +51,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..11, value: Int( 1, @@ -55,6 +61,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 14..15, value: Int( 2, @@ -65,10 +72,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 16..33, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("x"), ctx: Store, @@ -76,6 +85,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 20..21, value: Int( 1, @@ -84,6 +94,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("y"), ctx: Store, @@ -91,6 +102,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 28..29, value: Int( 2, @@ -100,6 +112,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("z"), ctx: Load, @@ -109,19 +122,23 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 34..57, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 34..44, elts: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 35..38, value: StringLiteralValue { inner: Single( StringLiteral { range: 35..38, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Double, @@ -135,11 +152,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 40..43, value: StringLiteralValue { inner: Single( StringLiteral { range: 40..43, + node_index: AtomicNodeIndex(..), value: "b", flags: StringLiteralFlags { quote_style: Double, @@ -158,15 +177,18 @@ Module( ], value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 47..57, elts: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 48..51, value: StringLiteralValue { inner: Single( StringLiteral { range: 48..51, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Double, @@ -180,11 +202,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 53..56, value: StringLiteralValue { inner: Single( StringLiteral { range: 53..56, + node_index: AtomicNodeIndex(..), value: "b", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_invalid_value_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_invalid_value_expr.py.snap index 78ea01ad7e..65ac6baf43 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_invalid_value_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_invalid_value_expr.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/assign_stmt_invalid_v ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..90, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..15, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -23,18 +26,22 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 4..15, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 5..13, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 6..13, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("a"), ctx: Load, @@ -42,6 +49,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..13, id: Name("b"), ctx: Load, @@ -62,10 +70,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 16..34, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("x"), ctx: Store, @@ -74,10 +84,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 20..34, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..23, value: Int( 42, @@ -86,13 +98,16 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 25..33, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 26..33, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("x"), ctx: Load, @@ -113,10 +128,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 35..58, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("x"), ctx: Store, @@ -125,10 +142,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 39..58, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 40..42, value: Int( 42, @@ -137,12 +156,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 44..57, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 45..57, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Load, @@ -162,10 +184,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 59..78, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("x"), ctx: Store, @@ -174,26 +198,35 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 63..78, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 64..76, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 65..76, parameters: Some( Parameters { range: 72..73, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 72..73, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 72..73, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 72..73, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -207,6 +240,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("x"), ctx: Load, @@ -226,10 +260,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 79..84, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 79..80, id: Name("x"), ctx: Store, @@ -238,6 +274,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("x"), ctx: Load, @@ -247,9 +284,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 88..89, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 88..89, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_keyword_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_keyword_target.py.snap index 0ed0320576..0f58eff527 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_keyword_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_keyword_target.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/assign_stmt_keyword_target.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..42, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..12, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("a"), ctx: Store, @@ -23,6 +25,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..8, id: Name("pass"), ctx: Store, @@ -31,6 +34,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("c"), ctx: Load, @@ -40,12 +44,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..18, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 13..18, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("a"), ctx: Load, @@ -54,6 +61,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("b"), ctx: Load, @@ -65,10 +73,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 19..35, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("a"), ctx: Store, @@ -76,6 +86,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("b"), ctx: Store, @@ -83,6 +94,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..31, id: Name("pass"), ctx: Store, @@ -91,6 +103,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("c"), ctx: Load, @@ -100,12 +113,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 36..41, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 36..41, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("a"), ctx: Load, @@ -114,6 +130,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("b"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_missing_rhs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_missing_rhs.py.snap index 35e1921645..6ef39d8045 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_missing_rhs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_missing_rhs.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/assign_stmt_missing_rhs.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..38, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..3, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -24,6 +26,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..3, id: Name(""), ctx: Invalid, @@ -33,12 +36,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4..9, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 4..9, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..5, value: Int( 1, @@ -48,6 +54,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 1, @@ -60,10 +67,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 10..17, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("x"), ctx: Store, @@ -71,6 +80,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("y"), ctx: Store, @@ -79,6 +89,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..17, id: Name(""), ctx: Invalid, @@ -88,12 +99,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..23, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 18..23, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 2, @@ -103,6 +117,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 22..23, value: Int( 2, @@ -115,10 +130,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 24..31, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("x"), ctx: Store, @@ -126,6 +143,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..27, id: Name(""), ctx: Store, @@ -134,6 +152,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 30..31, id: Name("y"), ctx: Load, @@ -143,12 +162,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 32..37, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 32..37, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 3, @@ -158,6 +180,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 36..37, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_starred_expr_value.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_starred_expr_value.py.snap index 220f6e6074..5af1853e86 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_starred_expr_value.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@assign_stmt_starred_expr_value.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/assign_stmt_starred_e ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..45, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..9, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("_"), ctx: Store, @@ -23,13 +26,16 @@ Module( ], value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 4..9, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 5..9, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..8, value: Int( 42, @@ -47,10 +53,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 10..19, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("_"), ctx: Store, @@ -59,13 +67,16 @@ Module( ], value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 14..19, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 15..19, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 16..18, value: Int( 42, @@ -82,10 +93,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 20..31, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("_"), ctx: Store, @@ -94,12 +107,15 @@ Module( ], value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 24..31, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 25..31, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..29, id: Name("list"), ctx: Load, @@ -107,6 +123,7 @@ Module( ), arguments: Arguments { range: 29..31, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -119,10 +136,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 32..44, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("_"), ctx: Store, @@ -131,12 +150,15 @@ Module( ], value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 36..44, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 38..43, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("p"), ctx: Load, @@ -145,6 +167,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 42..43, id: Name("q"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@async_unexpected_token.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@async_unexpected_token.py.snap index 678e667d88..7ebaaad4b7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@async_unexpected_token.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@async_unexpected_token.py.snap @@ -1,31 +1,35 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/async_unexpected_token.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..116, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 6..20, decorator_list: [], name: Identifier { id: Name("Foo"), range: 12..15, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..20, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, }, ), @@ -36,9 +40,11 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 27..42, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..37, id: Name("test"), ctx: Load, @@ -47,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 39..42, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 39..42, }, ), @@ -61,10 +69,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 49..54, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("x"), ctx: Store, @@ -73,6 +83,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 53..54, value: Int( 1, @@ -83,16 +94,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 61..81, is_async: true, decorator_list: [], name: Identifier { id: Name("foo"), range: 71..74, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 74..76, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -103,9 +119,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 78..81, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 78..81, }, ), @@ -116,9 +134,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 88..115, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 94..98, id: Name("test"), ctx: Load, @@ -127,9 +147,11 @@ Module( cases: [ MatchCase { range: 104..115, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 109..110, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -138,9 +160,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 112..115, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 112..115, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_invalid_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_invalid_target.py.snap index 17b749427a..78da56cda6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_invalid_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_invalid_target.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/aug_assign_stmt_invalid_target.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..59, body: [ AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 0..6, target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 0..1, value: Int( 1, @@ -24,6 +26,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -34,14 +37,17 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 7..17, target: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 7..10, value: StringLiteralValue { inner: Single( StringLiteral { range: 7..10, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Double, @@ -56,11 +62,13 @@ Module( op: Add, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 14..17, value: StringLiteralValue { inner: Single( StringLiteral { range: 14..17, + node_index: AtomicNodeIndex(..), value: "b", flags: StringLiteralFlags { quote_style: Double, @@ -76,12 +84,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 18..25, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 18..20, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("x"), ctx: Store, @@ -93,6 +104,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 24..25, value: Int( 1, @@ -103,14 +115,17 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 26..30, }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 34..35, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 34..35, value: Int( 1, @@ -121,9 +136,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 36..45, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("x"), ctx: Store, @@ -132,6 +149,7 @@ Module( op: Add, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..45, id: Name("pass"), ctx: Load, @@ -141,12 +159,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 46..58, target: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 47..52, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Load, @@ -155,6 +176,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("y"), ctx: Load, @@ -165,6 +187,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_invalid_value.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_invalid_value.py.snap index cd6e0380f9..cfc583f1b8 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_invalid_value.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_invalid_value.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/aug_assign_stmt_invalid_value.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..77, body: [ AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 0..13, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -23,14 +25,17 @@ Module( op: Add, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 5..13, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 6..13, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("a"), ctx: Load, @@ -38,6 +43,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..13, id: Name("b"), ctx: Load, @@ -53,9 +59,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 14..27, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("x"), ctx: Store, @@ -64,13 +72,16 @@ Module( op: Add, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 19..27, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 20..27, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("x"), ctx: Load, @@ -86,9 +97,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 28..46, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("x"), ctx: Store, @@ -97,12 +110,15 @@ Module( op: Add, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 33..46, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 34..46, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..46, id: Name("x"), ctx: Load, @@ -117,9 +133,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 47..64, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -128,22 +146,30 @@ Module( op: Add, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 52..64, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 53..64, parameters: Some( Parameters { range: 60..61, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 60..61, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 60..61, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 60..61, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -157,6 +183,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..64, id: Name("x"), ctx: Load, @@ -171,9 +198,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 65..71, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("x"), ctx: Store, @@ -182,6 +211,7 @@ Module( op: Add, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("y"), ctx: Load, @@ -191,9 +221,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 75..76, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 75..76, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_missing_rhs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_missing_rhs.py.snap index d2ba825987..50e27a1c5e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_missing_rhs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@aug_assign_stmt_missing_rhs.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/aug_assign_stmt_missing_rhs.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..27, body: [ AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 0..4, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -23,6 +25,7 @@ Module( op: Add, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..4, id: Name(""), ctx: Invalid, @@ -32,12 +35,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..10, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -47,6 +53,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 1, @@ -59,9 +66,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 11..17, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("x"), ctx: Store, @@ -70,6 +79,7 @@ Module( op: Add, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("y"), ctx: Load, @@ -79,12 +89,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..26, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 21..26, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..22, value: Int( 2, @@ -94,6 +107,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 25..26, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@case_expect_indented_block.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@case_expect_indented_block.py.snap index 48c0bba70c..0e0305e26b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@case_expect_indented_block.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@case_expect_indented_block.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/case_expect_indented_block.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..43, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..42, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..13, id: Name("subject"), ctx: Load, @@ -23,11 +25,14 @@ Module( cases: [ MatchCase { range: 19..26, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 24..25, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 24..25, value: Int( 1, @@ -41,11 +46,14 @@ Module( }, MatchCase { range: 31..42, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 36..37, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 36..37, value: Int( 2, @@ -58,9 +66,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 39..42, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 39..42, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_empty_body.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_empty_body.py.snap index 29be135fec..48a479382f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_empty_body.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_empty_body.py.snap @@ -1,22 +1,24 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/class_def_empty_body.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..31, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 0..10, decorator_list: [], name: Identifier { id: Name("Foo"), range: 6..9, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, @@ -25,16 +27,19 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 11..23, decorator_list: [], name: Identifier { id: Name("Foo"), range: 17..20, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 20..22, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -44,10 +49,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 24..30, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("x"), ctx: Store, @@ -56,6 +63,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 28..30, value: Int( 42, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_missing_name.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_missing_name.py.snap index 05c4ed0abc..6d68771f17 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_missing_name.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_missing_name.py.snap @@ -1,31 +1,35 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/class_def_missing_name.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..53, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 0..11, decorator_list: [], name: Identifier { id: Name(""), range: 5..5, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..11, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 8..11, }, ), @@ -36,16 +40,19 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 12..25, decorator_list: [], name: Identifier { id: Name(""), range: 17..17, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 18..20, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -53,9 +60,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..25, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 22..25, }, ), @@ -66,28 +75,34 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 26..52, decorator_list: [], name: Identifier { id: Name(""), range: 31..31, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 32..47, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 33..46, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("metaclass"), range: 33..42, + node_index: AtomicNodeIndex(..), }, ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..46, id: Name("ABC"), ctx: Load, @@ -100,9 +115,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..52, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 49..52, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_unclosed_type_param_list.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_unclosed_type_param_list.py.snap index bcbd8a0224..17f5d5b106 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_unclosed_type_param_list.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_def_unclosed_type_param_list.py.snap @@ -1,33 +1,38 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/class_def_unclosed_type_param_list.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..41, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 0..33, decorator_list: [], name: Identifier { id: Name("Foo"), range: 6..9, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 9..17, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 10..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T1"), range: 10..12, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -36,9 +41,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 14..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T2"), range: 15..17, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -49,9 +56,11 @@ Module( arguments: Some( Arguments { range: 17..23, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("a"), ctx: Load, @@ -59,6 +68,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("b"), ctx: Load, @@ -71,6 +81,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 29..33, }, ), @@ -79,10 +90,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 34..40, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("x"), ctx: Store, @@ -91,6 +104,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 38..40, value: Int( 10, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_type_params_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_type_params_py311.py.snap index 60c7fd4974..9d91dbf072 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_type_params_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@class_type_params_py311.py.snap @@ -7,34 +7,42 @@ input_file: crates/ruff_python_parser/resources/inline/err/class_type_params_py3 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..113, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 44..95, decorator_list: [], name: Identifier { id: Name("Foo"), range: 50..53, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 53..90, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 54..69, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("S"), range: 54..55, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 57..69, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..61, id: Name("str"), ctx: Load, @@ -42,6 +50,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..68, id: Name("bytes"), ctx: Load, @@ -59,13 +68,16 @@ Module( TypeVar( TypeParamTypeVar { range: 71..79, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 71..72, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..79, id: Name("float"), ctx: Load, @@ -78,9 +90,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 81..84, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 82..84, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -88,9 +102,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 86..89, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 88..89, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -102,9 +118,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..95, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 92..95, }, ), @@ -115,15 +133,18 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 96..112, decorator_list: [], name: Identifier { id: Name("Foo"), range: 102..105, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 105..107, + node_index: AtomicNodeIndex(..), type_params: [], }, ), @@ -131,9 +152,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 109..112, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 109..112, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@clause_expect_indented_block.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@clause_expect_indented_block.py.snap index 44bc4b2b51..52dcef4c18 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@clause_expect_indented_block.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@clause_expect_indented_block.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/clause_expect_indented_block.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..171, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 53..61, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 56..60, value: true, }, @@ -25,14 +27,17 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 62..66, }, ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 162..170, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 165..169, value: true, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@clause_expect_single_statement.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@clause_expect_single_statement.py.snap index 6ed8d32774..0cec1c5726 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@clause_expect_single_statement.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@clause_expect_single_statement.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/clause_expect_single_statement.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..23, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..8, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 3..7, value: true, }, @@ -25,9 +27,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 9..22, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 12..16, value: true, }, @@ -35,6 +39,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 18..22, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_comma.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_comma.py.snap index fee330ecc2..749a5fa1ae 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_comma.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_comma.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/comma_separated_missing_comma.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..15, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..14, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..14, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -25,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..14, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 12..13, value: Int( 1, @@ -38,9 +43,11 @@ Module( keywords: [ Keyword { range: 5..8, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_comma_between_elements.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_comma_between_elements.py.snap index 39ffd3982f..3afc0336c3 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_comma_between_elements.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_comma_between_elements.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/comma_separated_missing_comma_between_elements.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..92, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..91, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 83..91, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 84..85, value: Int( 0, @@ -27,6 +30,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 87..88, value: Int( 1, @@ -35,6 +39,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_element_between_commas.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_element_between_commas.py.snap index 799432dc3f..0e1f29a3c0 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_element_between_commas.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_element_between_commas.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/comma_separated_missing_element_between_commas.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..12, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 0..11, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1..2, value: Int( 0, @@ -27,6 +30,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..5, value: Int( 1, @@ -35,6 +39,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_first_element.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_first_element.py.snap index 59fb82a1e5..02c89d0035 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_first_element.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comma_separated_missing_first_element.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/comma_separated_missing_first_element.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..9, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -25,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..9, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 7..8, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comprehension_missing_for_after_async.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comprehension_missing_for_after_async.py.snap index 8713ae5f80..636c0bdbac 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comprehension_missing_for_after_async.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@comprehension_missing_for_after_async.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/comprehension_missing_for_after_async.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..28, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..6, id: Name("async"), ctx: Load, @@ -24,12 +26,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..27, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 8..27, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("x"), ctx: Load, @@ -38,8 +43,10 @@ Module( generators: [ Comprehension { range: 11..26, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("x"), ctx: Store, @@ -47,6 +54,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..26, id: Name("iter"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_class.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_class.py.snap index 251a2c6c28..91477355a3 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_class.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_class.py.snap @@ -7,24 +7,29 @@ input_file: crates/ruff_python_parser/resources/inline/err/debug_shadow_class.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..82, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 0..20, decorator_list: [], name: Identifier { id: Name("__debug__"), range: 6..15, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..20, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, }, ), @@ -35,22 +40,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 35..58, decorator_list: [], name: Identifier { id: Name("C"), range: 41..42, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 42..53, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 43..52, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("__debug__"), range: 43..52, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -63,9 +73,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 55..58, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 55..58, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_function.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_function.py.snap index 517c64d7fb..f31edee08a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_function.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_function.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/debug_shadow_function ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..125, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..20, is_async: false, decorator_list: [], name: Identifier { id: Name("__debug__"), range: 4..13, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 13..15, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,9 +37,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..20, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, }, ), @@ -44,23 +52,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 38..61, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 42..43, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 43..54, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 44..53, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("__debug__"), range: 44..53, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -71,6 +84,9 @@ Module( ), parameters: Parameters { range: 54..56, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -81,9 +97,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..61, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, }, ), @@ -94,25 +112,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 85..106, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 89..90, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 90..101, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 91..100, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 91..100, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("__debug__"), range: 91..100, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -127,9 +153,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 103..106, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 103..106, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_import.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_import.py.snap index 9cbb408531..380240dd33 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_import.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_import.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/err/debug_shadow_import.p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..100, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..16, names: [ Alias { range: 7..16, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("__debug__"), range: 7..16, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -26,18 +30,22 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 17..42, names: [ Alias { range: 24..42, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("debug"), range: 24..29, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("__debug__"), range: 33..42, + node_index: AtomicNodeIndex(..), }, ), }, @@ -46,19 +54,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 43..66, module: Some( Identifier { id: Name("x"), range: 48..49, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 57..66, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("__debug__"), range: 57..66, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -68,24 +80,29 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 67..99, module: Some( Identifier { id: Name("x"), range: 72..73, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 81..99, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("debug"), range: 81..86, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("__debug__"), range: 90..99, + node_index: AtomicNodeIndex(..), }, ), }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_match.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_match.py.snap index 2b23fee0c4..acb6dfcc11 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_match.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_match.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/debug_shadow_match.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..33, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..32, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -22,14 +25,17 @@ Module( cases: [ MatchCase { range: 13..32, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 18..27, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("__debug__"), range: 18..27, + node_index: AtomicNodeIndex(..), }, ), }, @@ -38,9 +44,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..32, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_try.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_try.py.snap index d965f5306a..d638e10acc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_try.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_try.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/err/debug_shadow_try.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..44, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..43, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..8, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 5..8, }, ), @@ -28,9 +32,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 9..43, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..25, id: Name("Exception"), ctx: Load, @@ -41,14 +47,17 @@ Module( Identifier { id: Name("__debug__"), range: 29..38, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 40..43, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 40..43, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_type_alias.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_type_alias.py.snap index 2817caa8c4..06bce5209a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_type_alias.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_type_alias.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/debug_shadow_type_ali ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..95, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..26, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..14, id: Name("__debug__"), ctx: Store, @@ -22,9 +25,11 @@ Module( type_params: None, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 17..26, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..21, id: Name("list"), ctx: Load, @@ -32,6 +37,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..25, id: Name("int"), ctx: Load, @@ -44,9 +50,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 67..94, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..77, id: Name("Debug"), ctx: Store, @@ -55,13 +63,16 @@ Module( type_params: Some( TypeParams { range: 77..88, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 78..87, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("__debug__"), range: 78..87, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -72,6 +83,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..94, id: Name("str"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_with.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_with.py.snap index 51a3a7cc64..3d0560bf59 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_with.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@debug_shadow_with.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/inline/err/debug_shadow_with.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..39, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 0..38, is_async: false, items: [ WithItem { range: 5..33, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5..20, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..9, id: Name("open"), ctx: Load, @@ -28,14 +33,17 @@ Module( ), arguments: Arguments { range: 9..20, + node_index: AtomicNodeIndex(..), args: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 10..19, value: StringLiteralValue { inner: Single( StringLiteral { range: 10..19, + node_index: AtomicNodeIndex(..), value: "foo.txt", flags: StringLiteralFlags { quote_style: Double, @@ -55,6 +63,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..33, id: Name("__debug__"), ctx: Store, @@ -66,9 +75,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 35..38, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 35..38, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_await_expression_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_await_expression_py38.py.snap index e86f1ea1f1..9b42c0f684 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_await_expression_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_await_expression_py38.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/decorator_await_expre ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..96, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..95, is_async: true, decorator_list: [], name: Identifier { id: Name("foo"), range: 55..58, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 58..60, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,16 +37,20 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 66..95, is_async: false, decorator_list: [ Decorator { range: 66..76, + node_index: AtomicNodeIndex(..), expression: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 67..76, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..76, id: Name("bar"), ctx: Load, @@ -53,10 +63,14 @@ Module( name: Identifier { id: Name("baz"), range: 85..88, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 88..90, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -67,9 +81,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..95, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 92..95, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_dict_literal_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_dict_literal_py38.py.snap index e42d100e1f..0262ed63aa 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_dict_literal_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_dict_literal_py38.py.snap @@ -7,23 +7,28 @@ input_file: crates/ruff_python_parser/resources/inline/err/decorator_dict_litera ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..68, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..67, is_async: false, decorator_list: [ Decorator { range: 45..52, + node_index: AtomicNodeIndex(..), expression: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 46..52, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 47..48, value: Int( 3, @@ -33,6 +38,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 50..51, value: Int( 3, @@ -48,10 +54,14 @@ Module( name: Identifier { id: Name("bar"), range: 57..60, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 60..62, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -62,9 +72,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 64..67, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 64..67, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_expression_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_expression_py38.py.snap index d530df39de..5d24f31dd4 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_expression_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_expression_py38.py.snap @@ -7,26 +7,33 @@ input_file: crates/ruff_python_parser/resources/inline/err/decorator_expression_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..89, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..88, is_async: false, decorator_list: [ Decorator { range: 45..72, + node_index: AtomicNodeIndex(..), expression: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 46..72, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 46..64, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 46..56, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..53, id: Name("buttons"), ctx: Load, @@ -34,6 +41,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 0, @@ -46,6 +54,7 @@ Module( attr: Identifier { id: Name("clicked"), range: 57..64, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -53,6 +62,7 @@ Module( attr: Identifier { id: Name("connect"), range: 65..72, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -62,10 +72,14 @@ Module( name: Identifier { id: Name("spam"), range: 77..81, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 81..83, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -76,9 +90,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 85..88, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 85..88, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_float_literal_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_float_literal_py38.py.snap index 8f2af04e27..666aa7e2ba 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_float_literal_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_float_literal_py38.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/err/decorator_float_liter ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..66, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..65, is_async: false, decorator_list: [ Decorator { range: 45..50, + node_index: AtomicNodeIndex(..), expression: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 46..50, value: Float( 3.14, @@ -29,10 +33,14 @@ Module( name: Identifier { id: Name("bar"), range: 55..58, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 58..60, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -43,9 +51,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 62..65, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 62..65, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_invalid_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_invalid_expression.py.snap index b89a8c6132..a55f5868c2 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_invalid_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_invalid_expression.py.snap @@ -1,27 +1,31 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/decorator_invalid_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..56, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..55, is_async: false, decorator_list: [ Decorator { range: 0..3, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 1..3, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..3, id: Name("x"), ctx: Load, @@ -33,11 +37,14 @@ Module( }, Decorator { range: 4..9, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 6..8, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Load, @@ -49,11 +56,14 @@ Module( }, Decorator { range: 10..17, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 13..15, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("x"), ctx: Load, @@ -65,12 +75,15 @@ Module( }, Decorator { range: 18..26, + node_index: AtomicNodeIndex(..), expression: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 19..26, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("x"), ctx: Load, @@ -82,11 +95,14 @@ Module( }, Decorator { range: 27..40, + node_index: AtomicNodeIndex(..), expression: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 28..40, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("x"), ctx: Load, @@ -99,10 +115,14 @@ Module( name: Identifier { id: Name("foo"), range: 45..48, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 48..50, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -113,9 +133,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 52..55, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 52..55, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_missing_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_missing_expression.py.snap index 38f833d040..61a1b2b220 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_missing_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_missing_expression.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/decorator_missing_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..51, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 5..15, target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5..10, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..8, id: Name("foo"), ctx: Load, @@ -25,6 +28,7 @@ Module( ), arguments: Arguments { range: 8..10, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -32,6 +36,7 @@ Module( ), annotation: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 12..15, }, ), @@ -41,13 +46,16 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 16..32, is_async: false, decorator_list: [ Decorator { range: 16..17, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..17, id: Name(""), ctx: Invalid, @@ -58,10 +66,14 @@ Module( name: Identifier { id: Name("foo"), range: 22..25, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 25..27, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -72,9 +84,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..32, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, }, ), @@ -85,16 +99,20 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 33..50, is_async: false, decorator_list: [ Decorator { range: 33..35, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 34..35, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..34, id: Name(""), ctx: Invalid, @@ -103,6 +121,7 @@ Module( op: MatMult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..35, id: Name(""), ctx: Invalid, @@ -115,10 +134,14 @@ Module( name: Identifier { id: Name("foo"), range: 40..43, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 43..45, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -129,9 +152,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 47..50, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 47..50, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_missing_newline.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_missing_newline.py.snap index 98cda543d8..88a78f186a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_missing_newline.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_missing_newline.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/decorator_missing_newline.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..60, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..17, is_async: false, decorator_list: [ Decorator { range: 0..2, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("x"), ctx: Load, @@ -29,10 +32,14 @@ Module( name: Identifier { id: Name("foo"), range: 7..10, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 10..12, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -43,9 +50,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 14..17, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 14..17, }, ), @@ -56,13 +65,16 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 18..41, is_async: true, decorator_list: [ Decorator { range: 18..20, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("x"), ctx: Load, @@ -73,10 +85,14 @@ Module( name: Identifier { id: Name("foo"), range: 31..34, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 34..36, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -87,9 +103,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 38..41, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 38..41, }, ), @@ -100,12 +118,15 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 42..59, decorator_list: [ Decorator { range: 42..44, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("x"), ctx: Load, @@ -116,15 +137,18 @@ Module( name: Identifier { id: Name("Foo"), range: 51..54, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 56..59, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 56..59, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_named_expression_py37.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_named_expression_py37.py.snap index fbbef25495..0cbedb3919 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_named_expression_py37.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_named_expression_py37.py.snap @@ -7,23 +7,29 @@ input_file: crates/ruff_python_parser/resources/inline/err/decorator_named_expre ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..85, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..84, is_async: false, decorator_list: [ Decorator { range: 45..69, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 46..69, func: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 47..63, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -31,19 +37,26 @@ Module( ), value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 52..63, parameters: Some( Parameters { range: 59..60, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 59..60, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 59..60, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 59..60, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -57,6 +70,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Load, @@ -68,9 +82,11 @@ Module( ), arguments: Arguments { range: 64..69, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..68, id: Name("foo"), ctx: Load, @@ -86,10 +102,14 @@ Module( name: Identifier { id: Name("bar"), range: 74..77, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 77..79, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -100,9 +120,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..84, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 81..84, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_non_toplevel_call_expression_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_non_toplevel_call_expression_py38.py.snap index 2374561e16..4172d61656 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_non_toplevel_call_expression_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_non_toplevel_call_expression_py38.py.snap @@ -7,26 +7,33 @@ input_file: crates/ruff_python_parser/resources/inline/err/decorator_non_topleve ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..73, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..72, is_async: false, decorator_list: [ Decorator { range: 45..57, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 46..57, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 46..55, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 46..51, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..49, id: Name("foo"), ctx: Load, @@ -34,6 +41,7 @@ Module( ), arguments: Arguments { range: 49..51, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -42,12 +50,14 @@ Module( attr: Identifier { id: Name("bar"), range: 52..55, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 55..57, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -58,10 +68,14 @@ Module( name: Identifier { id: Name("baz"), range: 62..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -72,9 +86,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 69..72, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 69..72, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_unexpected_token.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_unexpected_token.py.snap index 8e3126c2e3..d76a5c7bff 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_unexpected_token.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@decorator_unexpected_token.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/decorator_unexpected_token.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..34, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 5..22, is_async: true, items: [ WithItem { range: 16..17, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("x"), ctx: Load, @@ -30,9 +33,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), @@ -43,10 +48,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 28..33, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("x"), ctx: Store, @@ -55,6 +62,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_debug_py39.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_debug_py39.py.snap index 6909999bfe..40a5517f37 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_debug_py39.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_debug_py39.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/del_debug_py39.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..57, body: [ Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 43..56, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..56, id: Name("__debug__"), ctx: Del, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_incomplete_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_incomplete_target.py.snap index b17df25feb..2e3f2be0af 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_incomplete_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_incomplete_target.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/del_incomplete_target ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..24, body: [ Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 0..9, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Del, @@ -22,9 +25,11 @@ Module( ), Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 7..9, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("y"), ctx: Load, @@ -33,6 +38,7 @@ Module( attr: Identifier { id: Name(""), range: 9..9, + node_index: AtomicNodeIndex(..), }, ctx: Del, }, @@ -42,9 +48,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..11, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("z"), ctx: Load, @@ -54,10 +62,12 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 12..24, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("x"), ctx: Del, @@ -65,9 +75,11 @@ Module( ), Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 19..23, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("y"), ctx: Load, @@ -75,10 +87,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 22..23, lower: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("z"), ctx: Load, @@ -88,6 +102,7 @@ Module( upper: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..23, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_stmt_empty.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_stmt_empty.py.snap index da81492018..412384af7c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_stmt_empty.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@del_stmt_empty.py.snap @@ -1,17 +1,18 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/del_stmt_empty.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..4, body: [ Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 0..3, targets: [], }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@dotted_name_multiple_dots.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@dotted_name_multiple_dots.py.snap index 281c71c151..3614aa08aa 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@dotted_name_multiple_dots.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@dotted_name_multiple_dots.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/dotted_name_multiple_dots.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..25, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..11, names: [ Alias { range: 7..11, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a..b"), range: 7..11, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -27,13 +30,16 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 12..20, names: [ Alias { range: 19..20, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 19..20, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -42,9 +48,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..23, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 20..23, }, ), @@ -52,9 +60,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..24, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("b"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_match_class_attr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_match_class_attr.py.snap index f4d1b42821..950b30f63d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_match_class_attr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_match_class_attr.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/duplicate_match_class ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..231, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..230, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -22,11 +25,14 @@ Module( cases: [ MatchCase { range: 13..38, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 18..33, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..23, id: Name("Class"), ctx: Load, @@ -34,19 +40,24 @@ Module( ), arguments: PatternArguments { range: 23..33, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 24..27, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 24..25, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 26..27, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 26..27, value: Int( 1, @@ -58,15 +69,19 @@ Module( }, PatternKeyword { range: 29..32, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 29..30, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 31..32, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 31..32, value: Int( 2, @@ -84,9 +99,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 35..38, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 35..38, }, ), @@ -96,15 +113,19 @@ Module( }, MatchCase { range: 43..70, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 48..65, + node_index: AtomicNodeIndex(..), patterns: [ MatchClass( PatternMatchClass { range: 49..64, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..54, id: Name("Class"), ctx: Load, @@ -112,19 +133,24 @@ Module( ), arguments: PatternArguments { range: 54..64, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 55..58, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 55..56, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 57..58, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 1, @@ -136,15 +162,19 @@ Module( }, PatternKeyword { range: 60..63, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 60..61, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 62..63, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 62..63, value: Int( 2, @@ -165,9 +195,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 67..70, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 67..70, }, ), @@ -177,17 +209,21 @@ Module( }, MatchCase { range: 75..113, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 80..108, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 81..84, value: StringLiteralValue { inner: Single( StringLiteral { range: 81..84, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -201,11 +237,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 89..92, value: StringLiteralValue { inner: Single( StringLiteral { range: 89..92, + node_index: AtomicNodeIndex(..), value: "y", flags: StringLiteralFlags { quote_style: Double, @@ -222,11 +260,13 @@ Module( MatchAs( PatternMatchAs { range: 86..87, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 86..87, + node_index: AtomicNodeIndex(..), }, ), }, @@ -234,8 +274,10 @@ Module( MatchClass( PatternMatchClass { range: 94..107, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 94..97, id: Name("Foo"), ctx: Load, @@ -243,19 +285,24 @@ Module( ), arguments: PatternArguments { range: 97..107, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 98..101, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 98..99, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 100..101, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 100..101, value: Int( 1, @@ -267,15 +314,19 @@ Module( }, PatternKeyword { range: 103..106, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 103..104, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 105..106, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 105..106, value: Int( 2, @@ -297,9 +348,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 110..113, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 110..113, }, ), @@ -309,13 +362,16 @@ Module( }, MatchCase { range: 118..162, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 123..157, + node_index: AtomicNodeIndex(..), patterns: [ MatchMapping( PatternMatchMapping { range: 124..126, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -324,14 +380,17 @@ Module( MatchMapping( PatternMatchMapping { range: 128..156, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 129..132, value: StringLiteralValue { inner: Single( StringLiteral { range: 129..132, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -345,11 +404,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 137..140, value: StringLiteralValue { inner: Single( StringLiteral { range: 137..140, + node_index: AtomicNodeIndex(..), value: "y", flags: StringLiteralFlags { quote_style: Double, @@ -366,11 +427,13 @@ Module( MatchAs( PatternMatchAs { range: 134..135, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 134..135, + node_index: AtomicNodeIndex(..), }, ), }, @@ -378,8 +441,10 @@ Module( MatchClass( PatternMatchClass { range: 142..155, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..145, id: Name("Foo"), ctx: Load, @@ -387,19 +452,24 @@ Module( ), arguments: PatternArguments { range: 145..155, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 146..149, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 146..147, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 148..149, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 148..149, value: Int( 1, @@ -411,15 +481,19 @@ Module( }, PatternKeyword { range: 151..154, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 151..152, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 153..154, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 153..154, value: Int( 2, @@ -444,9 +518,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 159..162, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 159..162, }, ), @@ -456,11 +532,14 @@ Module( }, MatchCase { range: 167..230, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 172..225, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 172..177, id: Name("Class"), ctx: Load, @@ -468,19 +547,24 @@ Module( ), arguments: PatternArguments { range: 177..225, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 178..181, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 178..179, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 180..181, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 180..181, value: Int( 1, @@ -492,21 +576,26 @@ Module( }, PatternKeyword { range: 183..201, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("d"), range: 183..184, + node_index: AtomicNodeIndex(..), }, pattern: MatchMapping( PatternMatchMapping { range: 185..201, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 186..189, value: StringLiteralValue { inner: Single( StringLiteral { range: 186..189, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -520,11 +609,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 194..197, value: StringLiteralValue { inner: Single( StringLiteral { range: 194..197, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -541,8 +632,10 @@ Module( MatchValue( PatternMatchValue { range: 191..192, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 191..192, value: Int( 1, @@ -554,8 +647,10 @@ Module( MatchValue( PatternMatchValue { range: 199..200, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 199..200, value: Int( 2, @@ -571,15 +666,19 @@ Module( }, PatternKeyword { range: 203..224, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("other"), range: 203..208, + node_index: AtomicNodeIndex(..), }, pattern: MatchClass( PatternMatchClass { range: 209..224, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 209..214, id: Name("Class"), ctx: Load, @@ -587,19 +686,24 @@ Module( ), arguments: PatternArguments { range: 214..224, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 215..218, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 215..216, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 217..218, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 217..218, value: Int( 1, @@ -611,15 +715,19 @@ Module( }, PatternKeyword { range: 220..223, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 220..221, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 222..223, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 222..223, value: Int( 2, @@ -642,9 +750,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 227..230, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 227..230, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_match_key.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_match_key.py.snap index 4d4dbc2eca..4cfbb7011e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_match_key.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_match_key.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/duplicate_match_key.p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..533, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..532, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -22,17 +25,21 @@ Module( cases: [ MatchCase { range: 13..39, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 18..34, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, value: StringLiteralValue { inner: Single( StringLiteral { range: 19..22, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -46,11 +53,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 27..30, value: StringLiteralValue { inner: Single( StringLiteral { range: 27..30, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -67,8 +76,10 @@ Module( MatchValue( PatternMatchValue { range: 24..25, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 24..25, value: Int( 1, @@ -80,8 +91,10 @@ Module( MatchValue( PatternMatchValue { range: 32..33, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 2, @@ -98,9 +111,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 36..39, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 36..39, }, ), @@ -110,17 +125,21 @@ Module( }, MatchCase { range: 44..72, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 49..67, + node_index: AtomicNodeIndex(..), keys: [ BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 50..54, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 50..54, + node_index: AtomicNodeIndex(..), value: [ 120, ], @@ -136,11 +155,13 @@ Module( ), BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 59..63, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 59..63, + node_index: AtomicNodeIndex(..), value: [ 120, ], @@ -159,8 +180,10 @@ Module( MatchValue( PatternMatchValue { range: 56..57, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 56..57, value: Int( 1, @@ -172,8 +195,10 @@ Module( MatchValue( PatternMatchValue { range: 65..66, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 65..66, value: Int( 2, @@ -190,9 +215,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 69..72, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 69..72, }, ), @@ -202,12 +229,15 @@ Module( }, MatchCase { range: 77..99, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 82..94, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 0, @@ -216,6 +246,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 0, @@ -227,8 +258,10 @@ Module( MatchValue( PatternMatchValue { range: 86..87, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 86..87, value: Int( 1, @@ -240,8 +273,10 @@ Module( MatchValue( PatternMatchValue { range: 92..93, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 92..93, value: Int( 2, @@ -258,9 +293,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 96..99, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 96..99, }, ), @@ -270,12 +307,15 @@ Module( }, MatchCase { range: 104..130, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 109..125, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 110..113, value: Float( 1.0, @@ -284,6 +324,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 118..121, value: Float( 1.0, @@ -295,8 +336,10 @@ Module( MatchValue( PatternMatchValue { range: 115..116, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 115..116, value: Int( 1, @@ -308,8 +351,10 @@ Module( MatchValue( PatternMatchValue { range: 123..124, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 123..124, value: Int( 2, @@ -326,9 +371,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 127..130, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 127..130, }, ), @@ -338,15 +385,19 @@ Module( }, MatchCase { range: 135..171, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 140..166, + node_index: AtomicNodeIndex(..), keys: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 141..149, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 141..144, value: Float( 1.0, @@ -356,6 +407,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 147..149, value: Complex { real: 0.0, @@ -367,9 +419,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 154..162, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 154..157, value: Float( 1.0, @@ -379,6 +433,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 160..162, value: Complex { real: 0.0, @@ -393,8 +448,10 @@ Module( MatchValue( PatternMatchValue { range: 151..152, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 151..152, value: Int( 1, @@ -406,8 +463,10 @@ Module( MatchValue( PatternMatchValue { range: 164..165, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 164..165, value: Int( 2, @@ -424,9 +483,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 168..171, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 168..171, }, ), @@ -436,18 +497,22 @@ Module( }, MatchCase { range: 176..204, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 181..199, + node_index: AtomicNodeIndex(..), keys: [ BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 182..186, value: true, }, ), BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 191..195, value: true, }, @@ -457,8 +522,10 @@ Module( MatchValue( PatternMatchValue { range: 188..189, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 188..189, value: Int( 1, @@ -470,8 +537,10 @@ Module( MatchValue( PatternMatchValue { range: 197..198, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 197..198, value: Int( 2, @@ -488,9 +557,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 201..204, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 201..204, }, ), @@ -500,17 +571,21 @@ Module( }, MatchCase { range: 209..237, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 214..232, + node_index: AtomicNodeIndex(..), keys: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 215..219, }, ), NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 224..228, }, ), @@ -519,8 +594,10 @@ Module( MatchValue( PatternMatchValue { range: 221..222, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 221..222, value: Int( 1, @@ -532,8 +609,10 @@ Module( MatchValue( PatternMatchValue { range: 230..231, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 230..231, value: Int( 2, @@ -550,9 +629,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 234..237, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 234..237, }, ), @@ -562,17 +643,21 @@ Module( }, MatchCase { range: 242..319, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 247..314, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 253..277, value: StringLiteralValue { inner: Single( StringLiteral { range: 253..277, + node_index: AtomicNodeIndex(..), value: "x\n y\n z\n ", flags: StringLiteralFlags { quote_style: Double, @@ -586,11 +671,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 286..310, value: StringLiteralValue { inner: Single( StringLiteral { range: 286..310, + node_index: AtomicNodeIndex(..), value: "x\n y\n z\n ", flags: StringLiteralFlags { quote_style: Double, @@ -607,8 +694,10 @@ Module( MatchValue( PatternMatchValue { range: 279..280, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 279..280, value: Int( 1, @@ -620,8 +709,10 @@ Module( MatchValue( PatternMatchValue { range: 312..313, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 312..313, value: Int( 2, @@ -638,9 +729,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 316..319, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 316..319, }, ), @@ -650,17 +743,21 @@ Module( }, MatchCase { range: 324..358, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 329..353, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 330..333, value: StringLiteralValue { inner: Single( StringLiteral { range: 330..333, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -674,11 +771,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 338..341, value: StringLiteralValue { inner: Single( StringLiteral { range: 338..341, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -692,11 +791,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 346..349, value: StringLiteralValue { inner: Single( StringLiteral { range: 346..349, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -713,8 +814,10 @@ Module( MatchValue( PatternMatchValue { range: 335..336, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 335..336, value: Int( 1, @@ -726,8 +829,10 @@ Module( MatchValue( PatternMatchValue { range: 343..344, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 343..344, value: Int( 2, @@ -739,8 +844,10 @@ Module( MatchValue( PatternMatchValue { range: 351..352, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 351..352, value: Int( 3, @@ -757,9 +864,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 355..358, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 355..358, }, ), @@ -769,12 +878,15 @@ Module( }, MatchCase { range: 363..401, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 368..396, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 369..370, value: Int( 0, @@ -783,11 +895,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 375..378, value: StringLiteralValue { inner: Single( StringLiteral { range: 375..378, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -801,6 +915,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 383..384, value: Int( 0, @@ -809,11 +924,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 389..392, value: StringLiteralValue { inner: Single( StringLiteral { range: 389..392, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -830,8 +947,10 @@ Module( MatchValue( PatternMatchValue { range: 372..373, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 372..373, value: Int( 1, @@ -843,8 +962,10 @@ Module( MatchValue( PatternMatchValue { range: 380..381, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 380..381, value: Int( 1, @@ -856,8 +977,10 @@ Module( MatchValue( PatternMatchValue { range: 386..387, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 386..387, value: Int( 2, @@ -869,8 +992,10 @@ Module( MatchValue( PatternMatchValue { range: 394..395, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 394..395, value: Int( 2, @@ -887,9 +1012,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 398..401, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 398..401, }, ), @@ -899,21 +1026,26 @@ Module( }, MatchCase { range: 406..434, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 411..429, + node_index: AtomicNodeIndex(..), patterns: [ MatchMapping( PatternMatchMapping { range: 412..428, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 413..416, value: StringLiteralValue { inner: Single( StringLiteral { range: 413..416, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -927,11 +1059,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 421..424, value: StringLiteralValue { inner: Single( StringLiteral { range: 421..424, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -948,8 +1082,10 @@ Module( MatchValue( PatternMatchValue { range: 418..419, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 418..419, value: Int( 1, @@ -961,8 +1097,10 @@ Module( MatchValue( PatternMatchValue { range: 426..427, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 426..427, value: Int( 2, @@ -982,9 +1120,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 431..434, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 431..434, }, ), @@ -994,11 +1134,14 @@ Module( }, MatchCase { range: 439..477, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 444..472, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 444..447, id: Name("Foo"), ctx: Load, @@ -1006,19 +1149,24 @@ Module( ), arguments: PatternArguments { range: 447..472, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 448..451, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 448..449, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 450..451, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 450..451, value: Int( 1, @@ -1030,21 +1178,26 @@ Module( }, PatternKeyword { range: 453..471, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("y"), range: 453..454, + node_index: AtomicNodeIndex(..), }, pattern: MatchMapping( PatternMatchMapping { range: 455..471, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 456..459, value: StringLiteralValue { inner: Single( StringLiteral { range: 456..459, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -1058,11 +1211,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 464..467, value: StringLiteralValue { inner: Single( StringLiteral { range: 464..467, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -1079,8 +1234,10 @@ Module( MatchValue( PatternMatchValue { range: 461..462, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 461..462, value: Int( 1, @@ -1092,8 +1249,10 @@ Module( MatchValue( PatternMatchValue { range: 469..470, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 469..470, value: Int( 2, @@ -1115,9 +1274,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 474..477, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 474..477, }, ), @@ -1127,15 +1288,19 @@ Module( }, MatchCase { range: 482..532, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 487..527, + node_index: AtomicNodeIndex(..), patterns: [ MatchClass( PatternMatchClass { range: 488..496, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 488..491, id: Name("Foo"), ctx: Load, @@ -1143,19 +1308,24 @@ Module( ), arguments: PatternArguments { range: 491..496, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 492..495, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 492..493, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 494..495, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 494..495, value: Int( 1, @@ -1172,8 +1342,10 @@ Module( MatchClass( PatternMatchClass { range: 498..526, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 498..501, id: Name("Foo"), ctx: Load, @@ -1181,19 +1353,24 @@ Module( ), arguments: PatternArguments { range: 501..526, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 502..505, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 502..503, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 504..505, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 504..505, value: Int( 1, @@ -1205,21 +1382,26 @@ Module( }, PatternKeyword { range: 507..525, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("y"), range: 507..508, + node_index: AtomicNodeIndex(..), }, pattern: MatchMapping( PatternMatchMapping { range: 509..525, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 510..513, value: StringLiteralValue { inner: Single( StringLiteral { range: 510..513, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -1233,11 +1415,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 518..521, value: StringLiteralValue { inner: Single( StringLiteral { range: 518..521, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Double, @@ -1254,8 +1438,10 @@ Module( MatchValue( PatternMatchValue { range: 515..516, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 515..516, value: Int( 1, @@ -1267,8 +1453,10 @@ Module( MatchValue( PatternMatchValue { range: 523..524, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 523..524, value: Int( 2, @@ -1293,9 +1481,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 529..532, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 529..532, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_type_parameter_names.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_type_parameter_names.py.snap index 88b7f1ffb7..55e020ad84 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_type_parameter_names.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@duplicate_type_parameter_names.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/duplicate_type_parame ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..261, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..22, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..10, id: Name("Alias"), ctx: Store, @@ -22,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 10..16, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 11..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 11..12, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -37,9 +43,11 @@ Module( TypeVar( TypeParamTypeVar { range: 14..15, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 14..15, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -50,6 +58,7 @@ Module( ), value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), @@ -57,23 +66,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 23..45, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 27..28, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 28..34, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 29..30, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 29..30, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -82,9 +96,11 @@ Module( TypeVar( TypeParamTypeVar { range: 32..33, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 32..33, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -95,19 +111,26 @@ Module( ), parameters: Parameters { range: 34..40, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 35..39, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 35..39, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("t"), range: 35..36, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("T"), ctx: Load, @@ -126,9 +149,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 42..45, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 42..45, }, ), @@ -139,22 +164,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 46..64, decorator_list: [], name: Identifier { id: Name("C"), range: 52..53, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 53..59, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 54..55, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 54..55, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -163,9 +193,11 @@ Module( TypeVar( TypeParamTypeVar { range: 57..58, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 57..58, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -178,9 +210,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 61..64, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 61..64, }, ), @@ -191,9 +225,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 65..132, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..75, id: Name("Alias"), ctx: Store, @@ -202,13 +238,16 @@ Module( type_params: Some( TypeParams { range: 75..126, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 76..77, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 76..77, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -217,13 +256,16 @@ Module( TypeVar( TypeParamTypeVar { range: 79..85, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 79..80, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..85, id: Name("str"), ctx: Load, @@ -236,17 +278,21 @@ Module( TypeVar( TypeParamTypeVar { range: 87..102, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("V"), range: 87..88, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 90..102, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..94, id: Name("str"), ctx: Load, @@ -254,6 +300,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..101, id: Name("bytes"), ctx: Load, @@ -271,9 +318,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 104..107, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 105..107, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -281,9 +330,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 109..112, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 111..112, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -291,14 +342,17 @@ Module( TypeVar( TypeParamTypeVar { range: 114..125, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 114..115, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 118..125, id: Name("default"), ctx: Load, @@ -312,6 +366,7 @@ Module( ), value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 129..132, }, ), @@ -319,23 +374,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 133..154, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 137..138, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 138..147, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 139..140, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 139..140, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -344,9 +404,11 @@ Module( TypeVar( TypeParamTypeVar { range: 142..143, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 142..143, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -355,9 +417,11 @@ Module( TypeVar( TypeParamTypeVar { range: 145..146, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 145..146, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -368,6 +432,9 @@ Module( ), parameters: Parameters { range: 147..149, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -378,9 +445,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 151..154, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 151..154, }, ), @@ -391,23 +460,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 169..188, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 173..174, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 174..181, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 175..176, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 175..176, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -416,9 +490,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 178..180, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 179..180, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -428,6 +504,9 @@ Module( ), parameters: Parameters { range: 181..183, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -438,9 +517,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 185..188, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 185..188, }, ), @@ -451,23 +532,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 218..238, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 222..223, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 223..231, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 224..225, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 224..225, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -476,9 +562,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 227..230, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 229..230, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -488,6 +576,9 @@ Module( ), parameters: Parameters { range: 231..233, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -498,9 +589,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 235..238, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 235..238, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_star_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_star_py310.py.snap index 070d99e74d..0530c751f8 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_star_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_star_py310.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/err/except_star_py310.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..126, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 44..125, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..52, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 49..52, }, ), @@ -28,9 +32,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 53..76, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 61..71, id: Name("ValueError"), ctx: Load, @@ -41,9 +47,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 73..76, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 73..76, }, ), @@ -55,9 +63,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 77..98, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..93, id: Name("KeyError"), ctx: Load, @@ -68,9 +78,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 95..98, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 95..98, }, ), @@ -82,9 +94,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 99..125, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 115..120, id: Name("Error"), ctx: Load, @@ -95,9 +109,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 122..125, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 122..125, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_invalid_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_invalid_expression.py.snap index 3409ecda78..fb1f2b6181 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_invalid_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_invalid_expression.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/except_stmt_invalid_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..74, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..38, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -24,13 +26,16 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 14..38, + node_index: AtomicNodeIndex(..), type_: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 21..28, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("x"), ctx: Load, @@ -44,6 +49,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 34..38, }, ), @@ -58,10 +64,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 39..73, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 48..52, }, ), @@ -70,12 +78,15 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 53..73, + node_index: AtomicNodeIndex(..), type_: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 61..63, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Load, @@ -89,6 +100,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 69..73, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_as_name.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_as_name.py.snap index 309e29e699..b9b370d139 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_as_name.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_as_name.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/except_stmt_missing_as_name.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..73, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..72, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -24,9 +26,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 14..43, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..30, id: Name("Exception"), ctx: Load, @@ -37,6 +41,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 39..43, }, ), @@ -46,9 +51,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 44..72, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..60, id: Name("Exception"), ctx: Load, @@ -59,6 +66,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 68..72, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_exception.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_exception.py.snap index 16e649cc7d..fa14993f79 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_exception.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_exception.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/except_stmt_missing_exception.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..166, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..37, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -24,16 +26,19 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 14..37, + node_index: AtomicNodeIndex(..), type_: None, name: Some( Identifier { id: Name("exc"), range: 24..27, + node_index: AtomicNodeIndex(..), }, ), body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 33..37, }, ), @@ -48,10 +53,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 92..165, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 101..105, }, ), @@ -60,11 +67,13 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 106..123, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 119..123, }, ), @@ -74,11 +83,13 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 124..140, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 136..140, }, ), @@ -88,16 +99,19 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 141..165, + node_index: AtomicNodeIndex(..), type_: None, name: Some( Identifier { id: Name("exc"), range: 152..155, + node_index: AtomicNodeIndex(..), }, ), body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 161..165, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_exception_and_as_name.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_exception_and_as_name.py.snap index ad463555ea..fc9b78dde0 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_exception_and_as_name.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_missing_exception_and_as_name.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/except_stmt_missing_exception_and_as_name.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..34, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..33, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -24,11 +26,13 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 14..33, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 29..33, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_unparenthesized_tuple_as.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_unparenthesized_tuple_as.py.snap index 928495cb4d..ddc722c892 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_unparenthesized_tuple_as.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_unparenthesized_tuple_as.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/except_stmt_unparenth ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..86, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..42, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -23,13 +26,16 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 14..42, + node_index: AtomicNodeIndex(..), type_: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 21..25, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("x"), ctx: Load, @@ -37,6 +43,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("y"), ctx: Load, @@ -52,11 +59,13 @@ Module( Identifier { id: Name("exc"), range: 29..32, + node_index: AtomicNodeIndex(..), }, ), body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 38..42, }, ), @@ -71,10 +80,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 43..85, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 52..56, }, ), @@ -83,13 +94,16 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 57..85, + node_index: AtomicNodeIndex(..), type_: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 65..69, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("x"), ctx: Load, @@ -97,6 +111,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("y"), ctx: Load, @@ -112,11 +127,13 @@ Module( Identifier { id: Name("eg"), range: 73..75, + node_index: AtomicNodeIndex(..), }, ), body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 81..85, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_unparenthesized_tuple_no_as_py313.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_unparenthesized_tuple_no_as_py313.py.snap index 1a74da4a67..848e2c1299 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_unparenthesized_tuple_no_as_py313.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@except_stmt_unparenthesized_tuple_no_as_py313.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/except_stmt_unparenth ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..117, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 44..79, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 53..57, }, ), @@ -23,13 +26,16 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 58..79, + node_index: AtomicNodeIndex(..), type_: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 65..69, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("x"), ctx: Load, @@ -37,6 +43,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("y"), ctx: Load, @@ -52,6 +59,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 75..79, }, ), @@ -66,10 +74,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 80..116, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 89..93, }, ), @@ -78,13 +88,16 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 94..116, + node_index: AtomicNodeIndex(..), type_: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 102..106, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..103, id: Name("x"), ctx: Load, @@ -92,6 +105,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..106, id: Name("y"), ctx: Load, @@ -107,6 +121,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 112..116, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__double_starred.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__double_starred.py.snap index 4ef425440b..0637b78f08 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__double_starred.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__double_starred.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/do ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..55, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..15, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -24,17 +28,21 @@ Module( ), arguments: Arguments { range: 4..15, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 5..14, + node_index: AtomicNodeIndex(..), arg: None, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 7..14, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("x"), ctx: Load, @@ -52,12 +60,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..27, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 16..27, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..20, id: Name("call"), ctx: Load, @@ -65,16 +76,20 @@ Module( ), arguments: Arguments { range: 20..27, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 21..26, + node_index: AtomicNodeIndex(..), arg: None, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 24..26, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("x"), ctx: Load, @@ -92,12 +107,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..38, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 28..38, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..32, id: Name("call"), ctx: Load, @@ -105,16 +123,20 @@ Module( ), arguments: Arguments { range: 32..38, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 33..37, + node_index: AtomicNodeIndex(..), arg: None, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 35..37, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("x"), ctx: Load, @@ -132,12 +154,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 40..54, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 40..54, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..44, id: Name("call"), ctx: Load, @@ -145,9 +170,11 @@ Module( ), arguments: Arguments { range: 44..54, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 52..53, value: Int( 1, @@ -158,9 +185,11 @@ Module( keywords: [ Keyword { range: 45..48, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__duplicate_keyword_arguments.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__duplicate_keyword_arguments.py.snap index d31cfdfc0b..6e6e7699e2 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__duplicate_keyword_arguments.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__duplicate_keyword_arguments.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/duplicate_keyword_arguments.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..28, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..28, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..28, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..3, id: Name("foo"), ctx: Load, @@ -25,18 +28,22 @@ Module( ), arguments: Arguments { range: 3..28, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 4..7, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("a"), range: 4..5, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..7, value: Int( 1, @@ -46,14 +53,17 @@ Module( }, Keyword { range: 9..12, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("b"), range: 9..10, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 11..12, value: Int( 2, @@ -63,14 +73,17 @@ Module( }, Keyword { range: 14..17, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("c"), range: 14..15, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 16..17, value: Int( 3, @@ -80,14 +93,17 @@ Module( }, Keyword { range: 19..22, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("b"), range: 19..20, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..22, value: Int( 4, @@ -97,14 +113,17 @@ Module( }, Keyword { range: 24..27, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("a"), range: 24..25, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 26..27, value: Int( 5, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_expression.py.snap index 46cb028b2a..e517103c14 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_expression.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/in ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..67, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..15, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -24,18 +28,22 @@ Module( ), arguments: Arguments { range: 4..15, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 5..14, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name(""), range: 5..10, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 1, @@ -51,12 +59,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..32, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 16..32, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..20, id: Name("call"), ctx: Load, @@ -64,18 +75,22 @@ Module( ), arguments: Arguments { range: 20..32, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 21..31, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name(""), range: 21..27, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 30..31, value: Int( 1, @@ -91,12 +106,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 34..47, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 34..47, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..38, id: Name("call"), ctx: Load, @@ -104,13 +122,16 @@ Module( ), arguments: Arguments { range: 38..47, + node_index: AtomicNodeIndex(..), args: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 39..46, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..46, id: Name("x"), ctx: Load, @@ -128,12 +149,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 48..66, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 48..66, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..52, id: Name("call"), ctx: Load, @@ -141,12 +165,15 @@ Module( ), arguments: Arguments { range: 52..66, + node_index: AtomicNodeIndex(..), args: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 53..65, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 64..65, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_keyword_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_keyword_expression.py.snap index 1f990885a4..99643af80e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_keyword_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_keyword_expression.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/invalid_keyword_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..69, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..17, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -25,22 +28,27 @@ Module( ), arguments: Arguments { range: 4..17, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 5..16, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 5..6, + node_index: AtomicNodeIndex(..), }, ), value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 9..16, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..16, id: Name("y"), ctx: Load, @@ -58,12 +66,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..40, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 18..40, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..22, id: Name("call"), ctx: Load, @@ -71,21 +82,26 @@ Module( ), arguments: Arguments { range: 22..40, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 23..39, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 23..24, + node_index: AtomicNodeIndex(..), }, ), value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 27..39, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("y"), ctx: Load, @@ -102,12 +118,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 41..53, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 41..53, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..45, id: Name("call"), ctx: Load, @@ -115,21 +134,26 @@ Module( ), arguments: Arguments { range: 45..53, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 46..52, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 46..47, + node_index: AtomicNodeIndex(..), }, ), value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 50..52, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("y"), ctx: Load, @@ -147,12 +171,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..68, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 54..68, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..58, id: Name("call"), ctx: Load, @@ -160,21 +187,26 @@ Module( ), arguments: Arguments { range: 58..68, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 59..67, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 59..60, + node_index: AtomicNodeIndex(..), }, ), value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 64..66, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_order.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_order.py.snap index b4a999a448..2b60be9235 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_order.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__invalid_order.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/invalid_order.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..100, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..17, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -25,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..17, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..16, id: Name("x"), ctx: Load, @@ -37,9 +42,11 @@ Module( keywords: [ Keyword { range: 5..13, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..13, id: Name("kwargs"), ctx: Load, @@ -54,12 +61,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..30, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 18..30, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..22, id: Name("call"), ctx: Load, @@ -67,9 +77,11 @@ Module( ), arguments: Arguments { range: 22..30, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("y"), ctx: Load, @@ -79,14 +91,17 @@ Module( keywords: [ Keyword { range: 23..26, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 23..24, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 25..26, value: Int( 1, @@ -102,12 +117,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 31..53, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 31..53, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 31..35, id: Name("call"), ctx: Load, @@ -115,9 +133,11 @@ Module( ), arguments: Arguments { range: 35..53, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("y"), ctx: Load, @@ -127,14 +147,17 @@ Module( keywords: [ Keyword { range: 36..39, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 36..37, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 38..39, value: Int( 1, @@ -144,9 +167,11 @@ Module( }, Keyword { range: 41..49, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..49, id: Name("kwargs"), ctx: Load, @@ -161,12 +186,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..75, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 54..75, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..58, id: Name("call"), ctx: Load, @@ -174,12 +202,15 @@ Module( ), arguments: Arguments { range: 58..75, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 69..74, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..74, id: Name("args"), ctx: Load, @@ -192,9 +223,11 @@ Module( keywords: [ Keyword { range: 59..67, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 61..67, id: Name("kwargs"), ctx: Load, @@ -209,12 +242,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 76..99, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 76..99, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..80, id: Name("call"), ctx: Load, @@ -222,12 +258,15 @@ Module( ), arguments: Arguments { range: 80..99, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 92..97, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..97, id: Name("args"), ctx: Load, @@ -240,9 +279,11 @@ Module( keywords: [ Keyword { range: 81..89, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..89, id: Name("kwargs"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_argument.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_argument.py.snap index 2fd99bd6cb..bade10dafe 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_argument.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_argument.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/missing_argument.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..10, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -25,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..10, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, @@ -35,6 +40,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_comma.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_comma.py.snap index 43abd82cae..a17128ef2c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_comma.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_comma.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/missing_comma.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..9, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..9, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -25,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..9, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, @@ -35,6 +40,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_expression.py.snap index 1c86ec46e3..1b515e8f95 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__missing_expression.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/mi ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..38, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..10, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..10, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 1, @@ -42,12 +48,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 11..21, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 11..21, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..15, id: Name("call"), ctx: Load, @@ -55,18 +64,22 @@ Module( ), arguments: Arguments { range: 15..21, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 16..19, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 16..17, + node_index: AtomicNodeIndex(..), }, ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..19, id: Name(""), ctx: Invalid, @@ -81,12 +94,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..32, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 22..32, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..26, id: Name("call"), ctx: Load, @@ -94,12 +110,15 @@ Module( ), arguments: Arguments { range: 26..32, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 27..28, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..28, id: Name(""), ctx: Invalid, @@ -110,6 +129,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 30..31, id: Name("y"), ctx: Load, @@ -124,9 +144,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 34..37, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..37, id: Name("foo"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__starred.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__starred.py.snap index 3c1e2f02bb..d9a820dcd8 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__starred.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__starred.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/starred.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..64, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..28, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..28, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -25,15 +28,19 @@ Module( ), arguments: Arguments { range: 4..28, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 5..27, elt: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 5..10, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..10, id: Name("data"), ctx: Load, @@ -45,8 +52,10 @@ Module( generators: [ Comprehension { range: 11..27, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..19, id: Name("data"), ctx: Store, @@ -54,6 +63,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..27, id: Name("iter"), ctx: Load, @@ -75,12 +85,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..43, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 29..43, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..33, id: Name("call"), ctx: Load, @@ -88,16 +101,20 @@ Module( ), arguments: Arguments { range: 33..43, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 34..42, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 35..42, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("x"), ctx: Load, @@ -118,12 +135,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..63, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 44..63, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..48, id: Name("call"), ctx: Load, @@ -131,15 +151,19 @@ Module( ), arguments: Arguments { range: 48..63, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 49..62, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 50..62, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 61..62, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_0.py.snap index 0ea8939500..6eab954049 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_0.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/un ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..26, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..5, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..5, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -24,6 +28,7 @@ Module( ), arguments: Arguments { range: 4..5, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -33,16 +38,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 7..26, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 11..14, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 14..16, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -53,6 +63,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 22..26, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_1.py.snap index af8a140c61..d60f2bf871 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_1.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/un ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..27, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..6, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..6, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..6, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, @@ -41,16 +47,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 8..27, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 12..15, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 15..17, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -61,6 +72,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 23..27, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_2.py.snap index d41c5727a7..ee3456db28 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__arguments__unclosed_2.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/arguments/un ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..28, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..7, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..7, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, @@ -41,16 +47,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 9..28, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 13..16, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 16..18, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -61,6 +72,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 24..28, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__invalid_member.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__invalid_member.py.snap index 0ab3721b7a..f2eec9b2cb 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__invalid_member.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__invalid_member.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/attribute/invalid_member.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..16, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..1, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -24,9 +26,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1..3, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1..3, value: Float( 0.1, @@ -37,9 +41,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4..5, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Load, @@ -49,9 +55,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..7, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..7, value: Float( 0.1, @@ -62,9 +70,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 7..9, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 7..9, value: Float( 0.0, @@ -75,15 +85,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..15, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 10..15, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 10..12, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("x"), ctx: Load, @@ -92,12 +106,14 @@ Module( attr: Identifier { id: Name(""), range: 12..12, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 0, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__multiple_dots.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__multiple_dots.py.snap index a6c1f3f614..efa04a319e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__multiple_dots.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__multiple_dots.py.snap @@ -1,26 +1,30 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/attribute/multiple_dots.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..46, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 0..10, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 0..6, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..5, id: Name("extra"), ctx: Load, @@ -29,6 +33,7 @@ Module( attr: Identifier { id: Name(""), range: 6..6, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -36,6 +41,7 @@ Module( attr: Identifier { id: Name("dot"), range: 7..10, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -44,9 +50,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 11..19, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..19, id: Name("multiple"), ctx: Load, @@ -56,18 +64,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..27, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 19..27, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), attr: Identifier { id: Name("dots"), range: 23..27, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -76,9 +88,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..36, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..36, id: Name("multiple"), ctx: Load, @@ -88,21 +102,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 36..45, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 36..45, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 36..40, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 36..39, }, ), attr: Identifier { id: Name(""), range: 40..40, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -110,6 +129,7 @@ Module( attr: Identifier { id: Name("dots"), range: 41..45, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__no_member.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__no_member.py.snap index 440c42423f..69af9f8041 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__no_member.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__attribute__no_member.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/attribute/no ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..141, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 87..93, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 87..93, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..92, id: Name("first"), ctx: Load, @@ -25,6 +29,7 @@ Module( attr: Identifier { id: Name(""), range: 93..93, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -33,9 +38,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 94..100, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 94..100, id: Name("second"), ctx: Load, @@ -45,12 +52,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 136..141, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 136..141, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..140, id: Name("last"), ctx: Load, @@ -59,6 +69,7 @@ Module( attr: Identifier { id: Name(""), range: 141..141, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__no_expression_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__no_expression_0.py.snap index 747e1c7a79..f1e8020d1a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__no_expression_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__no_expression_0.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/await/no_exp ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..73, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 61..66, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 61..66, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..66, id: Name(""), ctx: Invalid, @@ -28,12 +32,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..73, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 68..73, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -42,6 +49,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__no_expression_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__no_expression_1.py.snap index 7d67f0e700..cf7d31d11b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__no_expression_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__no_expression_1.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/await/no_exp ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..85, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 59..64, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 59..64, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 64..64, id: Name(""), ctx: Invalid, @@ -28,16 +32,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 66..85, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 70..73, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 73..75, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -48,6 +57,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 81..85, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__recover.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__recover.py.snap index 87c433552a..029e1723d9 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__recover.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__await__recover.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/await/recove ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..284, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 117..130, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 117..130, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 123..130, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("x"), ctx: Load, @@ -33,15 +38,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 154..162, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 154..162, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 160..162, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 161..162, id: Name("x"), ctx: Load, @@ -56,15 +65,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 163..173, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 163..173, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 170..172, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..172, id: Name("x"), ctx: Load, @@ -79,16 +92,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 214..227, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 214..227, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 220..227, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 226..227, id: Name("x"), ctx: Load, @@ -103,25 +120,34 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 228..245, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 228..245, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 234..245, parameters: Some( Parameters { range: 241..242, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 241..242, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 241..242, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 241..242, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -135,6 +161,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 244..245, id: Name("x"), ctx: Load, @@ -148,16 +175,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 246..254, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 246..254, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 252..254, op: UAdd, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 253..254, id: Name("x"), ctx: Load, @@ -171,16 +202,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 255..263, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 255..263, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 261..263, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 262..263, id: Name("x"), ctx: Load, @@ -194,16 +229,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 264..272, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 264..272, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 270..272, op: Invert, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 271..272, id: Name("x"), ctx: Load, @@ -217,16 +256,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 273..284, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 273..284, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 279..284, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 283..284, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__invalid_rhs_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__invalid_rhs_expression.py.snap index cb65ebee14..fa628602c1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__invalid_rhs_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__invalid_rhs_expression.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/bin_op/inval ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..28, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 0..15, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -25,19 +29,26 @@ Module( op: Add, right: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 4..15, parameters: Some( Parameters { range: 11..12, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 11..12, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 11..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 11..12, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -51,6 +62,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("y"), ctx: Load, @@ -64,12 +76,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..28, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 17..28, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("x"), ctx: Load, @@ -78,10 +93,12 @@ Module( op: Sub, right: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 21..28, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_lhs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_lhs.py.snap index 7e9d24594d..b9bd494cd7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_lhs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_lhs.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/bin_op/missi ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2..3, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..3, id: Name("y"), ctx: Load, @@ -23,12 +26,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..10, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -38,6 +44,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_rhs_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_rhs_0.py.snap index 9f84e4249e..ab67484feb 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_rhs_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_rhs_0.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/bin_op/missi ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..3, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 0..3, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 0..1, value: Int( 0, @@ -26,6 +30,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..3, id: Name(""), ctx: Invalid, @@ -37,12 +42,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..10, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -52,6 +60,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_rhs_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_rhs_1.py.snap index 2951642fe3..9357c59dc3 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_rhs_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__missing_rhs_1.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/bin_op/missi ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..18, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 0..11, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 0..5, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 0..1, value: Int( 1, @@ -29,6 +34,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..5, value: Int( 2, @@ -40,9 +46,11 @@ Module( op: Sub, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 8..11, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 3, @@ -52,6 +60,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..11, id: Name(""), ctx: Invalid, @@ -65,12 +74,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..18, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 13..18, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 4, @@ -80,6 +92,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 17..18, value: Int( 5, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__multiple_ops.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__multiple_ops.py.snap index 2bcbe82a7e..41adb471bf 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__multiple_ops.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__multiple_ops.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/bin_op/multiple_ops.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..19, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..3, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 0..3, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -26,10 +29,12 @@ Module( op: Add, right: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 2..3, op: UAdd, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..3, id: Name(""), ctx: Invalid, @@ -43,12 +48,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4..9, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 4..9, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..5, value: Int( 1, @@ -58,6 +66,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 2, @@ -70,12 +79,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..13, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 10..13, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("x"), ctx: Load, @@ -84,10 +96,12 @@ Module( op: Sub, right: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 12..13, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..13, id: Name(""), ctx: Invalid, @@ -101,12 +115,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 14..19, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 14..19, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 14..15, value: Int( 1, @@ -116,6 +133,7 @@ Module( op: Sub, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__named_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__named_expression.py.snap index f38974105d..475add5dc2 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__named_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__named_expression.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/bin_op/named_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..26, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..5, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 0..5, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -26,6 +29,7 @@ Module( op: Sub, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("y"), ctx: Load, @@ -37,13 +41,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..15, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 9..15, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..11, value: Int( 1, @@ -52,6 +59,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 2, @@ -67,12 +75,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..21, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 16..21, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("x"), ctx: Load, @@ -81,6 +92,7 @@ Module( op: Div, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("y"), ctx: Load, @@ -92,9 +104,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..26, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 25..26, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__starred_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__starred_expression.py.snap index cc1cc268ad..3fc18497c4 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__starred_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bin_op__starred_expression.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/bin_op/starred_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..14, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..6, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 0..6, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -26,9 +29,11 @@ Module( op: Add, right: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 4..6, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("y"), ctx: Load, @@ -43,12 +48,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 7..14, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 7..14, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Load, @@ -57,9 +65,11 @@ Module( op: Pow, right: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 12..14, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__invalid_rhs_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__invalid_rhs_expression.py.snap index 9b4a04616c..a3515f3a7f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__invalid_rhs_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__invalid_rhs_expression.py.snap @@ -7,18 +7,22 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/bool_op/inva ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..31, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 0..17, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -26,19 +30,26 @@ Module( ), Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 6..17, parameters: Some( Parameters { range: 13..14, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 13..14, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 13..14, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 13..14, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -52,6 +63,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("y"), ctx: Load, @@ -66,14 +78,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..31, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 19..31, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("x"), ctx: Load, @@ -81,10 +96,12 @@ Module( ), Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 24..31, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 30..31, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__missing_lhs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__missing_lhs.py.snap index 6818a4a9bf..68ff71e827 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__missing_lhs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__missing_lhs.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/bool_op/missing_lhs.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..5, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4..5, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__missing_rhs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__missing_rhs.py.snap index 34a82c7f26..85ad8a317f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__missing_rhs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__missing_rhs.py.snap @@ -7,18 +7,22 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/bool_op/miss ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..12, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..5, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 0..5, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -26,6 +30,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..5, id: Name(""), ctx: Invalid, @@ -38,12 +43,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 7..12, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 7..12, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 7..8, value: Int( 1, @@ -53,6 +61,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 11..12, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__named_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__named_expression.py.snap index c7af170528..e06f081716 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__named_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__named_expression.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/bool_op/named_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..24, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 0..7, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -27,6 +30,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("a"), ctx: Load, @@ -39,9 +43,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 11..12, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("b"), ctx: Load, @@ -51,14 +57,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..19, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 13..19, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("x"), ctx: Load, @@ -66,6 +75,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("a"), ctx: Load, @@ -78,9 +88,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..24, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("b"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__starred_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__starred_expression.py.snap index 76db7d093a..5369e4e69b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__starred_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__bool_op__starred_expression.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/bool_op/starred_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..16, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..8, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 0..8, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -27,9 +30,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 6..8, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("y"), ctx: Load, @@ -45,14 +50,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..16, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 9..16, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("x"), ctx: Load, @@ -60,9 +68,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 14..16, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..16, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__invalid_order.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__invalid_order.py.snap index efd6a63b4d..a64df1f7b3 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__invalid_order.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__invalid_order.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/inva ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..131, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 0..10, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -28,10 +32,12 @@ Module( comparators: [ UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 5..10, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("y"), ctx: Load, @@ -46,10 +52,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 35..41, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("x"), ctx: Store, @@ -58,9 +66,11 @@ Module( ], value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 38..41, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..38, id: Name(""), ctx: Invalid, @@ -72,6 +82,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("y"), ctx: Load, @@ -84,9 +95,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 120..121, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..121, id: Name("x"), ctx: Load, @@ -96,13 +109,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 122..128, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 122..128, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 126..128, id: Name("is"), ctx: Load, @@ -114,9 +130,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 129..130, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__invalid_rhs_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__invalid_rhs_expression.py.snap index 7fac7231c7..a118b221db 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__invalid_rhs_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__invalid_rhs_expression.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/inva ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..34, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..20, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 0..20, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -28,19 +32,26 @@ Module( comparators: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 9..20, parameters: Some( Parameters { range: 16..17, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 16..17, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 16..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 16..17, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -54,6 +65,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("y"), ctx: Load, @@ -68,12 +80,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..34, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 22..34, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -85,10 +100,12 @@ Module( comparators: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 27..34, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..34, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_lhs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_lhs.py.snap index 755eb042a5..a38a989312 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_lhs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_lhs.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/miss ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2..3, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..3, id: Name("y"), ctx: Load, @@ -23,12 +26,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..10, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -38,6 +44,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_0.py.snap index 135f76de35..b41171207c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_0.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/miss ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..3, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 0..3, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -28,6 +32,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..3, id: Name(""), ctx: Invalid, @@ -40,12 +45,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..10, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -55,6 +63,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_1.py.snap index f61bcb3b89..e58c0025af 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_1.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/miss ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..71, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 59..60, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("x"), ctx: Load, @@ -23,13 +26,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 61..64, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 61..64, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 64..64, id: Name(""), ctx: Invalid, @@ -41,12 +47,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 66..71, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 66..71, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 66..67, value: Int( 1, @@ -56,6 +65,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 70..71, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_2.py.snap index e530d30468..f02148c958 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__missing_rhs_2.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/miss ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..15, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..8, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 0..8, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -28,6 +32,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..8, id: Name(""), ctx: Invalid, @@ -40,12 +45,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..15, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 10..15, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..11, value: Int( 1, @@ -55,6 +63,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 14..15, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__multiple_equals.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__multiple_equals.py.snap index d3879e17a8..023e710c95 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__multiple_equals.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__multiple_equals.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/multiple_equals.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..41, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 25..32, targets: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 25..29, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("x"), ctx: Load, @@ -30,6 +33,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..29, id: Name(""), ctx: Invalid, @@ -41,6 +45,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 31..32, id: Name("y"), ctx: Load, @@ -50,13 +55,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 33..40, targets: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 33..37, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..34, id: Name("x"), ctx: Load, @@ -68,6 +76,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..37, id: Name(""), ctx: Invalid, @@ -79,6 +88,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__named_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__named_expression.py.snap index 27be524dd3..fdeafe1b4d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__named_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__named_expression.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/named_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..31, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 0..10, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -29,6 +32,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("y"), ctx: Load, @@ -41,13 +45,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 14..20, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 14..20, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 15..16, value: Int( 1, @@ -56,6 +63,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 2, @@ -71,12 +79,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..26, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 21..26, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("x"), ctx: Load, @@ -88,6 +99,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("y"), ctx: Load, @@ -100,9 +112,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..31, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 30..31, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__starred_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__starred_expression.py.snap index 61e69b69f9..90dd6b2056 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__starred_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__compare__starred_expression.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/compare/star ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..39, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 0..7, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -28,9 +32,11 @@ Module( comparators: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 5..7, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("y"), ctx: Load, @@ -46,12 +52,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..19, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 8..19, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("x"), ctx: Load, @@ -63,9 +72,11 @@ Module( comparators: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 17..19, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("y"), ctx: Load, @@ -81,15 +92,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..27, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 21..27, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 22..27, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -101,6 +116,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("y"), ctx: Load, @@ -116,15 +132,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..39, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 28..39, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 29..39, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Load, @@ -136,6 +156,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__comprehension.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__comprehension.py.snap index 6d06ef0c12..7a00017491 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__comprehension.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__comprehension.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/compreh ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..362, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..34, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 17..34, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("x"), ctx: Load, @@ -24,6 +28,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("y"), ctx: Load, @@ -32,8 +37,10 @@ Module( generators: [ Comprehension { range: 23..33, + node_index: AtomicNodeIndex(..), target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 27..28, value: Int( 1, @@ -42,6 +49,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("y"), ctx: Load, @@ -57,12 +65,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 35..54, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 35..54, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("x"), ctx: Load, @@ -70,6 +81,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("y"), ctx: Load, @@ -78,13 +90,16 @@ Module( generators: [ Comprehension { range: 41..53, + node_index: AtomicNodeIndex(..), target: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 45..48, value: StringLiteralValue { inner: Single( StringLiteral { range: 45..48, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Single, @@ -98,6 +113,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..53, id: Name("y"), ctx: Load, @@ -113,12 +129,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 55..77, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 55..77, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Load, @@ -126,6 +145,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("y"), ctx: Load, @@ -134,11 +154,14 @@ Module( generators: [ Comprehension { range: 61..76, + node_index: AtomicNodeIndex(..), target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 65..71, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..69, id: Name("call"), ctx: Load, @@ -146,6 +169,7 @@ Module( ), arguments: Arguments { range: 69..71, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -153,6 +177,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("y"), ctx: Load, @@ -168,12 +193,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 78..100, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 78..100, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 79..80, id: Name("x"), ctx: Load, @@ -181,6 +209,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("y"), ctx: Load, @@ -189,12 +218,15 @@ Module( generators: [ Comprehension { range: 84..99, + node_index: AtomicNodeIndex(..), target: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 88..94, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..90, id: Name("a"), ctx: Load, @@ -202,6 +234,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..93, id: Name("b"), ctx: Load, @@ -212,6 +245,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("y"), ctx: Load, @@ -227,12 +261,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 117..135, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 117..135, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 118..119, id: Name("x"), ctx: Load, @@ -240,6 +277,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 121..122, id: Name("y"), ctx: Load, @@ -248,8 +286,10 @@ Module( generators: [ Comprehension { range: 123..134, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("x"), ctx: Store, @@ -257,9 +297,11 @@ Module( ), iter: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 132..134, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 133..134, id: Name("y"), ctx: Load, @@ -278,12 +320,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 136..159, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 136..159, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 137..138, id: Name("x"), ctx: Load, @@ -291,6 +336,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 140..141, id: Name("y"), ctx: Load, @@ -299,8 +345,10 @@ Module( generators: [ Comprehension { range: 142..158, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("x"), ctx: Store, @@ -308,10 +356,12 @@ Module( ), iter: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 151..158, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 157..158, id: Name("y"), ctx: Load, @@ -330,12 +380,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 160..188, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 160..188, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 161..162, id: Name("x"), ctx: Load, @@ -343,6 +396,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 164..165, id: Name("y"), ctx: Load, @@ -351,8 +405,10 @@ Module( generators: [ Comprehension { range: 166..187, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..171, id: Name("x"), ctx: Store, @@ -360,9 +416,11 @@ Module( ), iter: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 175..187, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 186..187, id: Name("y"), ctx: Load, @@ -380,12 +438,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 189..216, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 189..216, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 190..191, id: Name("x"), ctx: Load, @@ -393,6 +454,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..194, id: Name("y"), ctx: Load, @@ -401,8 +463,10 @@ Module( generators: [ Comprehension { range: 195..215, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..200, id: Name("x"), ctx: Store, @@ -410,19 +474,26 @@ Module( ), iter: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 204..215, parameters: Some( Parameters { range: 211..212, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 211..212, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 211..212, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 211..212, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -436,6 +507,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 214..215, id: Name("y"), ctx: Load, @@ -453,12 +525,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 231..257, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 231..257, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 232..233, id: Name("x"), ctx: Load, @@ -466,6 +541,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 235..236, id: Name("y"), ctx: Load, @@ -474,8 +550,10 @@ Module( generators: [ Comprehension { range: 237..256, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 241..242, id: Name("x"), ctx: Store, @@ -483,6 +561,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 246..250, id: Name("data"), ctx: Load, @@ -491,9 +570,11 @@ Module( ifs: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 254..256, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 255..256, id: Name("y"), ctx: Load, @@ -512,12 +593,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 258..289, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 258..289, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 259..260, id: Name("x"), ctx: Load, @@ -525,6 +609,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 262..263, id: Name("y"), ctx: Load, @@ -533,8 +618,10 @@ Module( generators: [ Comprehension { range: 264..288, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 268..269, id: Name("x"), ctx: Store, @@ -542,6 +629,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 273..277, id: Name("data"), ctx: Load, @@ -550,10 +638,12 @@ Module( ifs: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 281..288, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 287..288, id: Name("y"), ctx: Load, @@ -572,12 +662,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 290..326, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 290..326, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 291..292, id: Name("x"), ctx: Load, @@ -585,6 +678,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 294..295, id: Name("y"), ctx: Load, @@ -593,8 +687,10 @@ Module( generators: [ Comprehension { range: 296..325, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 300..301, id: Name("x"), ctx: Store, @@ -602,6 +698,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 305..309, id: Name("data"), ctx: Load, @@ -610,9 +707,11 @@ Module( ifs: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 313..325, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 324..325, id: Name("y"), ctx: Load, @@ -630,12 +729,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 327..362, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 327..362, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 328..329, id: Name("x"), ctx: Load, @@ -643,6 +745,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 331..332, id: Name("y"), ctx: Load, @@ -651,8 +754,10 @@ Module( generators: [ Comprehension { range: 333..361, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 337..338, id: Name("x"), ctx: Store, @@ -660,6 +765,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 342..346, id: Name("data"), ctx: Load, @@ -668,19 +774,26 @@ Module( ifs: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 350..361, parameters: Some( Parameters { range: 357..358, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 357..358, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 357..358, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 357..358, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -694,6 +807,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 360..361, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__double_star.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__double_star.py.snap index 18f34772fa..2375e262a6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__double_star.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__double_star.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/double_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..278, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 125..135, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 125..135, items: [ DictItem { key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("x"), ctx: Load, @@ -30,6 +34,7 @@ Module( key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 133..134, value: Int( 1, @@ -39,6 +44,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 134..134, id: Name(""), ctx: Invalid, @@ -52,15 +58,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 136..162, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 136..162, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 137..138, id: Name("a"), ctx: Load, @@ -69,6 +78,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 140..141, value: Int( 1, @@ -80,15 +90,18 @@ Module( key: None, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 145..161, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 150..154, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 145..146, id: Name("x"), ctx: Load, @@ -96,6 +109,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..161, id: Name("y"), ctx: Load, @@ -111,28 +125,37 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 163..184, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 163..184, items: [ DictItem { key: None, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 166..177, parameters: Some( Parameters { range: 173..174, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 173..174, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 173..174, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 173..174, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -146,6 +169,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 176..177, id: Name("x"), ctx: Load, @@ -158,6 +182,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 179..180, id: Name("b"), ctx: Load, @@ -166,6 +191,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 182..183, value: Int( 2, @@ -180,15 +206,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 185..201, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 185..201, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 186..187, id: Name("a"), ctx: Load, @@ -197,6 +226,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 189..190, value: Int( 1, @@ -208,11 +238,13 @@ Module( key: None, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 194..200, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 194..195, id: Name("x"), ctx: Load, @@ -220,6 +252,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..200, id: Name("y"), ctx: Load, @@ -236,20 +269,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 202..219, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 202..219, items: [ DictItem { key: None, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 205..212, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 205..206, id: Name("x"), ctx: Load, @@ -257,6 +294,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 211..212, id: Name("y"), ctx: Load, @@ -270,6 +308,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 214..215, id: Name("b"), ctx: Load, @@ -278,6 +317,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 217..218, value: Int( 2, @@ -292,15 +332,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 220..241, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 220..241, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 221..222, id: Name("a"), ctx: Load, @@ -309,6 +352,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 224..225, value: Int( 1, @@ -320,10 +364,12 @@ Module( key: None, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 229..234, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 233..234, id: Name("x"), ctx: Load, @@ -336,6 +382,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..237, id: Name("b"), ctx: Load, @@ -344,6 +391,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 239..240, value: Int( 2, @@ -358,18 +406,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 242..252, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 242..252, items: [ DictItem { key: None, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 245..251, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..246, id: Name("x"), ctx: Load, @@ -381,6 +433,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 250..251, id: Name("y"), ctx: Load, @@ -397,18 +450,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 253..267, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 253..267, items: [ DictItem { key: None, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 256..266, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 256..257, id: Name("x"), ctx: Load, @@ -420,6 +477,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 265..266, id: Name("y"), ctx: Load, @@ -436,18 +494,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 268..277, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 268..277, items: [ DictItem { key: None, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 271..276, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 271..272, id: Name("x"), ctx: Load, @@ -459,6 +521,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 275..276, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__double_star_comprehension.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__double_star_comprehension.py.snap index 2cdfca3714..22ca3a3d36 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__double_star_comprehension.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__double_star_comprehension.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/double_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..358, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 122..147, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 122..147, items: [ DictItem { key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 125..126, id: Name("x"), ctx: Load, @@ -30,6 +34,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("y"), ctx: Load, @@ -38,6 +43,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 130..133, id: Name("for"), ctx: Load, @@ -48,6 +54,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 134..135, id: Name("x"), ctx: Load, @@ -56,6 +63,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 135..135, id: Name(""), ctx: Invalid, @@ -66,9 +74,11 @@ Module( key: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 137..146, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 137..138, id: Name("y"), ctx: Load, @@ -80,6 +90,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..146, id: Name("data"), ctx: Load, @@ -91,6 +102,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..146, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_0.py.snap index 45b456fe18..3b205a80f1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_0.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/missing ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..24, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..24, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 0..24, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("x"), ctx: Load, @@ -28,6 +32,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..8, id: Name("def"), ctx: Load, @@ -38,9 +43,11 @@ Module( key: Some( Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 9..14, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..12, id: Name("foo"), ctx: Load, @@ -48,6 +55,7 @@ Module( ), arguments: Arguments { range: 12..14, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -56,6 +64,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..24, id: Name("pass"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_1.py.snap index 67b4fca986..487654f51d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_1.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/missing ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 0..10, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("x"), ctx: Load, @@ -28,9 +32,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -40,6 +46,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_2.py.snap index 99ceea07ed..474f5b3038 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__missing_closing_brace_2.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/missing ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..27, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..6, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 0..6, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("x"), ctx: Load, @@ -28,6 +32,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..5, value: Int( 1, @@ -42,16 +47,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 8..27, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 12..15, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 15..17, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -62,6 +72,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 23..27, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__named_expression_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__named_expression_0.py.snap index b3123ce9b0..a6bcfaa621 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__named_expression_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__named_expression_0.py.snap @@ -7,22 +7,27 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/named_e ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..84, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 55..77, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 55..77, items: [ DictItem { key: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 56..62, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Store, @@ -30,6 +35,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 61..62, value: Int( 1, @@ -41,6 +47,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 64..65, id: Name("y"), ctx: Load, @@ -51,6 +58,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..68, id: Name("z"), ctx: Load, @@ -59,6 +67,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..68, id: Name(""), ctx: Invalid, @@ -69,6 +78,7 @@ Module( key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 72..73, value: Int( 2, @@ -78,6 +88,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("a"), ctx: Load, @@ -91,12 +102,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 79..84, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 79..84, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 79..80, id: Name("x"), ctx: Load, @@ -105,6 +119,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__named_expression_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__named_expression_1.py.snap index dd7855f8b4..47c76d0afc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__named_expression_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__named_expression_1.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/named_e ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..86, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..79, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 57..79, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..59, id: Name("x"), ctx: Load, @@ -28,6 +32,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 61..62, id: Name("y"), ctx: Load, @@ -38,6 +43,7 @@ Module( key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 66..67, value: Int( 1, @@ -47,6 +53,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..67, id: Name(""), ctx: Invalid, @@ -57,6 +64,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..70, id: Name("z"), ctx: Load, @@ -65,6 +73,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("a"), ctx: Load, @@ -75,6 +84,7 @@ Module( key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 77..78, value: Int( 2, @@ -84,6 +94,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..78, id: Name(""), ctx: Invalid, @@ -97,12 +108,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..86, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 81..86, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..82, id: Name("x"), ctx: Load, @@ -111,6 +125,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..86, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__recover.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__recover.py.snap index 71d0198372..ecfb8d7b9a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__recover.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__dict__recover.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/dict/recover ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..346, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 88..91, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 88..91, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..89, id: Name(""), ctx: Invalid, @@ -30,15 +34,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 93..105, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 93..105, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 94..95, value: Int( 1, @@ -48,6 +55,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 97..98, value: Int( 2, @@ -59,6 +67,7 @@ Module( key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 100..101, value: Int( 3, @@ -68,6 +77,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 103..104, value: Int( 4, @@ -82,15 +92,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 107..115, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 107..115, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 108..109, value: Int( 1, @@ -100,6 +113,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 111..112, value: Int( 2, @@ -114,15 +128,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..144, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 133..144, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 134..135, value: Int( 1, @@ -132,6 +149,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 137..138, value: Int( 2, @@ -143,6 +161,7 @@ Module( key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 139..140, value: Int( 3, @@ -152,6 +171,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 142..143, value: Int( 4, @@ -166,15 +186,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 157..162, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 157..162, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 158..159, value: Int( 1, @@ -184,6 +207,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..160, id: Name(""), ctx: Invalid, @@ -197,15 +221,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 201..205, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 201..205, items: [ DictItem { key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 204..204, id: Name(""), ctx: Invalid, @@ -219,15 +246,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 206..222, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 206..222, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 207..208, id: Name("x"), ctx: Load, @@ -236,6 +266,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 210..211, id: Name("y"), ctx: Load, @@ -246,6 +277,7 @@ Module( key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 215..215, id: Name(""), ctx: Invalid, @@ -256,6 +288,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 217..218, id: Name("a"), ctx: Load, @@ -264,6 +297,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 220..221, id: Name("b"), ctx: Load, @@ -277,18 +311,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 310..330, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 310..330, items: [ DictItem { key: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 311..313, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 312..313, id: Name("x"), ctx: Load, @@ -300,6 +338,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 315..316, id: Name("y"), ctx: Load, @@ -310,6 +349,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 318..319, id: Name("z"), ctx: Load, @@ -318,6 +358,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 321..322, id: Name("a"), ctx: Load, @@ -328,9 +369,11 @@ Module( key: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 324..326, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 325..326, id: Name("b"), ctx: Load, @@ -342,6 +385,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 328..329, id: Name("c"), ctx: Load, @@ -355,15 +399,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 331..345, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 331..345, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 332..333, id: Name("x"), ctx: Load, @@ -372,9 +419,11 @@ Module( ), value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 335..337, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 336..337, id: Name("y"), ctx: Load, @@ -388,6 +437,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 339..340, id: Name("z"), ctx: Load, @@ -396,9 +446,11 @@ Module( ), value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 342..344, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 343..344, id: Name("a"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__emoji_identifiers.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__emoji_identifiers.py.snap index 7a4f5b3f5d..bf215d18b6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__emoji_identifiers.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__emoji_identifiers.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/emoji_identi ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..64, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..5, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("a"), ctx: Store, @@ -23,6 +26,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..5, id: Name(""), ctx: Invalid, @@ -32,10 +36,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 32..37, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("a"), ctx: Store, @@ -44,6 +50,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..37, id: Name(""), ctx: Invalid, @@ -53,13 +60,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 42..43, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 42..43, op: UAdd, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..43, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__emoji_statement.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__emoji_statement.py.snap index 8738dedd6d..d4c139b3cc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__emoji_statement.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__emoji_statement.py.snap @@ -1,13 +1,13 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/emoji_statement.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..5, body: [], }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_orelse_expr_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_orelse_expr_0.py.snap index 3806947400..b480e99948 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_orelse_expr_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_orelse_expr_0.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/if/missing_o ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..88, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..67, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 53..67, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..62, id: Name("expr"), ctx: Load, @@ -24,6 +28,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("x"), ctx: Load, @@ -31,6 +36,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..67, id: Name(""), ctx: Invalid, @@ -42,16 +48,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 69..88, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 73..76, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 76..78, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -62,6 +73,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 84..88, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_orelse_expr_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_orelse_expr_1.py.snap index 21c4bce330..beec6bcb14 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_orelse_expr_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_orelse_expr_1.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/if/missing_o ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..76, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 55..69, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 55..69, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..64, id: Name("expr"), ctx: Load, @@ -24,6 +28,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..56, id: Name("x"), ctx: Load, @@ -31,6 +36,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..69, id: Name(""), ctx: Invalid, @@ -42,12 +48,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 71..76, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 71..76, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 71..72, value: Int( 1, @@ -57,6 +66,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 75..76, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_test_expr_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_test_expr_0.py.snap index e621d76610..d3c3293580 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_test_expr_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_test_expr_0.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/if/missing_t ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..76, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 51..55, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 51..55, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..55, id: Name(""), ctx: Invalid, @@ -24,6 +28,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("x"), ctx: Load, @@ -31,6 +36,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..55, id: Name(""), ctx: Invalid, @@ -42,16 +48,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 57..76, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 61..64, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 64..66, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -62,6 +73,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 72..76, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_test_expr_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_test_expr_1.py.snap index 1289e83843..39ddb5266a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_test_expr_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__missing_test_expr_1.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/if/missing_t ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..64, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..57, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 53..57, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..57, id: Name(""), ctx: Invalid, @@ -24,6 +28,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("x"), ctx: Load, @@ -31,6 +36,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..57, id: Name(""), ctx: Invalid, @@ -42,12 +48,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 59..64, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 59..64, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 59..60, value: Int( 1, @@ -57,6 +66,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 63..64, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__recover.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__recover.py.snap index dd35e9a27d..e62779397c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__recover.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__if__recover.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/if/recover.p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..215, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..43, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 26..43, test: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 31..36, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..36, id: Name("expr"), ctx: Load, @@ -30,6 +35,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("x"), ctx: Load, @@ -37,6 +43,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 42..43, id: Name("y"), ctx: Load, @@ -48,25 +55,34 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..67, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 44..67, test: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 49..60, parameters: Some( Parameters { range: 56..57, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 56..57, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 56..57, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 56..57, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -80,6 +96,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("x"), ctx: Load, @@ -89,6 +106,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("x"), ctx: Load, @@ -96,6 +114,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("y"), ctx: Load, @@ -107,16 +126,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..87, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 68..87, test: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 73..80, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 79..80, id: Name("x"), ctx: Load, @@ -127,6 +150,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -134,6 +158,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..87, id: Name("y"), ctx: Load, @@ -145,15 +170,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 88..112, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 88..112, test: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 93..105, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..105, id: Name("x"), ctx: Load, @@ -163,6 +192,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..89, id: Name("x"), ctx: Load, @@ -170,6 +200,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 111..112, id: Name("y"), ctx: Load, @@ -181,12 +212,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 142..164, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 142..164, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 147..151, id: Name("expr"), ctx: Load, @@ -194,6 +228,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..143, id: Name("x"), ctx: Load, @@ -201,9 +236,11 @@ Module( ), orelse: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 157..164, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 158..164, id: Name("orelse"), ctx: Load, @@ -218,12 +255,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 165..187, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 165..187, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..174, id: Name("expr"), ctx: Load, @@ -231,6 +271,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 165..166, id: Name("x"), ctx: Load, @@ -238,10 +279,12 @@ Module( ), orelse: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 180..187, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 186..187, id: Name("y"), ctx: Load, @@ -256,12 +299,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 188..215, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 188..215, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..197, id: Name("expr"), ctx: Load, @@ -269,6 +315,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 188..189, id: Name("x"), ctx: Load, @@ -276,9 +323,11 @@ Module( ), orelse: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 203..215, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 214..215, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__lambda_default_parameters.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__lambda_default_parameters.py.snap index 3d9df97c46..ac95e6aff7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__lambda_default_parameters.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__lambda_default_parameters.py.snap @@ -1,33 +1,41 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/lambda_default_parameters.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..20, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..20, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 0..20, parameters: Some( Parameters { range: 7..17, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 7..8, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 7..8, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 7..8, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -35,17 +43,21 @@ Module( }, ParameterWithDefault { range: 10..14, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 10..11, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 10..11, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 12..14, value: Int( 20, @@ -56,11 +68,14 @@ Module( }, ParameterWithDefault { range: 16..17, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 16..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 16..17, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -74,6 +89,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 19..20, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__lambda_duplicate_parameters.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__lambda_duplicate_parameters.py.snap index 6ea4a192ed..30e3bf68b1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__lambda_duplicate_parameters.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__lambda_duplicate_parameters.py.snap @@ -7,26 +7,35 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/lambda_dupli ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..91, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..14, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 0..14, parameters: Some( Parameters { range: 7..11, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 7..8, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 7..8, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 7..8, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -34,11 +43,14 @@ Module( }, ParameterWithDefault { range: 10..11, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 10..11, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 10..11, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -52,6 +64,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 1, @@ -64,22 +77,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..33, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 16..33, parameters: Some( Parameters { range: 23..30, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 23..24, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 23..24, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 23..24, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -90,11 +111,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 29..30, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 29..30, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 29..30, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -106,6 +130,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 1, @@ -118,22 +143,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 35..52, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 35..52, parameters: Some( Parameters { range: 42..49, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 42..43, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 42..43, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 42..43, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -141,17 +174,21 @@ Module( }, ParameterWithDefault { range: 45..49, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 45..46, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 45..46, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 47..49, value: Int( 20, @@ -168,6 +205,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 1, @@ -180,22 +218,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..69, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 54..69, parameters: Some( Parameters { range: 61..66, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 61..62, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 61..62, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 61..62, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -205,9 +251,11 @@ Module( vararg: Some( Parameter { range: 64..66, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 65..66, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -218,6 +266,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 68..69, value: Int( 1, @@ -230,22 +279,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 71..90, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 71..90, parameters: Some( Parameters { range: 78..87, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 78..79, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 78..79, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 78..79, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -257,9 +314,11 @@ Module( kwarg: Some( Parameter { range: 84..87, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 86..87, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -268,6 +327,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__comprehension.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__comprehension.py.snap index 124079789d..110db0cba9 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__comprehension.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__comprehension.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/list/compreh ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..376, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 33..48, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 33..48, elt: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 34..36, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("x"), ctx: Load, @@ -31,8 +36,10 @@ Module( generators: [ Comprehension { range: 37..47, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("x"), ctx: Store, @@ -40,6 +47,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("y"), ctx: Load, @@ -55,12 +63,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 67..81, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 67..81, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -69,8 +80,10 @@ Module( generators: [ Comprehension { range: 70..80, + node_index: AtomicNodeIndex(..), target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 74..75, value: Int( 1, @@ -79,6 +92,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 79..80, id: Name("y"), ctx: Load, @@ -94,12 +108,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 82..98, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 82..98, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("x"), ctx: Load, @@ -108,13 +125,16 @@ Module( generators: [ Comprehension { range: 85..97, + node_index: AtomicNodeIndex(..), target: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 89..92, value: StringLiteralValue { inner: Single( StringLiteral { range: 89..92, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Single, @@ -128,6 +148,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..97, id: Name("y"), ctx: Load, @@ -143,12 +164,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 99..118, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 99..118, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("x"), ctx: Load, @@ -157,11 +181,14 @@ Module( generators: [ Comprehension { range: 102..117, + node_index: AtomicNodeIndex(..), target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 106..112, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 106..110, id: Name("call"), ctx: Load, @@ -169,6 +196,7 @@ Module( ), arguments: Arguments { range: 110..112, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -176,6 +204,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..117, id: Name("y"), ctx: Load, @@ -191,12 +220,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 119..138, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 119..138, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..121, id: Name("x"), ctx: Load, @@ -205,12 +237,15 @@ Module( generators: [ Comprehension { range: 122..137, + node_index: AtomicNodeIndex(..), target: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 126..132, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("a"), ctx: Load, @@ -218,6 +253,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 130..131, id: Name("b"), ctx: Load, @@ -228,6 +264,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..137, id: Name("y"), ctx: Load, @@ -243,12 +280,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 155..170, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 155..170, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 156..157, id: Name("x"), ctx: Load, @@ -257,8 +297,10 @@ Module( generators: [ Comprehension { range: 158..169, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 162..163, id: Name("x"), ctx: Store, @@ -266,9 +308,11 @@ Module( ), iter: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 167..169, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 168..169, id: Name("y"), ctx: Load, @@ -287,12 +331,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 171..191, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 171..191, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 172..173, id: Name("x"), ctx: Load, @@ -301,8 +348,10 @@ Module( generators: [ Comprehension { range: 174..190, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 178..179, id: Name("x"), ctx: Store, @@ -310,10 +359,12 @@ Module( ), iter: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 183..190, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("y"), ctx: Load, @@ -332,12 +383,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 192..217, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 192..217, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..194, id: Name("x"), ctx: Load, @@ -346,8 +400,10 @@ Module( generators: [ Comprehension { range: 195..216, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..200, id: Name("x"), ctx: Store, @@ -355,9 +411,11 @@ Module( ), iter: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 204..216, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 215..216, id: Name("y"), ctx: Load, @@ -375,12 +433,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 218..242, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 218..242, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 219..220, id: Name("x"), ctx: Load, @@ -389,8 +450,10 @@ Module( generators: [ Comprehension { range: 221..241, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 225..226, id: Name("x"), ctx: Store, @@ -398,19 +461,26 @@ Module( ), iter: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 230..241, parameters: Some( Parameters { range: 237..238, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 237..238, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 237..238, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 237..238, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -424,6 +494,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 240..241, id: Name("y"), ctx: Load, @@ -441,12 +512,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 257..280, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 257..280, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 258..259, id: Name("x"), ctx: Load, @@ -455,8 +529,10 @@ Module( generators: [ Comprehension { range: 260..279, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 264..265, id: Name("x"), ctx: Store, @@ -464,6 +540,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 269..273, id: Name("data"), ctx: Load, @@ -472,9 +549,11 @@ Module( ifs: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 277..279, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 278..279, id: Name("y"), ctx: Load, @@ -493,12 +572,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 281..309, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 281..309, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 282..283, id: Name("x"), ctx: Load, @@ -507,8 +589,10 @@ Module( generators: [ Comprehension { range: 284..308, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 288..289, id: Name("x"), ctx: Store, @@ -516,6 +600,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 293..297, id: Name("data"), ctx: Load, @@ -524,10 +609,12 @@ Module( ifs: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 301..308, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 307..308, id: Name("y"), ctx: Load, @@ -546,12 +633,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 310..343, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 310..343, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 311..312, id: Name("x"), ctx: Load, @@ -560,8 +650,10 @@ Module( generators: [ Comprehension { range: 313..342, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 317..318, id: Name("x"), ctx: Store, @@ -569,6 +661,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 322..326, id: Name("data"), ctx: Load, @@ -577,9 +670,11 @@ Module( ifs: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 330..342, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 341..342, id: Name("y"), ctx: Load, @@ -597,12 +692,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 344..376, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 344..376, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 345..346, id: Name("x"), ctx: Load, @@ -611,8 +709,10 @@ Module( generators: [ Comprehension { range: 347..375, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 351..352, id: Name("x"), ctx: Store, @@ -620,6 +720,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 356..360, id: Name("data"), ctx: Load, @@ -628,19 +729,26 @@ Module( ifs: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 364..375, parameters: Some( Parameters { range: 371..372, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 371..372, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 371..372, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 371..372, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -654,6 +762,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 374..375, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_0.py.snap index efe0f9aaa3..04f72aae23 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_0.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/list/missing ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..43, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 42..43, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 42..43, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..43, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_1.py.snap index 20f04c756c..da496ea1cd 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_1.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/list/missing ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..133, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 125..133, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 125..133, elts: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 128..133, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("x"), ctx: Load, @@ -29,6 +34,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..133, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_2.py.snap index c253897cde..c65c7f3f8f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_2.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/list/missing ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..141, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 131..141, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 131..141, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 132..133, value: Int( 1, @@ -26,9 +30,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 136..141, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..137, id: Name("x"), ctx: Load, @@ -37,6 +43,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 140..141, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_3.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_3.py.snap index 9a64dd38fc..833765842b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_3.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__missing_closing_bracket_3.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/list/missing ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..140, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 114..119, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 114..119, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 115..116, value: Int( 1, @@ -26,6 +30,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 118..119, value: Int( 2, @@ -40,16 +45,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 121..140, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 125..128, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 128..130, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -60,6 +70,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 136..140, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__recover.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__recover.py.snap index a3979fcf8a..e3535344a6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__recover.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__recover.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/list/recover ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..208, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 82..85, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 82..85, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..83, id: Name(""), ctx: Invalid, @@ -31,13 +35,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 87..93, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 87..93, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 88..89, value: Int( 1, @@ -46,6 +53,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 91..92, value: Int( 2, @@ -60,13 +68,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 95..100, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 95..100, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 96..97, value: Int( 1, @@ -81,13 +92,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 118..123, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 118..123, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 119..120, value: Int( 1, @@ -96,6 +110,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 121..122, value: Int( 2, @@ -110,13 +125,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 156..162, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 156..162, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 157..158, value: Int( 1, @@ -125,6 +143,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 160..161, value: Int( 2, @@ -139,13 +158,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 185..194, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 185..194, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 186..187, value: Int( 1, @@ -154,9 +176,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 189..192, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("x"), ctx: Load, @@ -165,6 +189,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 192..192, id: Name(""), ctx: Invalid, @@ -180,13 +205,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 196..202, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 196..202, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 197..198, value: Int( 1, @@ -195,6 +223,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 200..201, value: Int( 2, @@ -209,16 +238,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 204..207, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 204..207, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 205..206, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 206..206, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__star_expression_precedence.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__star_expression_precedence.py.snap index 97dfb3722e..caa6a5a30d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__star_expression_precedence.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__list__star_expression_precedence.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/list/star_ex ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..200, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 84..93, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 84..93, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 86..88, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..88, id: Name("x"), ctx: Load, @@ -31,6 +36,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..92, id: Name("y"), ctx: Load, @@ -44,19 +50,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 94..106, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 94..106, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 95..102, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 96..102, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..97, id: Name("x"), ctx: Load, @@ -68,6 +79,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 101..102, id: Name("y"), ctx: Load, @@ -81,6 +93,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..105, id: Name("z"), ctx: Load, @@ -94,20 +107,25 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 107..118, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 107..118, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 108..114, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 109..114, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..114, id: Name("x"), ctx: Load, @@ -120,6 +138,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..117, id: Name("z"), ctx: Load, @@ -133,21 +152,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 119..132, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 119..132, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 120..128, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 121..128, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 121..122, id: Name("x"), ctx: Load, @@ -155,6 +179,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("y"), ctx: Load, @@ -168,6 +193,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 130..131, id: Name("z"), ctx: Load, @@ -181,21 +207,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..145, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 133..145, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 134..141, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 135..141, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 135..136, id: Name("x"), ctx: Load, @@ -203,6 +234,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 140..141, id: Name("y"), ctx: Load, @@ -216,6 +248,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 143..144, id: Name("z"), ctx: Load, @@ -229,25 +262,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 146..168, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 146..168, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 147..164, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 148..164, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 153..157, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 148..149, id: Name("x"), ctx: Load, @@ -255,6 +294,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 163..164, id: Name("y"), ctx: Load, @@ -267,6 +307,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..167, id: Name("z"), ctx: Load, @@ -280,29 +321,39 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 169..186, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 169..186, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 170..182, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 171..182, parameters: Some( Parameters { range: 178..179, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 178..179, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 178..179, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 178..179, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -316,6 +367,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 181..182, id: Name("x"), ctx: Load, @@ -328,6 +380,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 184..185, id: Name("z"), ctx: Load, @@ -341,19 +394,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 187..199, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 187..199, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 188..195, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 188..190, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("x"), ctx: Store, @@ -364,6 +422,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 194..195, value: Int( 2, @@ -374,6 +433,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 197..198, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__invalid_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__invalid_target.py.snap index c10ee4aac8..e19733fe68 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__invalid_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__invalid_target.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/named/invali ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..109, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..68, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 59..67, target: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 59..62, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("x"), ctx: Load, @@ -28,12 +33,14 @@ Module( attr: Identifier { id: Name("y"), range: 61..62, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 66..67, value: Int( 1, @@ -46,15 +53,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 69..80, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 70..79, target: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 70..74, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("x"), ctx: Load, @@ -62,6 +73,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("y"), ctx: Load, @@ -72,6 +84,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..79, value: Int( 1, @@ -84,15 +97,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..90, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 82..89, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 82..84, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("x"), ctx: Store, @@ -103,6 +120,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 88..89, value: Int( 1, @@ -115,16 +133,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 91..109, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 92..108, target: List( ExprList { + node_index: AtomicNodeIndex(..), range: 92..98, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("x"), ctx: Store, @@ -132,6 +154,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..97, id: Name("y"), ctx: Store, @@ -143,10 +166,12 @@ Module( ), value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 102..108, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 103..104, value: Int( 1, @@ -155,6 +180,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 106..107, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_0.py.snap index 33371ac311..8015e50f6a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_0.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/named/missin ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..75, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 71..72, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..72, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_1.py.snap index 7fbfdf4dc9..af8dfa5210 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_1.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/named/missin ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..33, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..33, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 29..33, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Store, @@ -24,6 +28,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..33, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_2.py.snap index 77c7726c69..aaa227cdfe 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_2.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/named/missin ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..87, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 61..71, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 62..71, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Store, @@ -24,6 +28,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..71, id: Name("def"), ctx: Load, @@ -35,12 +40,15 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 72..87, target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 72..77, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..75, id: Name("foo"), ctx: Load, @@ -48,6 +56,7 @@ Module( ), arguments: Arguments { range: 75..77, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -55,6 +64,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..87, id: Name("pass"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_3.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_3.py.snap index 1ec0d5d924..e7e25c0972 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_3.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_3.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/named/missin ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..112, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 100..112, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 101..112, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 101..102, id: Name("x"), ctx: Store, @@ -24,9 +28,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 107..112, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 107..108, id: Name("x"), ctx: Load, @@ -35,6 +41,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 111..112, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_4.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_4.py.snap index 8f056e9ec5..dc699731ce 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_4.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__named__missing_expression_4.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/named/missin ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..78, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 64..71, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 65..69, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("x"), ctx: Store, @@ -24,6 +28,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..69, id: Name(""), ctx: Invalid, @@ -35,12 +40,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 73..78, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 73..78, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..74, id: Name("x"), ctx: Load, @@ -49,6 +57,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__generator.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__generator.py.snap index f547981164..3ac0c1bdff 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__generator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__generator.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/parenthesize ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..36, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 0..15, elt: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 1..3, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..3, id: Name("x"), ctx: Load, @@ -31,8 +36,10 @@ Module( generators: [ Comprehension { range: 4..14, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("x"), ctx: Store, @@ -40,6 +47,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("y"), ctx: Load, @@ -56,16 +64,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..24, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 16..24, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 17..23, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("x"), ctx: Store, @@ -73,6 +85,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 22..23, value: Int( 1, @@ -90,10 +103,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 25..35, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Store, @@ -101,6 +116,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_0.py.snap index 7b610ed0d1..1b1d87fe6d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_0.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/parenthesize ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..47, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 46..47, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..47, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_1.py.snap index 02ff2cf395..5dee13a8a2 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_1.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/parenthesize ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..137, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 129..137, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 132..137, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..133, id: Name("x"), ctx: Load, @@ -25,6 +29,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..137, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_2.py.snap index b793308c04..b5721df967 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_2.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/parenthesize ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..146, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 136..146, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 136..146, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 137..138, value: Int( 1, @@ -26,9 +30,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 141..146, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 141..142, id: Name("x"), ctx: Load, @@ -37,6 +43,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 145..146, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_3.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_3.py.snap index 9afe7ee6e7..bbf1fb9749 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_3.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__missing_closing_paren_3.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/parenthesize ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..144, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 118..123, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 118..123, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 119..120, value: Int( 1, @@ -26,6 +30,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..123, value: Int( 2, @@ -41,16 +46,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 125..144, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 129..132, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 132..134, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -61,6 +71,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 140..144, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__parenthesized.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__parenthesized.py.snap index c61c600e25..9012f3e1be 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__parenthesized.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__parenthesized.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/parenthesize ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..125, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 66..70, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 67..69, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -29,9 +33,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 119..120, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 119..120, id: Name("x"), ctx: Load, @@ -41,9 +47,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 124..125, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 124..125, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__tuple.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__tuple.py.snap index e621345669..a44a6fc066 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__tuple.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__tuple.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/parenthesize ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..267, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..86, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 83..86, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..84, id: Name(""), ctx: Invalid, @@ -32,13 +36,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 88..94, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 88..94, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 1, @@ -47,6 +54,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 92..93, value: Int( 2, @@ -62,13 +70,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 96..101, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 96..101, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 97..98, value: Int( 1, @@ -84,9 +95,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 119..121, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 120..121, value: Int( 1, @@ -97,9 +110,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 122..123, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..123, value: Int( 2, @@ -110,9 +125,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 157..162, target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 158..159, value: Int( 1, @@ -121,6 +138,7 @@ Module( ), annotation: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 161..162, value: Int( 2, @@ -133,13 +151,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 186..195, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 186..195, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 187..188, value: Int( 1, @@ -148,9 +169,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 190..193, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 190..191, id: Name("x"), ctx: Load, @@ -159,6 +182,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..193, id: Name(""), ctx: Invalid, @@ -175,9 +199,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 197..199, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 198..199, value: Int( 1, @@ -188,9 +214,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 201..202, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 201..202, value: Int( 2, @@ -201,13 +229,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 255..267, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 255..267, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 255..256, id: Name("x"), ctx: Load, @@ -215,6 +246,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 258..259, id: Name("y"), ctx: Load, @@ -222,6 +254,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 263..264, value: Int( 2, @@ -230,6 +263,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 266..267, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__tuple_starred_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__tuple_starred_expr.py.snap index a81a6db84b..b566c6a594 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__tuple_starred_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__parenthesized__tuple_starred_expr.py.snap @@ -7,23 +7,29 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/parenthesize ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..532, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 157..178, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 157..178, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 158..165, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 159..165, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 159..160, id: Name("x"), ctx: Load, @@ -35,6 +41,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 164..165, id: Name("y"), ctx: Load, @@ -48,6 +55,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 167..168, id: Name("z"), ctx: Load, @@ -55,12 +63,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 170..177, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 171..177, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..172, id: Name("x"), ctx: Load, @@ -72,6 +83,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 176..177, id: Name("y"), ctx: Load, @@ -92,20 +104,25 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 179..198, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 179..198, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 180..186, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 181..186, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 185..186, id: Name("x"), ctx: Load, @@ -118,6 +135,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 188..189, id: Name("z"), ctx: Load, @@ -125,13 +143,16 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 191..197, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 192..197, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 196..197, id: Name("x"), ctx: Load, @@ -151,21 +172,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 199..222, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 199..222, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 200..208, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 201..208, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 201..202, id: Name("x"), ctx: Load, @@ -173,6 +199,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 207..208, id: Name("y"), ctx: Load, @@ -186,6 +213,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 210..211, id: Name("z"), ctx: Load, @@ -193,14 +221,17 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 213..221, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 214..221, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 214..215, id: Name("x"), ctx: Load, @@ -208,6 +239,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 220..221, id: Name("y"), ctx: Load, @@ -228,21 +260,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 223..244, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 223..244, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 224..231, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 225..231, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 225..226, id: Name("x"), ctx: Load, @@ -250,6 +287,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 230..231, id: Name("y"), ctx: Load, @@ -263,6 +301,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 233..234, id: Name("z"), ctx: Load, @@ -270,14 +309,17 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 236..243, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 237..243, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 237..238, id: Name("x"), ctx: Load, @@ -285,6 +327,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 242..243, id: Name("y"), ctx: Load, @@ -305,25 +348,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 245..286, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 245..286, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 246..263, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 247..263, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 252..256, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 247..248, id: Name("x"), ctx: Load, @@ -331,6 +380,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 262..263, id: Name("y"), ctx: Load, @@ -343,6 +393,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 265..266, id: Name("z"), ctx: Load, @@ -350,18 +401,22 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 268..285, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 269..285, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 274..278, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 269..270, id: Name("x"), ctx: Load, @@ -369,6 +424,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 284..285, id: Name("y"), ctx: Load, @@ -388,29 +444,39 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 287..318, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 287..318, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 288..300, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 289..300, parameters: Some( Parameters { range: 296..297, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 296..297, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 296..297, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 296..297, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -424,6 +490,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 299..300, id: Name("x"), ctx: Load, @@ -436,6 +503,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 302..303, id: Name("z"), ctx: Load, @@ -443,22 +511,30 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 305..317, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 306..317, parameters: Some( Parameters { range: 313..314, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 313..314, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 313..314, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 313..314, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -472,6 +548,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 316..317, id: Name("x"), ctx: Load, @@ -491,19 +568,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 319..340, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 319..340, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 320..327, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 320..322, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 321..322, id: Name("x"), ctx: Store, @@ -514,6 +596,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 326..327, value: Int( 2, @@ -524,6 +607,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 329..330, id: Name("z"), ctx: Load, @@ -531,12 +615,15 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 332..339, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 332..334, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 333..334, id: Name("x"), ctx: Store, @@ -547,6 +634,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 338..339, value: Int( 2, @@ -564,19 +652,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 363..382, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 363..382, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 363..370, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 364..370, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 364..365, id: Name("x"), ctx: Load, @@ -588,6 +681,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 369..370, id: Name("y"), ctx: Load, @@ -601,6 +695,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 372..373, id: Name("z"), ctx: Load, @@ -608,12 +703,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 375..382, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 376..382, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 376..377, id: Name("x"), ctx: Load, @@ -625,6 +723,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 381..382, id: Name("y"), ctx: Load, @@ -645,20 +744,25 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 383..400, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 383..400, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 383..389, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 384..389, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 388..389, id: Name("x"), ctx: Load, @@ -671,6 +775,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 391..392, id: Name("z"), ctx: Load, @@ -678,13 +783,16 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 394..400, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 395..400, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 399..400, id: Name("x"), ctx: Load, @@ -704,21 +812,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 401..422, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 401..422, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 401..409, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 402..409, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 402..403, id: Name("x"), ctx: Load, @@ -726,6 +839,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 408..409, id: Name("y"), ctx: Load, @@ -739,6 +853,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 411..412, id: Name("z"), ctx: Load, @@ -746,14 +861,17 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 414..422, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 415..422, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 415..416, id: Name("x"), ctx: Load, @@ -761,6 +879,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 421..422, id: Name("y"), ctx: Load, @@ -781,21 +900,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 423..442, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 423..442, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 423..430, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 424..430, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 424..425, id: Name("x"), ctx: Load, @@ -803,6 +927,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 429..430, id: Name("y"), ctx: Load, @@ -816,6 +941,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 432..433, id: Name("z"), ctx: Load, @@ -823,14 +949,17 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 435..442, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 436..442, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 436..437, id: Name("x"), ctx: Load, @@ -838,6 +967,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 441..442, id: Name("y"), ctx: Load, @@ -858,25 +988,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 443..482, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 443..482, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 443..460, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 444..460, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 449..453, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 444..445, id: Name("x"), ctx: Load, @@ -884,6 +1020,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 459..460, id: Name("y"), ctx: Load, @@ -896,6 +1033,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 462..463, id: Name("z"), ctx: Load, @@ -903,18 +1041,22 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 465..482, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 466..482, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 471..475, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 466..467, id: Name("x"), ctx: Load, @@ -922,6 +1064,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 481..482, id: Name("y"), ctx: Load, @@ -941,29 +1084,39 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 483..512, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 483..512, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 483..495, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 484..495, parameters: Some( Parameters { range: 491..492, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 491..492, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 491..492, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 491..492, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -977,6 +1130,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 494..495, id: Name("x"), ctx: Load, @@ -989,6 +1143,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 497..498, id: Name("z"), ctx: Load, @@ -996,22 +1151,30 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 500..512, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 501..512, parameters: Some( Parameters { range: 508..509, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 508..509, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 508..509, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 508..509, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1025,6 +1188,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 511..512, id: Name("x"), ctx: Load, @@ -1044,12 +1208,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 513..515, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 513..515, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 514..515, id: Name("x"), ctx: Load, @@ -1062,13 +1229,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 519..532, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 519..532, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 519..520, value: Int( 2, @@ -1077,6 +1247,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 522..523, id: Name("z"), ctx: Load, @@ -1084,9 +1255,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 525..527, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 526..527, id: Name("x"), ctx: Load, @@ -1097,6 +1270,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 531..532, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__comprehension.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__comprehension.py.snap index b692643db9..abf42e4b03 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__comprehension.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__comprehension.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/set/comprehe ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..377, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 33..48, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 33..48, elt: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 34..36, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("x"), ctx: Load, @@ -31,8 +36,10 @@ Module( generators: [ Comprehension { range: 37..47, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("x"), ctx: Store, @@ -40,6 +47,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("y"), ctx: Load, @@ -55,12 +63,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 67..81, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 67..81, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -69,8 +80,10 @@ Module( generators: [ Comprehension { range: 70..80, + node_index: AtomicNodeIndex(..), target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 74..75, value: Int( 1, @@ -79,6 +92,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 79..80, id: Name("y"), ctx: Load, @@ -94,12 +108,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 82..98, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 82..98, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("x"), ctx: Load, @@ -108,13 +125,16 @@ Module( generators: [ Comprehension { range: 85..97, + node_index: AtomicNodeIndex(..), target: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 89..92, value: StringLiteralValue { inner: Single( StringLiteral { range: 89..92, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Single, @@ -128,6 +148,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..97, id: Name("y"), ctx: Load, @@ -143,12 +164,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 99..118, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 99..118, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("x"), ctx: Load, @@ -157,11 +181,14 @@ Module( generators: [ Comprehension { range: 102..117, + node_index: AtomicNodeIndex(..), target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 106..112, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 106..110, id: Name("call"), ctx: Load, @@ -169,6 +196,7 @@ Module( ), arguments: Arguments { range: 110..112, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -176,6 +204,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..117, id: Name("y"), ctx: Load, @@ -191,12 +220,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 119..138, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 119..138, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..121, id: Name("x"), ctx: Load, @@ -205,12 +237,15 @@ Module( generators: [ Comprehension { range: 122..137, + node_index: AtomicNodeIndex(..), target: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 126..132, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("a"), ctx: Load, @@ -218,6 +253,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 130..131, id: Name("b"), ctx: Load, @@ -228,6 +264,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..137, id: Name("y"), ctx: Load, @@ -243,12 +280,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 155..170, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 155..170, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 156..157, id: Name("x"), ctx: Load, @@ -257,8 +297,10 @@ Module( generators: [ Comprehension { range: 158..169, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 162..163, id: Name("x"), ctx: Store, @@ -266,9 +308,11 @@ Module( ), iter: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 167..169, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 168..169, id: Name("y"), ctx: Load, @@ -287,12 +331,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 171..191, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 171..191, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 172..173, id: Name("x"), ctx: Load, @@ -301,8 +348,10 @@ Module( generators: [ Comprehension { range: 174..190, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 178..179, id: Name("x"), ctx: Store, @@ -310,10 +359,12 @@ Module( ), iter: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 183..190, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("y"), ctx: Load, @@ -332,12 +383,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 192..217, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 192..217, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..194, id: Name("x"), ctx: Load, @@ -346,8 +400,10 @@ Module( generators: [ Comprehension { range: 195..216, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..200, id: Name("x"), ctx: Store, @@ -355,9 +411,11 @@ Module( ), iter: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 204..216, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 215..216, id: Name("y"), ctx: Load, @@ -375,12 +433,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 218..242, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 218..242, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 219..220, id: Name("x"), ctx: Load, @@ -389,8 +450,10 @@ Module( generators: [ Comprehension { range: 221..241, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 225..226, id: Name("x"), ctx: Store, @@ -398,19 +461,26 @@ Module( ), iter: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 230..241, parameters: Some( Parameters { range: 237..238, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 237..238, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 237..238, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 237..238, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -424,6 +494,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 240..241, id: Name("y"), ctx: Load, @@ -441,12 +512,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 257..280, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 257..280, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 258..259, id: Name("x"), ctx: Load, @@ -455,8 +529,10 @@ Module( generators: [ Comprehension { range: 260..279, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 264..265, id: Name("x"), ctx: Store, @@ -464,6 +540,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 269..273, id: Name("data"), ctx: Load, @@ -472,9 +549,11 @@ Module( ifs: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 277..279, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 278..279, id: Name("y"), ctx: Load, @@ -493,12 +572,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 281..309, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 281..309, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 282..283, id: Name("x"), ctx: Load, @@ -507,8 +589,10 @@ Module( generators: [ Comprehension { range: 284..308, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 288..289, id: Name("x"), ctx: Store, @@ -516,6 +600,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 293..297, id: Name("data"), ctx: Load, @@ -524,10 +609,12 @@ Module( ifs: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 301..308, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 307..308, id: Name("y"), ctx: Load, @@ -546,12 +633,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 310..343, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 310..343, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 311..312, id: Name("x"), ctx: Load, @@ -560,8 +650,10 @@ Module( generators: [ Comprehension { range: 313..342, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 317..318, id: Name("x"), ctx: Store, @@ -569,6 +661,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 322..326, id: Name("data"), ctx: Load, @@ -577,9 +670,11 @@ Module( ifs: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 330..342, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 341..342, id: Name("y"), ctx: Load, @@ -597,12 +692,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 344..376, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 344..376, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 345..346, id: Name("x"), ctx: Load, @@ -611,8 +709,10 @@ Module( generators: [ Comprehension { range: 347..375, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 351..352, id: Name("x"), ctx: Store, @@ -620,6 +720,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 356..360, id: Name("data"), ctx: Load, @@ -628,19 +729,26 @@ Module( ifs: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 364..375, parameters: Some( Parameters { range: 371..372, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 371..372, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 371..372, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 371..372, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -654,6 +762,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 374..375, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_0.py.snap index 6b082389ba..43438af0b7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_0.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/set/missing_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..47, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 46..47, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 46..47, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..47, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_1.py.snap index 3df9492f91..b1a51ec0e1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_1.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/set/missing_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..136, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 128..136, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 128..136, elts: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 131..136, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..132, id: Name("x"), ctx: Load, @@ -29,6 +34,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 135..136, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_2.py.snap index 101fbf0b1a..ee7e0553f3 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_2.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/set/missing_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..144, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 134..144, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 134..144, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 135..136, value: Int( 1, @@ -26,9 +30,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 139..144, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..140, id: Name("x"), ctx: Load, @@ -37,6 +43,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 143..144, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_3.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_3.py.snap index f0ac8ba0d9..dd12017d4f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_3.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__missing_closing_curly_brace_3.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/set/missing_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..144, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 118..123, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 118..123, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 119..120, value: Int( 1, @@ -26,6 +30,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..123, value: Int( 2, @@ -39,16 +44,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 125..144, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 129..132, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 132..134, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -59,6 +69,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 140..144, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__recover.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__recover.py.snap index 6df00c1bc5..fd02629ffd 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__recover.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__recover.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/set/recover. ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..323, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 197..200, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 197..200, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 198..198, id: Name(""), ctx: Invalid, @@ -30,13 +34,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 202..208, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 202..208, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 203..204, value: Int( 1, @@ -45,6 +52,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 206..207, value: Int( 2, @@ -58,13 +66,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 210..215, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 210..215, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 211..212, value: Int( 1, @@ -78,13 +89,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 233..238, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 233..238, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 234..235, value: Int( 1, @@ -93,6 +107,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 236..237, value: Int( 2, @@ -106,15 +121,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 271..277, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 271..277, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 272..273, value: Int( 1, @@ -124,6 +142,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 275..276, value: Int( 2, @@ -138,13 +157,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 300..309, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 300..309, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 301..302, value: Int( 1, @@ -153,9 +175,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 304..307, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 304..305, id: Name("x"), ctx: Load, @@ -164,6 +188,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 307..307, id: Name(""), ctx: Invalid, @@ -178,13 +203,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 311..317, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 311..317, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 312..313, value: Int( 1, @@ -193,6 +221,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 315..316, value: Int( 2, @@ -206,16 +235,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 319..322, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 319..322, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 320..321, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 321..321, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__star_expression_precedence.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__star_expression_precedence.py.snap index 5fd3b81e29..18fb551839 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__star_expression_precedence.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__set__star_expression_precedence.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/set/star_exp ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..198, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..92, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 83..92, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 85..87, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..87, id: Name("x"), ctx: Load, @@ -31,6 +36,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("y"), ctx: Load, @@ -43,19 +49,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 93..105, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 93..105, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 94..101, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 95..101, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..96, id: Name("x"), ctx: Load, @@ -67,6 +78,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("y"), ctx: Load, @@ -80,6 +92,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 103..104, id: Name("z"), ctx: Load, @@ -92,20 +105,25 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 106..117, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 106..117, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 107..113, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 108..113, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 112..113, id: Name("x"), ctx: Load, @@ -118,6 +136,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 115..116, id: Name("z"), ctx: Load, @@ -130,21 +149,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 118..131, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 118..131, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 119..127, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 120..127, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..121, id: Name("x"), ctx: Load, @@ -152,6 +176,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 126..127, id: Name("y"), ctx: Load, @@ -165,6 +190,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("z"), ctx: Load, @@ -177,21 +203,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 132..144, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 132..144, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 133..140, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 134..140, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 134..135, id: Name("x"), ctx: Load, @@ -199,6 +230,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..140, id: Name("y"), ctx: Load, @@ -212,6 +244,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..143, id: Name("z"), ctx: Load, @@ -224,25 +257,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 145..167, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 145..167, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 146..163, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 147..163, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 152..156, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 147..148, id: Name("x"), ctx: Load, @@ -250,6 +289,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 162..163, id: Name("y"), ctx: Load, @@ -262,6 +302,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 165..166, id: Name("z"), ctx: Load, @@ -274,29 +315,39 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 168..185, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 168..185, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 169..181, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 170..181, parameters: Some( Parameters { range: 177..178, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 177..178, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 177..178, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 177..178, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -310,6 +361,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 180..181, id: Name("x"), ctx: Load, @@ -322,6 +374,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 183..184, id: Name("z"), ctx: Load, @@ -334,19 +387,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 186..198, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 186..198, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 187..194, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 187..189, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 188..189, id: Name("x"), ctx: Store, @@ -357,6 +415,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 193..194, value: Int( 2, @@ -367,6 +426,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 196..197, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__invalid_slice_element.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__invalid_slice_element.py.snap index 598a1ba08e..133fc59208 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__invalid_slice_element.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__invalid_slice_element.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/subscript/in ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..133, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 0..10, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -24,13 +28,16 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 2..9, lower: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 2..8, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..3, id: Name("x"), ctx: Store, @@ -38,6 +45,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 7..8, value: Int( 1, @@ -58,12 +66,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 33..39, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 33..39, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..34, id: Name("x"), ctx: Load, @@ -71,13 +82,16 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 35..38, lower: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 35..37, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("x"), ctx: Load, @@ -98,12 +112,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 40..46, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 40..46, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("x"), ctx: Load, @@ -111,14 +128,17 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 42..45, lower: None, upper: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 43..45, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("x"), ctx: Load, @@ -138,12 +158,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 47..54, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 47..54, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Load, @@ -151,15 +174,18 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 49..53, lower: None, upper: None, step: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 51..53, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..53, id: Name("x"), ctx: Load, @@ -178,12 +204,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 70..73, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 70..73, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("x"), ctx: Load, @@ -191,6 +220,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name(""), ctx: Invalid, @@ -203,12 +233,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 123..133, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 123..133, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 123..124, id: Name("x"), ctx: Load, @@ -216,12 +249,15 @@ Module( ), slice: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 125..132, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 125..127, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 126..127, id: Name("x"), ctx: Store, @@ -232,6 +268,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 131..132, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__unclosed_slice_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__unclosed_slice_0.py.snap index 6491277ca7..734e357a4a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__unclosed_slice_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__unclosed_slice_0.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/subscript/un ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 0..10, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -24,14 +28,17 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 2..10, lower: None, upper: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, @@ -40,6 +47,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__unclosed_slice_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__unclosed_slice_1.py.snap index 10505cb6cb..0d95577060 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__unclosed_slice_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__subscript__unclosed_slice_1.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/subscript/un ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..25, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 0..9, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Load, @@ -24,12 +28,14 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 2..9, lower: None, upper: None, step: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("def"), ctx: Load, @@ -45,12 +51,15 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 10..25, target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 10..15, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..13, id: Name("foo"), ctx: Load, @@ -58,6 +67,7 @@ Module( ), arguments: Arguments { range: 13..15, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -65,6 +75,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..25, id: Name("pass"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary.py.snap index 379c262e15..f024ef0b37 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/unary.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..5, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 0..5, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Load, @@ -30,9 +33,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..10, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__named_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__named_expression.py.snap index feeb3a56e8..952700a605 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__named_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__named_expression.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/expressions/unary/named_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..18, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..2, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 0..2, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("x"), ctx: Load, @@ -30,9 +33,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 6..7, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..7, value: Int( 1, @@ -43,13 +48,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..13, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 8..13, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..13, id: Name("x"), ctx: Load, @@ -61,9 +69,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..18, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 17..18, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__no_expression_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__no_expression_0.py.snap index 3ea59b57e8..90fbf1bd9f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__no_expression_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__no_expression_0.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/unary/no_exp ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..3, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 0..3, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..3, id: Name(""), ctx: Invalid, @@ -29,12 +33,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..10, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, @@ -43,6 +50,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__no_expression_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__no_expression_1.py.snap index 62d13301c9..2b9353fc3b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__no_expression_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__unary__no_expression_1.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/unary/no_exp ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..8, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..1, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 0..1, op: UAdd, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..1, id: Name(""), ctx: Invalid, @@ -29,12 +33,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3..8, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 3..8, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, @@ -43,6 +50,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield__named_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield__named_expression.py.snap index 84e07f14e9..73536890ec 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield__named_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield__named_expression.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/yield/named_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..85, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 52..59, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 52..59, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..59, id: Name("x"), ctx: Load, @@ -30,9 +34,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 63..64, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 63..64, value: Int( 1, @@ -43,17 +49,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 66..84, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 66..84, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 72..84, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 72..73, value: Int( 1, @@ -62,6 +72,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("x"), ctx: Load, @@ -69,6 +80,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 80..81, value: Int( 2, @@ -77,6 +89,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield__star_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield__star_expression.py.snap index 0045d8615f..6bd430e889 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield__star_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield__star_expression.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/yield/star_e ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..67, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 37..47, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 37..47, value: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 44..46, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..46, id: Name("x"), ctx: Load, @@ -36,25 +41,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..66, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 49..66, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 55..66, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 55..63, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 56..63, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Load, @@ -62,6 +73,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("y"), ctx: Load, @@ -75,6 +87,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield_from__starred_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield_from__starred_expression.py.snap index 4adf70d811..72433f9e77 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield_from__starred_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield_from__starred_expression.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/yield_from/s ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..100, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 70..83, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 70..83, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 81..83, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("x"), ctx: Load, @@ -34,19 +39,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 84..100, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 84..100, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 95..100, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 95..97, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..97, id: Name("x"), ctx: Load, @@ -57,6 +67,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield_from__unparenthesized.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield_from__unparenthesized.py.snap index 40ffb45e66..a14264ccfb 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield_from__unparenthesized.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@expressions__yield_from__unparenthesized.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/expressions/yield_from/u ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..192, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 35..47, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 35..47, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("x"), ctx: Load, @@ -28,9 +32,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 51..52, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 1, @@ -41,16 +47,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 89..104, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 89..104, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 100..104, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("x"), ctx: Load, @@ -58,6 +68,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 103..104, id: Name("y"), ctx: Load, @@ -74,16 +85,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 168..192, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 168..192, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 179..192, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 180..181, id: Name("x"), ctx: Load, @@ -91,14 +106,17 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 183..191, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 184..191, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 184..185, id: Name("x"), ctx: Load, @@ -106,6 +124,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 190..191, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_empty_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_empty_expression.py.snap index c8b4ec3c12..42acb3033d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_empty_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_empty_expression.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/inline/err/f_string_empty_expres ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..14, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..5, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..5, value: FStringValue { inner: Single( FString( FString { range: 0..5, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..4, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..3, id: Name(""), ctx: Invalid, @@ -52,21 +58,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 6..13, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 6..13, value: FStringValue { inner: Single( FString( FString { range: 6..13, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 8..12, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..9, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_conversion_flag_name_tok.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_conversion_flag_name_tok.py.snap index 36b66627ad..0858ce958d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_conversion_flag_name_tok.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_conversion_flag_name_tok.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/inline/err/f_string_invalid_conv ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..9, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..8, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..8, value: FStringValue { inner: Single( FString( FString { range: 0..8, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..7, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_conversion_flag_other_tok.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_conversion_flag_other_tok.py.snap index 0ee7e5fe73..165a659e99 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_conversion_flag_other_tok.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_conversion_flag_other_tok.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/inline/err/f_string_invalid_conv ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..22, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..10, value: FStringValue { inner: Single( FString( FString { range: 0..10, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..9, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, @@ -52,21 +58,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 11..21, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 11..21, value: FStringValue { inner: Single( FString( FString { range: 11..21, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 13..20, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_starred_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_starred_expr.py.snap index f47c692d58..acdb317e91 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_starred_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_invalid_starred_expr.py.snap @@ -7,28 +7,35 @@ input_file: crates/ruff_python_parser/resources/inline/err/f_string_invalid_star ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..112, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 77..83, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 77..83, value: FStringValue { inner: Single( FString( FString { range: 77..83, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 79..82, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 80..81, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..81, id: Name(""), ctx: Invalid, @@ -58,29 +65,36 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 84..97, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 84..97, value: FStringValue { inner: Single( FString( FString { range: 84..97, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 86..96, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 87..95, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 88..95, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..89, id: Name("x"), ctx: Load, @@ -88,6 +102,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 94..95, id: Name("y"), ctx: Load, @@ -120,28 +135,35 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 98..111, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 98..111, value: FStringValue { inner: Single( FString( FString { range: 98..111, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 100..110, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 101..109, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 102..109, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..109, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_lambda_without_parentheses.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_lambda_without_parentheses.py.snap index 121ca20d3c..6f98814ce9 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_lambda_without_parentheses.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_lambda_without_parentheses.py.snap @@ -7,38 +7,50 @@ input_file: crates/ruff_python_parser/resources/inline/err/f_string_lambda_witho ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..17, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..16, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..16, value: FStringValue { inner: Single( FString( FString { range: 0..16, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..12, + node_index: AtomicNodeIndex(..), expression: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 3..12, parameters: Some( Parameters { range: 10..11, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 10..11, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 10..11, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 10..11, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -52,6 +64,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..12, id: Name(""), ctx: Invalid, @@ -67,6 +80,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 12..14, + node_index: AtomicNodeIndex(..), value: " x", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_unclosed_lbrace.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_unclosed_lbrace.py.snap index 9fd2f1b9b2..62c1efddfb 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_unclosed_lbrace.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_unclosed_lbrace.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/inline/err/f_string_unclosed_lbr ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..38, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..4, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..4, value: FStringValue { inner: Single( FString( FString { range: 0..4, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2..3, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..3, id: Name(""), ctx: Invalid, @@ -52,21 +58,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..14, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 5..14, value: FStringValue { inner: Single( FString( FString { range: 5..14, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 7..14, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..11, id: Name("foo"), ctx: Load, @@ -93,21 +104,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..23, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 15..23, value: FStringValue { inner: Single( FString( FString { range: 15..23, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 17..22, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..21, id: Name("foo"), ctx: Load, @@ -139,9 +155,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..37, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 24..37, value: FStringValue { inner: Concatenated( @@ -149,12 +167,15 @@ Module( FString( FString { range: 24..28, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 26..27, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..27, id: Name(""), ctx: Invalid, @@ -176,12 +197,15 @@ Module( FString( FString { range: 29..37, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 33..34, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..34, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_unclosed_lbrace_in_format_spec.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_unclosed_lbrace_in_format_spec.py.snap index 81f2c236a9..9d97896c80 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_unclosed_lbrace_in_format_spec.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@f_string_unclosed_lbrace_in_format_spec.py.snap @@ -7,31 +7,38 @@ input_file: crates/ruff_python_parser/resources/inline/err/f_string_unclosed_lbr ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..29, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..12, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..12, value: FStringValue { inner: Single( FString( FString { range: 0..12, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..8, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 8..11, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("x"), ctx: Load, @@ -42,6 +49,7 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 11..11, + node_index: AtomicNodeIndex(..), elements: [], }, ), @@ -63,27 +71,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..28, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 13..28, value: FStringValue { inner: Single( FString( FString { range: 13..28, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 15..21, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 21..27, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -94,10 +108,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 24..27, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 24..27, + node_index: AtomicNodeIndex(..), value: ".3f", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_iter_unpack_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_iter_unpack_py38.py.snap index f4a68c5000..cf2cb1c90b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_iter_unpack_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_iter_unpack_py38.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/for_iter_unpack_py38. ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..106, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 43..63, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -22,13 +25,16 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 52..58, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 52..54, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("a"), ctx: Load, @@ -39,6 +45,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..58, id: Name("b"), ctx: Load, @@ -52,9 +59,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 60..63, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 60..63, }, ), @@ -66,10 +75,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 64..84, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Store, @@ -77,10 +88,12 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 74..79, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..75, id: Name("a"), ctx: Load, @@ -88,9 +101,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 77..79, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..79, id: Name("b"), ctx: Load, @@ -107,9 +122,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..84, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 81..84, }, ), @@ -121,10 +138,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 85..105, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..90, id: Name("x"), ctx: Store, @@ -132,13 +151,16 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 94..100, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 94..96, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..96, id: Name("a"), ctx: Load, @@ -149,9 +171,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 98..100, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("b"), ctx: Load, @@ -168,9 +192,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 102..105, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 102..105, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_iter_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_iter_expr.py.snap index f83966eb92..2520538fcc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_iter_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_iter_expr.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/for_stmt_invalid_iter ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..71, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..22, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Store, @@ -22,14 +25,17 @@ Module( ), iter: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 9..17, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 10..17, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("a"), ctx: Load, @@ -37,6 +43,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("b"), ctx: Load, @@ -51,9 +58,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), @@ -65,10 +74,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 23..44, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("x"), ctx: Store, @@ -76,10 +87,12 @@ Module( ), iter: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 32..39, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("a"), ctx: Load, @@ -91,9 +104,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 41..44, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 41..44, }, ), @@ -105,10 +120,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 45..60, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..55, id: Name("target"), ctx: Store, @@ -116,6 +133,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("x"), ctx: Load, @@ -127,9 +145,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 64..70, target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 64..65, value: Int( 1, @@ -138,6 +158,7 @@ Module( ), annotation: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 67..70, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target.py.snap index b34450098f..491fd41a42 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/for_stmt_invalid_targ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..154, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..15, is_async: false, target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..5, value: Int( 1, @@ -23,6 +26,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("x"), ctx: Load, @@ -31,9 +35,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..15, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 12..15, }, ), @@ -45,15 +51,18 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 16..33, is_async: false, target: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 20..23, value: StringLiteralValue { inner: Single( StringLiteral { range: 20..23, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Double, @@ -67,6 +76,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("x"), ctx: Load, @@ -75,9 +85,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..33, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 30..33, }, ), @@ -89,18 +101,22 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 34..56, is_async: false, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 38..46, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 39..46, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("x"), ctx: Load, @@ -108,6 +124,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..46, id: Name("y"), ctx: Load, @@ -121,6 +138,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 50..51, id: Name("z"), ctx: Load, @@ -129,9 +147,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..56, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 53..56, }, ), @@ -143,16 +163,20 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 57..77, is_async: false, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 61..67, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 62..67, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Load, @@ -161,6 +185,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("y"), ctx: Load, @@ -173,6 +198,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..72, id: Name("z"), ctx: Load, @@ -181,9 +207,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 74..77, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 74..77, }, ), @@ -195,13 +223,16 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 78..99, is_async: false, target: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 82..89, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..89, id: Name("x"), ctx: Load, @@ -211,6 +242,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("z"), ctx: Load, @@ -219,9 +251,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 96..99, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 96..99, }, ), @@ -233,17 +267,21 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 100..121, is_async: false, target: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 104..116, value: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 110..116, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 110..111, id: Name("x"), ctx: Load, @@ -255,6 +293,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 115..116, id: Name("y"), ctx: Load, @@ -268,6 +307,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..116, id: Name(""), ctx: Invalid, @@ -276,9 +316,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 118..121, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 118..121, }, ), @@ -290,14 +332,17 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 122..153, is_async: false, target: List( ExprList { + node_index: AtomicNodeIndex(..), range: 126..143, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("x"), ctx: Store, @@ -305,6 +350,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 130..131, value: Int( 1, @@ -313,6 +359,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 133..134, id: Name("y"), ctx: Store, @@ -320,18 +367,22 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 136..142, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 137..142, elts: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 138..141, value: StringLiteralValue { inner: Single( StringLiteral { range: 138..141, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Double, @@ -356,6 +407,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 147..148, id: Name("z"), ctx: Load, @@ -364,9 +416,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 150..153, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 150..153, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target_binary_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target_binary_expr.py.snap index 0a6052ee9d..cb545e9b38 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target_binary_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target_binary_expr.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/for_stmt_invalid_target_binary_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..124, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..24, is_async: false, target: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 4..14, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Load, @@ -30,6 +33,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("y"), ctx: Load, @@ -40,6 +44,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("z"), ctx: Load, @@ -48,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..24, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 21..24, }, ), @@ -62,13 +69,16 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 25..45, is_async: false, target: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 29..35, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Load, @@ -80,6 +90,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("y"), ctx: Load, @@ -90,6 +101,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("z"), ctx: Load, @@ -98,9 +110,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 42..45, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 42..45, }, ), @@ -112,15 +126,18 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 46..66, is_async: false, target: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 50..56, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 50..51, id: Name("x"), ctx: Load, @@ -128,6 +145,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..56, id: Name("y"), ctx: Load, @@ -138,6 +156,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("z"), ctx: Load, @@ -146,9 +165,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 63..66, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 63..66, }, ), @@ -160,14 +181,17 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 67..83, is_async: false, target: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 71..73, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("x"), ctx: Store, @@ -177,6 +201,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("y"), ctx: Load, @@ -185,9 +210,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 80..83, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 80..83, }, ), @@ -199,14 +226,17 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 84..103, is_async: false, target: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 88..93, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..93, id: Name("x"), ctx: Store, @@ -216,6 +246,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 97..98, id: Name("y"), ctx: Load, @@ -224,9 +255,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 100..103, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 100..103, }, ), @@ -238,13 +271,16 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 104..123, is_async: false, target: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 108..113, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..109, id: Name("x"), ctx: Load, @@ -253,6 +289,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 112..113, id: Name("y"), ctx: Load, @@ -262,6 +299,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 117..118, id: Name("z"), ctx: Load, @@ -270,9 +308,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 120..123, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 120..123, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target_in_keyword.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target_in_keyword.py.snap index 6e47652cc1..185ab4b7a7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target_in_keyword.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_invalid_target_in_keyword.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/for_stmt_invalid_target_in_keyword.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..170, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..28, is_async: false, target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 4..13, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("d"), ctx: Load, @@ -26,12 +29,15 @@ Module( ), arguments: Arguments { range: 5..13, + node_index: AtomicNodeIndex(..), args: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 6..12, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -43,6 +49,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("y"), ctx: Load, @@ -58,6 +65,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..23, id: Name("target"), ctx: Load, @@ -66,9 +74,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -80,16 +90,20 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 29..56, is_async: false, target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 33..43, func: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 34..40, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("x"), ctx: Load, @@ -101,6 +115,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("y"), ctx: Load, @@ -111,6 +126,7 @@ Module( ), arguments: Arguments { range: 41..43, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -118,6 +134,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..51, id: Name("iter"), ctx: Load, @@ -126,9 +143,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..56, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 53..56, }, ), @@ -140,13 +159,16 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 57..82, is_async: false, target: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 62..68, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Load, @@ -158,6 +180,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..68, id: Name("y"), ctx: Load, @@ -168,6 +191,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..77, id: Name("iter"), ctx: Load, @@ -176,9 +200,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 79..82, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 79..82, }, ), @@ -190,17 +216,21 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 83..111, is_async: false, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 87..98, elts: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 88..94, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..89, id: Name("x"), ctx: Load, @@ -212,6 +242,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("y"), ctx: Load, @@ -222,6 +253,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..97, id: Name("z"), ctx: Store, @@ -234,6 +266,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..106, id: Name("iter"), ctx: Load, @@ -242,9 +275,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 108..111, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 108..111, }, ), @@ -256,17 +291,21 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 112..140, is_async: false, target: List( ExprList { + node_index: AtomicNodeIndex(..), range: 116..127, elts: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 117..123, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 117..118, id: Name("x"), ctx: Load, @@ -278,6 +317,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 122..123, id: Name("y"), ctx: Load, @@ -288,6 +328,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 125..126, id: Name("z"), ctx: Store, @@ -299,6 +340,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..135, id: Name("iter"), ctx: Load, @@ -307,9 +349,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 137..140, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 137..140, }, ), @@ -321,17 +365,21 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 141..169, is_async: false, target: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 145..156, elts: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 146..152, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("x"), ctx: Load, @@ -343,6 +391,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 151..152, id: Name("y"), ctx: Load, @@ -353,6 +402,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 154..155, id: Name("z"), ctx: Load, @@ -363,6 +413,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..164, id: Name("iter"), ctx: Load, @@ -371,9 +422,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 166..169, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 166..169, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_in_keyword.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_in_keyword.py.snap index 3390046c35..d16e1ec4bc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_in_keyword.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_in_keyword.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/for_stmt_missing_in_keyword.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..24, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..12, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("a"), ctx: Store, @@ -23,6 +25,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("b"), ctx: Load, @@ -31,9 +34,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..12, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 9..12, }, ), @@ -45,10 +50,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 13..23, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("a"), ctx: Store, @@ -56,6 +63,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..18, id: Name(""), ctx: Invalid, @@ -64,9 +72,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..23, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 20..23, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_iter.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_iter.py.snap index 240f900f06..d258342309 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_iter.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_iter.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/for_stmt_missing_iter.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..20, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..19, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Store, @@ -23,6 +25,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..8, id: Name(""), ctx: Invalid, @@ -31,10 +34,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 14..19, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("a"), ctx: Store, @@ -43,6 +48,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_target.py.snap index 3c819fc472..42ea10ed9f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@for_stmt_missing_target.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/for_stmt_missing_target.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..14, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..13, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..6, id: Name("in"), ctx: Store, @@ -23,6 +25,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Load, @@ -31,9 +34,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..13, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 10..13, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_dotted_names.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_dotted_names.py.snap index 36a0203b9b..2c98db482e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_dotted_names.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_dotted_names.py.snap @@ -1,30 +1,34 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/from_import_dotted_names.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..67, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..16, module: Some( Identifier { id: Name("x"), range: 5..6, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 14..15, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 14..15, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -34,27 +38,33 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 17..34, module: Some( Identifier { id: Name("x"), range: 22..23, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 31..32, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 31..32, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 33..34, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 33..34, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -64,67 +74,83 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 35..66, module: Some( Identifier { id: Name("x"), range: 40..41, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 49..50, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 49..50, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 52..53, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 52..53, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 54..55, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 54..55, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 57..58, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 57..58, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 60..61, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 60..61, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 62..63, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 62..63, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 65..66, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("g"), range: 65..66, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_empty_names.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_empty_names.py.snap index fcc56371ed..b84eb9a41a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_empty_names.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_empty_names.py.snap @@ -1,22 +1,24 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/from_import_empty_names.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..48, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..13, module: Some( Identifier { id: Name("x"), range: 5..6, + node_index: AtomicNodeIndex(..), }, ), names: [], @@ -25,11 +27,13 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 14..30, module: Some( Identifier { id: Name("x"), range: 19..20, + node_index: AtomicNodeIndex(..), }, ), names: [], @@ -38,11 +42,13 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 31..47, module: Some( Identifier { id: Name("x"), range: 36..37, + node_index: AtomicNodeIndex(..), }, ), names: [], diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_missing_module.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_missing_module.py.snap index fcf455d6ba..9e3cbe4994 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_missing_module.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_missing_module.py.snap @@ -1,17 +1,18 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/from_import_missing_module.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..19, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..4, module: None, names: [], @@ -20,14 +21,17 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 5..18, module: None, names: [ Alias { range: 17..18, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 17..18, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_missing_rpar.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_missing_rpar.py.snap index 582bd2f14e..761cbc2a7e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_missing_rpar.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_missing_rpar.py.snap @@ -1,38 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/from_import_missing_rpar.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..53, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..19, module: Some( Identifier { id: Name("x"), range: 5..6, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 15..16, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 15..16, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 18..19, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 18..19, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -42,12 +48,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..25, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 20..25, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 20..21, value: Int( 1, @@ -57,6 +66,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 24..25, value: Int( 1, @@ -69,27 +79,33 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 26..46, module: Some( Identifier { id: Name("x"), range: 31..32, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 41..42, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 41..42, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 44..45, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 44..45, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -99,12 +115,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 47..52, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 47..52, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 47..48, value: Int( 2, @@ -114,6 +133,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_star_with_other_names.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_star_with_other_names.py.snap index 93824bef84..0c0d1ff705 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_star_with_other_names.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_star_with_other_names.py.snap @@ -1,38 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/from_import_star_with_other_names.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..87, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..18, module: Some( Identifier { id: Name("x"), range: 5..6, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 14..15, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("*"), range: 14..15, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 17..18, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 17..18, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -42,35 +48,43 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 19..40, module: Some( Identifier { id: Name("x"), range: 24..25, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 33..34, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 33..34, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 36..37, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("*"), range: 36..37, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 39..40, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 39..40, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -80,32 +94,39 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 41..64, module: Some( Identifier { id: Name("x"), range: 46..47, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 55..56, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("*"), range: 55..56, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 58..64, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 58..59, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("b"), range: 63..64, + node_index: AtomicNodeIndex(..), }, ), }, @@ -115,35 +136,43 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 65..86, module: Some( Identifier { id: Name("x"), range: 70..71, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 79..80, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("*"), range: 79..80, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 82..83, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("*"), range: 82..83, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 85..86, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 85..86, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_unparenthesized_trailing_comma.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_unparenthesized_trailing_comma.py.snap index 6dbfd32f09..4708a3d670 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_unparenthesized_trailing_comma.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@from_import_unparenthesized_trailing_comma.py.snap @@ -1,30 +1,34 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/from_import_unparenthesized_trailing_comma.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..59, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..16, module: Some( Identifier { id: Name("a"), range: 5..6, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 14..15, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 14..15, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -34,24 +38,29 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 17..38, module: Some( Identifier { id: Name("a"), range: 22..23, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 31..37, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 31..32, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("c"), range: 36..37, + node_index: AtomicNodeIndex(..), }, ), }, @@ -61,27 +70,33 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 39..58, module: Some( Identifier { id: Name("a"), range: 44..45, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 53..54, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 53..54, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 56..57, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 56..57, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_empty_body.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_empty_body.py.snap index 1fa49e573c..2b793eb3a0 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_empty_body.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_empty_body.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/function_def_empty_body.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..36, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..10, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..9, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -34,16 +39,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 11..28, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 15..18, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 18..20, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -53,6 +63,7 @@ Module( returns: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..27, id: Name("int"), ctx: Load, @@ -64,10 +75,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 29..35, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Store, @@ -76,6 +89,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 33..35, value: Int( 42, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_invalid_return_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_invalid_return_expr.py.snap index f1968dedf9..630b9274b7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_invalid_return_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_invalid_return_expr.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/function_def_invalid_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..74, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..22, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..9, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -30,9 +36,11 @@ Module( returns: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 13..17, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -45,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), @@ -58,16 +68,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 23..47, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 27..30, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 30..32, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -77,9 +92,11 @@ Module( returns: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 37..41, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..41, id: Name("int"), ctx: Load, @@ -92,9 +109,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..47, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 44..47, }, ), @@ -105,16 +124,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 48..73, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 52..55, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 55..57, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -124,10 +148,12 @@ Module( returns: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 61..68, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..68, id: Name("x"), ctx: Load, @@ -140,9 +166,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 70..73, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 70..73, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_missing_identifier.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_missing_identifier.py.snap index 12a4a4625a..6b3b63253f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_missing_identifier.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_missing_identifier.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/function_def_missing_identifier.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..31, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..11, is_async: false, decorator_list: [], name: Identifier { id: Name(""), range: 3..3, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 4..6, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -32,9 +37,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..11, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 8..11, }, ), @@ -45,16 +52,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 12..30, is_async: false, decorator_list: [], name: Identifier { id: Name(""), range: 15..15, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 16..18, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -64,6 +76,7 @@ Module( returns: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..25, id: Name("int"), ctx: Load, @@ -73,9 +86,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 27..30, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 27..30, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_missing_return_type.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_missing_return_type.py.snap index 3552186e7a..e8b2fbeeac 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_missing_return_type.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_missing_return_type.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/function_def_missing_return_type.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..19, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..18, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..9, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -32,9 +37,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..18, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 15..18, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unclosed_parameter_list.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unclosed_parameter_list.py.snap index bc3b151c5e..f3b024f7e5 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unclosed_parameter_list.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unclosed_parameter_list.py.snap @@ -7,33 +7,43 @@ input_file: crates/ruff_python_parser/resources/inline/err/function_def_unclosed ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..74, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..18, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..18, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..14, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..14, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..14, id: Name("int"), ctx: Load, @@ -45,11 +55,14 @@ Module( }, ParameterWithDefault { range: 16..18, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 16..18, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 16..17, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -66,16 +79,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 19..43, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 23..26, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 26..28, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -86,10 +104,12 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 34..43, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 41..43, value: Int( 42, @@ -104,29 +124,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..74, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 48..51, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 51..74, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 52..58, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 52..58, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 52..53, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..58, id: Name("int"), ctx: Load, @@ -138,15 +167,19 @@ Module( }, ParameterWithDefault { range: 60..66, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 60..66, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 60..61, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..66, id: Name("str"), ctx: Load, @@ -158,17 +191,21 @@ Module( }, ParameterWithDefault { range: 67..73, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 67..68, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 67..68, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 71..73, value: Int( 10, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unclosed_type_param_list.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unclosed_type_param_list.py.snap index 8cc11d43fc..f8ef4f8169 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unclosed_type_param_list.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unclosed_type_param_list.py.snap @@ -1,34 +1,39 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/function_def_unclosed_type_param_list.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..47, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..39, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 7..15, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 8..10, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T1"), range: 8..10, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -37,9 +42,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 12..15, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T2"), range: 13..15, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -49,15 +56,21 @@ Module( ), parameters: Parameters { range: 15..21, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 16..17, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 16..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 16..17, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -65,11 +78,14 @@ Module( }, ParameterWithDefault { range: 19..20, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 19..20, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 19..20, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -84,13 +100,16 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 27..39, value: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 34..39, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("a"), ctx: Load, @@ -99,6 +118,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("b"), ctx: Load, @@ -114,10 +134,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 40..46, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("x"), ctx: Store, @@ -126,6 +148,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 44..46, value: Int( 10, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unparenthesized_return_types.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unparenthesized_return_types.py.snap index ef7baf9f91..a2e19de94c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unparenthesized_return_types.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_def_unparenthesized_return_types.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/function_def_unparenthesized_return_types.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..50, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..22, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..9, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,10 +36,12 @@ Module( returns: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 13..17, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..16, id: Name("int"), ctx: Load, @@ -49,9 +56,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), @@ -62,16 +71,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 23..49, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 27..30, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 30..32, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -81,10 +95,12 @@ Module( returns: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 36..44, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..39, id: Name("int"), ctx: Load, @@ -92,6 +108,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..44, id: Name("str"), ctx: Load, @@ -106,9 +123,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 46..49, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 46..49, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_type_params_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_type_params_py311.py.snap index 80edd73d05..18039d0ce0 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_type_params_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@function_type_params_py311.py.snap @@ -7,27 +7,33 @@ input_file: crates/ruff_python_parser/resources/inline/err/function_type_params_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..79, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..61, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 48..51, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 51..54, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 52..53, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 52..53, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -38,6 +44,9 @@ Module( ), parameters: Parameters { range: 54..56, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -48,9 +57,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..61, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, }, ), @@ -61,21 +72,27 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 62..78, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 66..69, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 69..71, + node_index: AtomicNodeIndex(..), type_params: [], }, ), parameters: Parameters { range: 71..73, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -86,9 +103,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 75..78, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 75..78, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_empty.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_empty.py.snap index 6a89da1d79..6255c8fe59 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_empty.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_empty.py.snap @@ -1,17 +1,18 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/global_stmt_empty.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..7, body: [ Global( StmtGlobal { + node_index: AtomicNodeIndex(..), range: 0..6, names: [], }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_expression.py.snap index b2305e0df7..d179c96eef 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_expression.py.snap @@ -1,35 +1,40 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/global_stmt_expression.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..13, body: [ Global( StmtGlobal { + node_index: AtomicNodeIndex(..), range: 0..8, names: [ Identifier { id: Name("x"), range: 7..8, + node_index: AtomicNodeIndex(..), }, ], }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..12, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 9..12, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 11..12, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_trailing_comma.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_trailing_comma.py.snap index b6c872e399..232acca04d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_trailing_comma.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@global_stmt_trailing_comma.py.snap @@ -1,43 +1,49 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/global_stmt_trailing_comma.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..32, body: [ Global( StmtGlobal { + node_index: AtomicNodeIndex(..), range: 0..8, names: [], }, ), Global( StmtGlobal { + node_index: AtomicNodeIndex(..), range: 9..18, names: [ Identifier { id: Name("x"), range: 16..17, + node_index: AtomicNodeIndex(..), }, ], }, ), Global( StmtGlobal { + node_index: AtomicNodeIndex(..), range: 19..31, names: [ Identifier { id: Name("x"), range: 26..27, + node_index: AtomicNodeIndex(..), }, Identifier { id: Name("y"), range: 29..30, + node_index: AtomicNodeIndex(..), }, ], }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_elif_missing_colon.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_elif_missing_colon.py.snap index d891db30ae..888e539c24 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_elif_missing_colon.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_elif_missing_colon.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/if_stmt_elif_missing_colon.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..46, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..45, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, @@ -23,6 +25,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 10..14, }, ), @@ -30,9 +33,11 @@ Module( elif_else_clauses: [ ElifElseClause { range: 15..30, + node_index: AtomicNodeIndex(..), test: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("y"), ctx: Load, @@ -42,6 +47,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 26..30, }, ), @@ -49,10 +55,12 @@ Module( }, ElifElseClause { range: 31..45, + node_index: AtomicNodeIndex(..), test: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 41..45, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_empty_body.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_empty_body.py.snap index 9b30c83a9f..0b8fecc048 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_empty_body.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_empty_body.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/if_stmt_empty_body.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..15, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..8, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 3..7, value: true, }, @@ -25,12 +27,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..14, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 9..14, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 1, @@ -40,6 +45,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_invalid_elif_test_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_invalid_elif_test_expr.py.snap index dbc135744a..ee46056de5 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_invalid_elif_test_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_invalid_elif_test_expr.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/if_stmt_invalid_elif_test_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..56, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..55, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, @@ -23,6 +25,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 10..14, }, ), @@ -30,12 +33,15 @@ Module( elif_else_clauses: [ ElifElseClause { range: 15..32, + node_index: AtomicNodeIndex(..), test: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 20..22, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("x"), ctx: Load, @@ -48,6 +54,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 28..32, }, ), @@ -55,13 +62,16 @@ Module( }, ElifElseClause { range: 33..55, + node_index: AtomicNodeIndex(..), test: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 38..45, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("x"), ctx: Load, @@ -74,6 +84,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 51..55, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_invalid_test_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_invalid_test_expr.py.snap index 558aa9bdbc..0562b031f9 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_invalid_test_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_invalid_test_expr.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/if_stmt_invalid_test_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..48, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..10, test: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 3..5, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Load, @@ -29,9 +32,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 7..10, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 7..10, }, ), @@ -43,13 +48,16 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 11..26, test: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 14..21, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("x"), ctx: Load, @@ -61,9 +69,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..26, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 23..26, }, ), @@ -75,12 +85,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 27..47, test: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 30..42, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("x"), ctx: Load, @@ -91,9 +104,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..47, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 44..47, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_missing_colon.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_missing_colon.py.snap index b97e20e9bc..091fe218f5 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_missing_colon.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_missing_colon.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/if_stmt_missing_colon.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..25, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..4, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("x"), ctx: Load, @@ -26,9 +28,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 5..18, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("x"), ctx: Load, @@ -37,6 +41,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 14..18, }, ), @@ -46,10 +51,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 19..24, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("a"), ctx: Store, @@ -58,6 +65,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 23..24, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_missing_test.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_missing_test.py.snap index bc2a35ae1d..13cacd4b10 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_missing_test.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_missing_test.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/if_stmt_missing_test.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..9, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..8, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..2, id: Name(""), ctx: Invalid, @@ -23,9 +25,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..8, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 5..8, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_misspelled_elif.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_misspelled_elif.py.snap index b8d421961c..bef4a1b852 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_misspelled_elif.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@if_stmt_misspelled_elif.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/if_stmt_misspelled_el ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..47, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..17, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 3..7, value: true, }, @@ -21,6 +24,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 13..17, }, ), @@ -30,9 +34,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 18..22, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..21, id: Name("elf"), ctx: Store, @@ -40,6 +46,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..22, id: Name(""), ctx: Invalid, @@ -51,11 +58,13 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 27..31, }, ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 42..46, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@implicitly_concatenated_unterminated_string.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@implicitly_concatenated_unterminated_string.py.snap index 5488502486..887ae67220 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@implicitly_concatenated_unterminated_string.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@implicitly_concatenated_unterminated_string.py.snap @@ -7,18 +7,22 @@ input_file: crates/ruff_python_parser/resources/inline/err/implicitly_concatenat ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..47, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..7, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..7, + node_index: AtomicNodeIndex(..), value: "hello", flags: StringLiteralFlags { quote_style: Single, @@ -34,12 +38,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..20, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 15..20, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 15..16, value: Int( 1, @@ -49,6 +56,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 19..20, value: Int( 1, @@ -61,9 +69,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..40, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 21..40, value: FStringValue { inner: Concatenated( @@ -71,6 +81,7 @@ Module( Literal( StringLiteral { range: 21..28, + node_index: AtomicNodeIndex(..), value: "hello", flags: StringLiteralFlags { quote_style: Single, @@ -82,18 +93,22 @@ Module( FString( FString { range: 29..40, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 31..37, + node_index: AtomicNodeIndex(..), value: "world ", }, ), Interpolation( InterpolatedElement { range: 37..40, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("x"), ctx: Load, @@ -121,12 +136,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 41..46, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 41..46, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 41..42, value: Int( 2, @@ -136,6 +154,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 45..46, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@implicitly_concatenated_unterminated_string_multiline.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@implicitly_concatenated_unterminated_string_multiline.py.snap index 672216d159..da094ee09c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@implicitly_concatenated_unterminated_string_multiline.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@implicitly_concatenated_unterminated_string_multiline.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/implicitly_concatenat ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..85, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..31, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 6..31, value: FStringValue { inner: Concatenated( @@ -21,6 +24,7 @@ Module( Literal( StringLiteral { range: 6..13, + node_index: AtomicNodeIndex(..), value: "hello", flags: StringLiteralFlags { quote_style: Single, @@ -32,18 +36,22 @@ Module( FString( FString { range: 18..31, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 20..26, + node_index: AtomicNodeIndex(..), value: "world ", }, ), Interpolation( InterpolatedElement { range: 26..29, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("x"), ctx: Load, @@ -71,12 +79,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 32..37, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 32..37, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 1, @@ -86,6 +97,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 36..37, value: Int( 1, @@ -98,14 +110,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 38..51, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 44..51, value: StringLiteralValue { inner: Single( StringLiteral { range: 44..51, + node_index: AtomicNodeIndex(..), value: "first", flags: StringLiteralFlags { quote_style: Single, @@ -121,19 +136,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..76, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 68..76, value: FStringValue { inner: Single( FString( FString { range: 68..76, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 70..75, + node_index: AtomicNodeIndex(..), value: "third", }, ), @@ -153,12 +172,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 79..84, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 79..84, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 2, @@ -168,6 +190,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_alias_missing_asname.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_alias_missing_asname.py.snap index 230ad97b22..23ff8ca3c4 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_alias_missing_asname.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_alias_missing_asname.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/import_alias_missing_asname.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..12, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..11, names: [ Alias { range: 7..11, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 7..8, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_empty.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_empty.py.snap index ad8888e518..b198a71477 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_empty.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_empty.py.snap @@ -1,17 +1,18 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/import_stmt_empty.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..7, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..6, names: [], }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_parenthesized_names.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_parenthesized_names.py.snap index a9509f3d16..dedb2fd84b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_parenthesized_names.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_parenthesized_names.py.snap @@ -1,26 +1,29 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/import_stmt_parenthesized_names.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..25, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..6, names: [], }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 7..10, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("a"), ctx: Load, @@ -30,19 +33,23 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 11..17, names: [], }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..24, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 18..24, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("a"), ctx: Load, @@ -50,6 +57,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("b"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_star_import.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_star_import.py.snap index 70f4c3c140..81439cdee2 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_star_import.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_star_import.py.snap @@ -1,29 +1,33 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/import_stmt_star_import.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..24, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..6, names: [], }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 7..8, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 7..8, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..8, id: Name(""), ctx: Invalid, @@ -36,13 +40,16 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 9..18, names: [ Alias { range: 16..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 16..17, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -51,16 +58,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..23, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 19..23, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 19..20, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..20, id: Name(""), ctx: Invalid, @@ -71,6 +82,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_trailing_comma.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_trailing_comma.py.snap index f5ab95692d..d9ea1890a5 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_trailing_comma.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@import_stmt_trailing_comma.py.snap @@ -1,38 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/import_stmt_trailing_comma.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..22, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..8, names: [], }, ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 9..21, names: [ Alias { range: 16..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 16..17, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 19..20, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 19..20, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_class.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_class.py.snap index a53ebf2fd2..815e902255 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_class.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_class.py.snap @@ -7,26 +7,32 @@ input_file: crates/ruff_python_parser/resources/inline/err/invalid_annotation_cl ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..247, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 0..26, decorator_list: [], name: Identifier { id: Name("F"), range: 6..7, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 7..10, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 8..9, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -38,12 +44,15 @@ Module( arguments: Some( Arguments { range: 10..21, + node_index: AtomicNodeIndex(..), args: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 11..20, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("y"), ctx: Store, @@ -51,6 +60,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..20, id: Name("list"), ctx: Load, @@ -65,9 +75,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..26, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 23..26, }, ), @@ -78,22 +90,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 27..53, decorator_list: [], name: Identifier { id: Name("I"), range: 33..34, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 34..37, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 35..36, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 35..36, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -105,13 +122,16 @@ Module( arguments: Some( Arguments { range: 37..48, + node_index: AtomicNodeIndex(..), args: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 39..46, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 45..46, value: Int( 1, @@ -128,9 +148,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 50..53, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 50..53, }, ), @@ -141,22 +163,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 54..85, decorator_list: [], name: Identifier { id: Name("J"), range: 60..61, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 61..64, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 62..63, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 62..63, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -168,12 +195,15 @@ Module( arguments: Some( Arguments { range: 64..80, + node_index: AtomicNodeIndex(..), args: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 66..78, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 77..78, value: Int( 1, @@ -189,9 +219,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 82..85, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 82..85, }, ), @@ -202,30 +234,37 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 86..112, decorator_list: [], name: Identifier { id: Name("K"), range: 92..93, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 93..107, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 94..106, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 94..95, + node_index: AtomicNodeIndex(..), }, bound: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 98..105, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 104..105, value: Int( 1, @@ -246,9 +285,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 109..112, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 109..112, }, ), @@ -259,29 +300,36 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 137..162, decorator_list: [], name: Identifier { id: Name("L"), range: 143..144, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 144..157, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 145..156, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 145..146, + node_index: AtomicNodeIndex(..), }, bound: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 149..155, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 149..150, id: Name("x"), ctx: Store, @@ -289,6 +337,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 154..155, value: Int( 1, @@ -308,9 +357,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 159..162, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 159..162, }, ), @@ -321,22 +372,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 193..219, decorator_list: [], name: Identifier { id: Name("M"), range: 199..200, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 200..203, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 201..202, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 201..202, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -348,12 +404,15 @@ Module( arguments: Some( Arguments { range: 203..214, + node_index: AtomicNodeIndex(..), args: [ Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 205..212, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 211..212, value: Int( 1, @@ -369,9 +428,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 216..219, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 216..219, }, ), @@ -382,29 +443,36 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 220..246, decorator_list: [], name: Identifier { id: Name("N"), range: 226..227, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 227..241, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 228..240, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 228..229, + node_index: AtomicNodeIndex(..), }, bound: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 232..239, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 238..239, value: Int( 1, @@ -424,9 +492,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 243..246, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 243..246, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_function.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_function.py.snap index 66d0def077..2953a62e55 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_function.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_function.py.snap @@ -7,27 +7,33 @@ input_file: crates/ruff_python_parser/resources/inline/err/invalid_annotation_fu ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..987, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..28, is_async: false, decorator_list: [], name: Identifier { id: Name("d"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 5..8, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 6..7, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 6..7, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -38,6 +44,9 @@ Module( ), parameters: Parameters { range: 8..10, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -47,9 +56,11 @@ Module( returns: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 15..22, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..22, value: Int( 1, @@ -62,9 +73,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -75,23 +88,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 29..58, is_async: false, decorator_list: [], name: Identifier { id: Name("e"), range: 33..34, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 34..37, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 35..36, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 35..36, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -102,22 +120,30 @@ Module( ), parameters: Parameters { range: 37..53, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 38..52, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 38..52, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 38..41, + node_index: AtomicNodeIndex(..), }, annotation: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 44..51, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 50..51, value: Int( 1, @@ -139,9 +165,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 55..58, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 55..58, }, ), @@ -152,23 +180,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 59..86, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 63..64, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 64..67, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 65..66, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 65..66, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -179,6 +212,9 @@ Module( ), parameters: Parameters { range: 67..69, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -188,9 +224,11 @@ Module( returns: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 74..80, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..75, id: Name("y"), ctx: Store, @@ -198,6 +236,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 3, @@ -210,9 +249,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..86, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 83..86, }, ), @@ -223,23 +264,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 87..115, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 91..92, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 92..95, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 93..94, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 93..94, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -250,22 +296,30 @@ Module( ), parameters: Parameters { range: 95..110, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 96..109, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 96..109, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 96..99, + node_index: AtomicNodeIndex(..), }, annotation: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 102..108, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..103, id: Name("x"), ctx: Store, @@ -273,6 +327,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 107..108, value: Int( 1, @@ -294,9 +349,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 112..115, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 112..115, }, ), @@ -307,23 +364,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 116..143, is_async: false, decorator_list: [], name: Identifier { id: Name("h"), range: 120..121, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 121..124, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 122..123, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 122..123, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -334,23 +396,31 @@ Module( ), parameters: Parameters { range: 124..138, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 125..137, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 125..137, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 125..126, + node_index: AtomicNodeIndex(..), }, annotation: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 129..136, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 135..136, value: Int( 1, @@ -373,9 +443,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 140..143, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 140..143, }, ), @@ -386,23 +458,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 144..172, is_async: false, decorator_list: [], name: Identifier { id: Name("j"), range: 148..149, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 149..152, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 150..151, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 150..151, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -413,6 +490,9 @@ Module( ), parameters: Parameters { range: 152..154, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -422,10 +502,12 @@ Module( returns: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 159..166, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 165..166, value: Int( 1, @@ -439,9 +521,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 169..172, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 169..172, }, ), @@ -452,23 +536,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 173..205, is_async: false, decorator_list: [], name: Identifier { id: Name("l"), range: 177..178, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 178..181, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 179..180, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 179..180, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -479,22 +568,30 @@ Module( ), parameters: Parameters { range: 181..200, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 182..199, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 182..199, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 182..183, + node_index: AtomicNodeIndex(..), }, annotation: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 186..198, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 197..198, value: Int( 1, @@ -516,9 +613,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 202..205, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 202..205, }, ), @@ -529,23 +628,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 206..239, is_async: false, decorator_list: [], name: Identifier { id: Name("n"), range: 210..211, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 211..214, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 212..213, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 212..213, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -556,6 +660,9 @@ Module( ), parameters: Parameters { range: 214..216, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -565,9 +672,11 @@ Module( returns: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 221..233, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 232..233, value: Int( 1, @@ -580,9 +689,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 236..239, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 236..239, }, ), @@ -593,31 +704,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 240..266, is_async: false, decorator_list: [], name: Identifier { id: Name("p"), range: 244..245, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 245..259, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 246..258, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 246..247, + node_index: AtomicNodeIndex(..), }, bound: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 250..257, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 256..257, value: Int( 1, @@ -636,6 +754,9 @@ Module( ), parameters: Parameters { range: 259..261, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -646,9 +767,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 263..266, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 263..266, }, ), @@ -659,32 +782,39 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 297..324, is_async: false, decorator_list: [], name: Identifier { id: Name("q"), range: 301..302, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 302..317, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 303..316, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 303..304, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 308..315, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 314..315, value: Int( 1, @@ -702,6 +832,9 @@ Module( ), parameters: Parameters { range: 317..319, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -712,9 +845,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 321..324, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 321..324, }, ), @@ -725,31 +860,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 356..385, is_async: false, decorator_list: [], name: Identifier { id: Name("r"), range: 360..361, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 361..378, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 362..377, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 363..365, + node_index: AtomicNodeIndex(..), }, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 369..376, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 375..376, value: Int( 1, @@ -767,6 +909,9 @@ Module( ), parameters: Parameters { range: 378..380, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -777,9 +922,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 382..385, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 382..385, }, ), @@ -790,31 +937,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 420..450, is_async: false, decorator_list: [], name: Identifier { id: Name("s"), range: 424..425, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 425..443, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 426..442, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 428..430, + node_index: AtomicNodeIndex(..), }, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 434..441, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 440..441, value: Int( 1, @@ -832,6 +986,9 @@ Module( ), parameters: Parameters { range: 443..445, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -842,9 +999,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 447..450, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 447..450, }, ), @@ -855,30 +1014,37 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 481..506, is_async: false, decorator_list: [], name: Identifier { id: Name("t"), range: 485..486, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 486..499, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 487..498, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 487..488, + node_index: AtomicNodeIndex(..), }, bound: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 491..497, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 491..492, id: Name("x"), ctx: Store, @@ -886,6 +1052,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 496..497, value: Int( 1, @@ -903,6 +1070,9 @@ Module( ), parameters: Parameters { range: 499..501, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -913,9 +1083,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 503..506, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 503..506, }, ), @@ -926,31 +1098,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 543..569, is_async: false, decorator_list: [], name: Identifier { id: Name("u"), range: 547..548, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 548..562, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 549..561, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 549..550, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 554..560, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 554..555, id: Name("x"), ctx: Store, @@ -958,6 +1137,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 559..560, value: Int( 1, @@ -974,6 +1154,9 @@ Module( ), parameters: Parameters { range: 562..564, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -984,9 +1167,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 566..569, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 566..569, }, ), @@ -997,30 +1182,37 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 607..635, is_async: false, decorator_list: [], name: Identifier { id: Name("v"), range: 611..612, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 612..628, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 613..627, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 614..616, + node_index: AtomicNodeIndex(..), }, default: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 620..626, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 620..621, id: Name("x"), ctx: Store, @@ -1028,6 +1220,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 625..626, value: Int( 1, @@ -1044,6 +1237,9 @@ Module( ), parameters: Parameters { range: 628..630, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -1054,9 +1250,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 632..635, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 632..635, }, ), @@ -1067,30 +1265,37 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 676..705, is_async: false, decorator_list: [], name: Identifier { id: Name("w"), range: 680..681, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 681..698, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 682..697, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 684..686, + node_index: AtomicNodeIndex(..), }, default: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 690..696, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 690..691, id: Name("x"), ctx: Store, @@ -1098,6 +1303,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 695..696, value: Int( 1, @@ -1114,6 +1320,9 @@ Module( ), parameters: Parameters { range: 698..700, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -1124,9 +1333,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 702..705, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 702..705, }, ), @@ -1137,30 +1348,37 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 742..768, is_async: false, decorator_list: [], name: Identifier { id: Name("t"), range: 746..747, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 747..761, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 748..760, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 748..749, + node_index: AtomicNodeIndex(..), }, bound: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 752..759, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 758..759, value: Int( 1, @@ -1178,6 +1396,9 @@ Module( ), parameters: Parameters { range: 761..763, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -1188,9 +1409,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 765..768, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 765..768, }, ), @@ -1201,31 +1424,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 800..827, is_async: false, decorator_list: [], name: Identifier { id: Name("u"), range: 804..805, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 805..820, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 806..819, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 806..807, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 811..818, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 817..818, value: Int( 1, @@ -1242,6 +1472,9 @@ Module( ), parameters: Parameters { range: 820..822, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -1252,9 +1485,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 824..827, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 824..827, }, ), @@ -1265,30 +1500,37 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 860..889, is_async: false, decorator_list: [], name: Identifier { id: Name("v"), range: 864..865, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 865..882, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 866..881, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 867..869, + node_index: AtomicNodeIndex(..), }, default: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 873..880, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 879..880, value: Int( 1, @@ -1305,6 +1547,9 @@ Module( ), parameters: Parameters { range: 882..884, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -1315,9 +1560,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 886..889, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 886..889, }, ), @@ -1328,30 +1575,37 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 925..955, is_async: false, decorator_list: [], name: Identifier { id: Name("w"), range: 929..930, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 930..948, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 931..947, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 933..935, + node_index: AtomicNodeIndex(..), }, default: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 939..946, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 945..946, value: Int( 1, @@ -1368,6 +1622,9 @@ Module( ), parameters: Parameters { range: 948..950, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -1378,9 +1635,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 952..955, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 952..955, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_function_py314.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_function_py314.py.snap index 49533fb33f..81e3240ff7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_function_py314.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_function_py314.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/invalid_annotation_fu ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..316, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..68, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 48..49, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 49..51, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -30,9 +36,11 @@ Module( returns: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 56..62, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("y"), ctx: Store, @@ -40,6 +48,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 61..62, value: Int( 3, @@ -52,9 +61,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 65..68, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 65..68, }, ), @@ -65,32 +76,42 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 69..94, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 73..74, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 74..89, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 75..88, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 75..88, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 75..78, + node_index: AtomicNodeIndex(..), }, annotation: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 81..87, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..82, id: Name("x"), ctx: Store, @@ -98,6 +119,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 86..87, value: Int( 1, @@ -119,9 +141,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 91..94, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 91..94, }, ), @@ -132,16 +156,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 95..235, is_async: false, decorator_list: [], name: Identifier { id: Name("outer"), range: 99..104, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 104..106, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -152,33 +181,43 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 112..136, is_async: false, decorator_list: [], name: Identifier { id: Name("i"), range: 116..117, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 117..131, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 118..130, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 118..130, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 118..119, + node_index: AtomicNodeIndex(..), }, annotation: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 122..129, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 128..129, value: Int( 1, @@ -201,9 +240,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..136, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 133..136, }, ), @@ -214,16 +255,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 141..166, is_async: false, decorator_list: [], name: Identifier { id: Name("k"), range: 145..146, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 146..148, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -233,10 +279,12 @@ Module( returns: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 153..160, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 159..160, value: Int( 1, @@ -250,9 +298,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 163..166, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 163..166, }, ), @@ -263,32 +313,42 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 171..200, is_async: false, decorator_list: [], name: Identifier { id: Name("m"), range: 175..176, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 176..195, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 177..194, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 177..194, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 177..178, + node_index: AtomicNodeIndex(..), }, annotation: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 181..193, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 192..193, value: Int( 1, @@ -310,9 +370,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 197..200, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 197..200, }, ), @@ -323,16 +385,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 205..235, is_async: false, decorator_list: [], name: Identifier { id: Name("o"), range: 209..210, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 210..212, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -342,9 +409,11 @@ Module( returns: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 217..229, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 228..229, value: Int( 1, @@ -357,9 +426,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 232..235, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 232..235, }, ), @@ -373,16 +444,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 236..315, is_async: true, decorator_list: [], name: Identifier { id: Name("outer"), range: 246..251, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 251..253, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -393,16 +469,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 259..284, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 263..264, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 264..266, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -412,9 +493,11 @@ Module( returns: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 271..278, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 277..278, value: Int( 1, @@ -427,9 +510,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 281..284, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 281..284, }, ), @@ -440,32 +525,42 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 289..315, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 293..294, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 294..310, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 295..309, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 295..309, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 295..298, + node_index: AtomicNodeIndex(..), }, annotation: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 301..308, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 307..308, value: Int( 1, @@ -487,9 +582,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 312..315, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 312..315, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_py314.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_py314.py.snap index 113edf8f44..78ac67583b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_py314.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_py314.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/invalid_annotation_py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..144, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 44..55, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("a"), ctx: Store, @@ -21,9 +24,11 @@ Module( ), annotation: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 48..54, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..49, id: Name("x"), ctx: Store, @@ -31,6 +36,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 53..54, value: Int( 1, @@ -45,16 +51,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 56..107, is_async: false, decorator_list: [], name: Identifier { id: Name("outer"), range: 60..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -65,9 +76,11 @@ Module( body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 73..85, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..74, id: Name("b"), ctx: Store, @@ -75,10 +88,12 @@ Module( ), annotation: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 77..84, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 1, @@ -94,9 +109,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 90..107, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("c"), ctx: Store, @@ -104,9 +121,11 @@ Module( ), annotation: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 94..106, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 105..106, value: Int( 1, @@ -124,16 +143,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 108..143, is_async: true, decorator_list: [], name: Identifier { id: Name("outer"), range: 118..123, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 123..125, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -144,9 +168,11 @@ Module( body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 131..143, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..132, id: Name("d"), ctx: Store, @@ -154,9 +180,11 @@ Module( ), annotation: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 135..142, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 141..142, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_type_alias.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_type_alias.py.snap index 8b4e9638b5..10e387a20b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_type_alias.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_annotation_type_alias.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/invalid_annotation_ty ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..406, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..26, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -22,21 +25,26 @@ Module( type_params: Some( TypeParams { range: 6..20, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 7..19, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 7..8, + node_index: AtomicNodeIndex(..), }, bound: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 11..18, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 17..18, value: Int( 1, @@ -55,6 +63,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..26, id: Name("int"), ctx: Load, @@ -64,9 +73,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 48..75, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("X"), ctx: Store, @@ -75,22 +86,27 @@ Module( type_params: Some( TypeParams { range: 54..69, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 55..68, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 55..56, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 60..67, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 66..67, value: Int( 1, @@ -108,6 +124,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..75, id: Name("int"), ctx: Load, @@ -117,9 +134,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 98..127, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 103..104, id: Name("X"), ctx: Store, @@ -128,21 +147,26 @@ Module( type_params: Some( TypeParams { range: 104..121, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 105..120, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 106..108, + node_index: AtomicNodeIndex(..), }, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 112..119, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 118..119, value: Int( 1, @@ -160,6 +184,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 124..127, id: Name("int"), ctx: Load, @@ -169,9 +194,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 153..183, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 158..159, id: Name("X"), ctx: Store, @@ -180,21 +207,26 @@ Module( type_params: Some( TypeParams { range: 159..177, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 160..176, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 162..164, + node_index: AtomicNodeIndex(..), }, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 168..175, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 174..175, value: Int( 1, @@ -212,6 +244,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 180..183, id: Name("int"), ctx: Load, @@ -221,9 +254,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 205..223, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 210..211, id: Name("Y"), ctx: Store, @@ -232,10 +267,12 @@ Module( type_params: None, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 215..222, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 221..222, value: Int( 1, @@ -249,9 +286,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 254..271, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 259..260, id: Name("Y"), ctx: Store, @@ -260,9 +299,11 @@ Module( type_params: None, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 264..270, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 264..265, id: Name("x"), ctx: Store, @@ -270,6 +311,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 269..270, value: Int( 1, @@ -282,9 +324,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 308..334, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 313..314, id: Name("Y"), ctx: Store, @@ -293,20 +337,25 @@ Module( type_params: Some( TypeParams { range: 314..328, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 315..327, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 315..316, + node_index: AtomicNodeIndex(..), }, bound: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 319..326, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 325..326, value: Int( 1, @@ -324,6 +373,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 331..334, id: Name("int"), ctx: Load, @@ -333,9 +383,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 357..375, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 362..363, id: Name("Y"), ctx: Store, @@ -344,9 +396,11 @@ Module( type_params: None, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 367..374, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 373..374, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_byte_literal.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_byte_literal.py.snap index 0cb2a556d7..67b56f4617 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_byte_literal.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_byte_literal.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/invalid_byte_literal.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..44, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..12, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 0..12, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 0..12, + node_index: AtomicNodeIndex(..), value: [], flags: BytesLiteralFlags { quote_style: Single, @@ -35,14 +38,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..26, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 13..26, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 13..26, + node_index: AtomicNodeIndex(..), value: [], flags: BytesLiteralFlags { quote_style: Double, @@ -60,14 +66,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 27..43, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 27..43, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 27..43, + node_index: AtomicNodeIndex(..), value: [], flags: BytesLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_del_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_del_target.py.snap index c3731e868d..444e3dd979 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_del_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_del_target.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/invalid_del_target.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..75, body: [ Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 0..9, targets: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 4..9, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Load, @@ -27,6 +30,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 1, @@ -40,21 +44,25 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 10..22, targets: [ Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 14..22, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 15..18, value: StringLiteralValue { inner: Single( StringLiteral { range: 15..18, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Single, @@ -69,6 +77,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 20..21, value: Int( 1, @@ -84,19 +93,23 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 23..37, targets: [ Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 27..37, elts: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 28..31, value: StringLiteralValue { inner: Single( StringLiteral { range: 28..31, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Single, @@ -110,11 +123,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 33..36, value: StringLiteralValue { inner: Single( StringLiteral { range: 33..36, + node_index: AtomicNodeIndex(..), value: "y", flags: StringLiteralFlags { quote_style: Single, @@ -134,27 +149,32 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 38..74, targets: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 42..46, }, ), BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 48..52, value: true, }, ), BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 54..59, value: false, }, ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 61..62, value: Int( 1, @@ -163,6 +183,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 64..67, value: Float( 1.0, @@ -171,11 +192,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 69..74, value: StringLiteralValue { inner: Single( StringLiteral { range: 69..74, + node_index: AtomicNodeIndex(..), value: "abc", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_fstring_literal_element.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_fstring_literal_element.py.snap index 9c628a81d1..d401ee2d55 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_fstring_literal_element.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_fstring_literal_element.py.snap @@ -7,23 +7,28 @@ input_file: crates/ruff_python_parser/resources/inline/err/invalid_fstring_liter ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..58, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..26, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..26, value: FStringValue { inner: Single( FString( FString { range: 0..26, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..25, + node_index: AtomicNodeIndex(..), value: "", }, ), @@ -43,19 +48,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 27..57, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 27..57, value: FStringValue { inner: Single( FString( FString { range: 27..57, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 31..54, + node_index: AtomicNodeIndex(..), value: "", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_string_literal.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_string_literal.py.snap index f459755d73..93f0879fae 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_string_literal.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@invalid_string_literal.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/invalid_string_literal.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..56, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..25, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..25, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..25, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, @@ -35,14 +38,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..55, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 26..55, value: StringLiteralValue { inner: Single( StringLiteral { range: 26..55, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@irrefutable_case_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@irrefutable_case_pattern.py.snap index ca46e5e687..3853b04afd 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@irrefutable_case_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@irrefutable_case_pattern.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/irrefutable_case_patt ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..317, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..61, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -22,14 +25,17 @@ Module( cases: [ MatchCase { range: 13..26, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 18..21, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("var"), range: 18..21, + node_index: AtomicNodeIndex(..), }, ), }, @@ -38,9 +44,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..26, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 23..26, }, ), @@ -50,11 +58,14 @@ Module( }, MatchCase { range: 50..61, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 55..56, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 55..56, value: Int( 2, @@ -67,9 +78,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..61, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, }, ), @@ -82,9 +95,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 62..102, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -93,9 +108,11 @@ Module( cases: [ MatchCase { range: 75..86, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 80..81, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -104,9 +121,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..86, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 83..86, }, ), @@ -116,11 +135,14 @@ Module( }, MatchCase { range: 91..102, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 96..97, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 96..97, value: Int( 2, @@ -133,9 +155,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 99..102, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 99..102, }, ), @@ -148,9 +172,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 125..222, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..132, id: Name("x"), ctx: Load, @@ -159,18 +185,22 @@ Module( cases: [ MatchCase { range: 138..160, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 143..155, + node_index: AtomicNodeIndex(..), pattern: Some( MatchAs( PatternMatchAs { range: 143..147, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("var1"), range: 143..147, + node_index: AtomicNodeIndex(..), }, ), }, @@ -180,6 +210,7 @@ Module( Identifier { id: Name("var2"), range: 151..155, + node_index: AtomicNodeIndex(..), }, ), }, @@ -188,9 +219,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 157..160, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 157..160, }, ), @@ -200,11 +233,14 @@ Module( }, MatchCase { range: 211..222, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 216..217, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 216..217, value: Int( 2, @@ -217,9 +253,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 219..222, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 219..222, }, ), @@ -232,9 +270,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 223..316, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 229..230, id: Name("x"), ctx: Load, @@ -243,18 +283,23 @@ Module( cases: [ MatchCase { range: 236..264, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 241..259, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 241..253, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 241..253, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 241..245, id: Name("enum"), ctx: Load, @@ -263,6 +308,7 @@ Module( attr: Identifier { id: Name("variant"), range: 246..253, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -272,11 +318,13 @@ Module( MatchAs( PatternMatchAs { range: 256..259, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("var"), range: 256..259, + node_index: AtomicNodeIndex(..), }, ), }, @@ -288,9 +336,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 261..264, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 261..264, }, ), @@ -300,11 +350,14 @@ Module( }, MatchCase { range: 305..316, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 310..311, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 310..311, value: Int( 2, @@ -317,9 +370,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 313..316, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 313..316, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@iter_unpack_return_py37.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@iter_unpack_return_py37.py.snap index 0aa69e8be1..305adc1eea 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@iter_unpack_return_py37.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@iter_unpack_return_py37.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/iter_unpack_return_py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..91, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 43..59, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..47, id: Name("rest"), ctx: Store, @@ -23,10 +26,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 50..59, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 4, @@ -35,6 +40,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 5, @@ -43,6 +49,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 6, @@ -58,16 +65,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 60..90, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 64..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -78,14 +90,17 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 69..90, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 76..90, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 76..77, value: Int( 1, @@ -94,6 +109,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 2, @@ -102,6 +118,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 3, @@ -110,9 +127,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 85..90, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..90, id: Name("rest"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@iter_unpack_yield_py37.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@iter_unpack_yield_py37.py.snap index 44b0fe51e3..f3e6ac63aa 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@iter_unpack_yield_py37.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@iter_unpack_yield_py37.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/iter_unpack_yield_py3 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..128, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 43..59, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..47, id: Name("rest"), ctx: Store, @@ -23,10 +26,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 50..59, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 4, @@ -35,6 +40,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 5, @@ -43,6 +49,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 6, @@ -58,16 +65,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 60..89, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 64..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -78,17 +90,21 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 69..89, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 69..89, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 75..89, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 75..76, value: Int( 1, @@ -97,6 +113,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..79, value: Int( 2, @@ -105,6 +122,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 81..82, value: Int( 3, @@ -113,9 +131,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 84..89, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..89, id: Name("rest"), ctx: Load, @@ -139,16 +159,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 90..127, is_async: false, decorator_list: [], name: Identifier { id: Name("h"), range: 94..95, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 95..97, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -159,17 +184,21 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 99..127, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 99..127, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 105..127, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 105..106, value: Int( 1, @@ -178,14 +207,17 @@ Module( ), Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 109..123, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 115..123, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 115..116, value: Int( 2, @@ -194,9 +226,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 118..123, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 119..123, id: Name("rest"), ctx: Load, @@ -215,6 +249,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 126..127, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@lambda_body_with_starred_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@lambda_body_with_starred_expr.py.snap index 98b0ef84a3..920e8ab7d7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@lambda_body_with_starred_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@lambda_body_with_starred_expr.py.snap @@ -1,33 +1,41 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/lambda_body_with_starred_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..62, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..12, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 0..12, parameters: Some( Parameters { range: 7..8, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 7..8, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 7..8, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 7..8, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -41,9 +49,11 @@ Module( ), body: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 10..12, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("y"), ctx: Load, @@ -58,26 +68,35 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..26, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 13..26, elts: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 13..25, parameters: Some( Parameters { range: 20..21, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 20..21, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 20..21, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 20..21, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -91,9 +110,11 @@ Module( ), body: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 23..25, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("y"), ctx: Load, @@ -113,26 +134,35 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 27..42, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 27..42, elts: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 27..39, parameters: Some( Parameters { range: 34..35, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 34..35, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 34..35, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 34..35, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -146,9 +176,11 @@ Module( ), body: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 37..39, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("y"), ctx: Load, @@ -161,6 +193,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("z"), ctx: Load, @@ -175,22 +208,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..61, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 43..61, parameters: Some( Parameters { range: 50..51, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 50..51, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 50..51, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 50..51, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -204,14 +245,17 @@ Module( ), body: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 53..61, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 54..61, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..55, id: Name("y"), ctx: Load, @@ -219,6 +263,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@lambda_body_with_yield_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@lambda_body_with_yield_expr.py.snap index fe4a4b01ab..1b3cd95472 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@lambda_body_with_yield_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@lambda_body_with_yield_expr.py.snap @@ -1,33 +1,41 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/lambda_body_with_yield_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..41, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 0..17, parameters: Some( Parameters { range: 7..8, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 7..8, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 7..8, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 7..8, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -41,10 +49,12 @@ Module( ), body: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 10..17, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("y"), ctx: Load, @@ -59,22 +69,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..40, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 18..40, parameters: Some( Parameters { range: 25..26, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 25..26, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 25..26, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 25..26, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -88,9 +106,11 @@ Module( ), body: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 28..40, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_before_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_before_py310.py.snap index a951295d8a..f4cf349ddd 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_before_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_before_py310.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/match_before_py310.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..79, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 45..78, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 2, @@ -23,11 +26,14 @@ Module( cases: [ MatchCase { range: 58..78, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 63..64, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 63..64, value: Int( 1, @@ -40,6 +46,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 74..78, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_classify_as_keyword.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_classify_as_keyword.py.snap index 81e020fe54..e4e0b0db63 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_classify_as_keyword.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_classify_as_keyword.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/match_classify_as_keyword.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..33, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..32, subject: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 6..15, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..15, id: Name("foo"), ctx: Load, @@ -30,9 +33,11 @@ Module( cases: [ MatchCase { range: 21..32, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 26..27, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -41,9 +46,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..32, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_classify_as_keyword_or_identifier.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_classify_as_keyword_or_identifier.py.snap index 9681e681bb..5ce94bf138 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_classify_as_keyword_or_identifier.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_classify_as_keyword_or_identifier.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/match_classify_as_keyword_or_identifier.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..39, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..38, subject: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 6..10, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..10, id: Name("foo"), ctx: Load, @@ -29,9 +32,11 @@ Module( cases: [ MatchCase { range: 27..38, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 32..33, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -40,9 +45,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 35..38, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 35..38, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_expected_colon.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_expected_colon.py.snap index 42e2347dd2..6415f9724a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_expected_colon.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_expected_colon.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/match_expected_colon.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..29, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..28, subject: List( ExprList { + node_index: AtomicNodeIndex(..), range: 6..12, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 7..8, value: Int( 1, @@ -27,6 +30,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..11, value: Int( 2, @@ -40,9 +44,11 @@ Module( cases: [ MatchCase { range: 17..28, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 22..23, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -51,9 +57,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_expect_indented_block.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_expect_indented_block.py.snap index 5ba948d16b..273c444e53 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_expect_indented_block.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_expect_indented_block.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/match_stmt_expect_ind ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..23, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..22, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("foo"), ctx: Load, @@ -22,9 +25,11 @@ Module( cases: [ MatchCase { range: 11..22, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 16..17, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -33,9 +38,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_expected_case_block.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_expected_case_block.py.snap index 2844e904f7..528b87d4e7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_expected_case_block.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_expected_case_block.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/match_stmt_expected_c ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..61, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..13, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -24,10 +27,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 13..18, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("x"), ctx: Store, @@ -36,6 +41,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 17..18, value: Int( 1, @@ -46,9 +52,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 19..32, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("x"), ctx: Load, @@ -59,9 +67,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 32..60, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("y"), ctx: Load, @@ -70,9 +80,11 @@ Module( cases: [ MatchCase { range: 49..60, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 54..55, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -81,9 +93,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..60, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 57..60, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_invalid_guard_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_invalid_guard_expr.py.snap index 5028df2a0d..0f5a1d34f4 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_invalid_guard_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_invalid_guard_expr.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/match_stmt_invalid_guard_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..100, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..30, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -23,14 +25,17 @@ Module( cases: [ MatchCase { range: 13..30, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 18..19, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 18..19, + node_index: AtomicNodeIndex(..), }, ), }, @@ -38,9 +43,11 @@ Module( guard: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 23..25, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("a"), ctx: Load, @@ -53,9 +60,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 27..30, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 27..30, }, ), @@ -68,9 +77,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 31..63, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..38, id: Name("x"), ctx: Load, @@ -79,14 +90,17 @@ Module( cases: [ MatchCase { range: 44..63, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 49..50, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 49..50, + node_index: AtomicNodeIndex(..), }, ), }, @@ -94,9 +108,11 @@ Module( guard: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 55..57, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("a"), ctx: Load, @@ -109,9 +125,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 60..63, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 60..63, }, ), @@ -124,9 +142,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 64..99, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("x"), ctx: Load, @@ -135,14 +155,17 @@ Module( cases: [ MatchCase { range: 77..99, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 82..83, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 82..83, + node_index: AtomicNodeIndex(..), }, ), }, @@ -150,10 +173,12 @@ Module( guard: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 87..94, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("x"), ctx: Load, @@ -166,9 +191,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 96..99, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 96..99, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_invalid_subject_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_invalid_subject_expr.py.snap index e7e2359f83..13285ab3c4 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_invalid_subject_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_invalid_subject_expr.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/match_stmt_invalid_subject_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..131, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..27, subject: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 7..9, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("x"), ctx: Load, @@ -29,9 +32,11 @@ Module( cases: [ MatchCase { range: 16..27, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 21..22, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -40,9 +45,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..27, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 24..27, }, ), @@ -55,21 +62,26 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 65..99, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 71..82, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 71..79, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 72..79, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("x"), ctx: Load, @@ -77,6 +89,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..79, id: Name("y"), ctx: Load, @@ -90,6 +103,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..82, id: Name("z"), ctx: Load, @@ -103,9 +117,11 @@ Module( cases: [ MatchCase { range: 88..99, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 93..94, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -114,9 +130,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 96..99, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 96..99, }, ), @@ -129,13 +147,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 100..130, subject: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 106..113, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 112..113, id: Name("x"), ctx: Load, @@ -147,9 +168,11 @@ Module( cases: [ MatchCase { range: 119..130, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 124..125, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -158,9 +181,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 127..130, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 127..130, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_missing_guard_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_missing_guard_expr.py.snap index 2dbcec05b1..bda3c6e5c3 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_missing_guard_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_missing_guard_expr.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/match_stmt_missing_guard_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..28, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..27, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -23,14 +25,17 @@ Module( cases: [ MatchCase { range: 13..27, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 18..19, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 18..19, + node_index: AtomicNodeIndex(..), }, ), }, @@ -39,9 +44,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..27, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 24..27, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_missing_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_missing_pattern.py.snap index 81183473ca..3b604f0505 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_missing_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_missing_pattern.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/match_stmt_missing_pattern.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..24, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..23, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -23,11 +25,14 @@ Module( cases: [ MatchCase { range: 13..23, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 17..17, + node_index: AtomicNodeIndex(..), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..17, id: Name(""), ctx: Invalid, @@ -39,9 +44,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..23, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 20..23, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_no_newline_before_case.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_no_newline_before_case.py.snap index 6a9ba216b3..f22cb551fc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_no_newline_before_case.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_no_newline_before_case.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/match_stmt_no_newline ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..23, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..22, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("foo"), ctx: Load, @@ -22,9 +25,11 @@ Module( cases: [ MatchCase { range: 11..22, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 16..17, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -33,9 +38,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_single_starred_subject.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_single_starred_subject.py.snap index affa89318a..1bfa4ac064 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_single_starred_subject.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@match_stmt_single_starred_subject.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/match_stmt_single_starred_subject.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..28, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..27, subject: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 6..10, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..10, id: Name("foo"), ctx: Load, @@ -29,9 +32,11 @@ Module( cases: [ MatchCase { range: 16..27, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 21..22, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -40,9 +45,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..27, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 24..27, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@mixed_bytes_and_non_bytes_literals.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@mixed_bytes_and_non_bytes_literals.py.snap index 35384a51a4..192d87e0b5 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@mixed_bytes_and_non_bytes_literals.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@mixed_bytes_and_non_bytes_literals.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/mixed_bytes_and_non_b ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..64, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..17, value: StringLiteralValue { inner: Concatenated( @@ -21,6 +24,7 @@ Module( strings: [ StringLiteral { range: 0..7, + node_index: AtomicNodeIndex(..), value: "first", flags: StringLiteralFlags { quote_style: Single, @@ -30,6 +34,7 @@ Module( }, StringLiteral { range: 8..17, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, @@ -48,9 +53,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..36, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 18..36, value: FStringValue { inner: Concatenated( @@ -58,10 +65,12 @@ Module( FString( FString { range: 18..26, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 20..25, + node_index: AtomicNodeIndex(..), value: "first", }, ), @@ -76,6 +85,7 @@ Module( Literal( StringLiteral { range: 27..36, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, @@ -93,9 +103,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 37..63, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 37..63, value: FStringValue { inner: Concatenated( @@ -103,6 +115,7 @@ Module( Literal( StringLiteral { range: 37..44, + node_index: AtomicNodeIndex(..), value: "first", flags: StringLiteralFlags { quote_style: Single, @@ -114,10 +127,12 @@ Module( FString( FString { range: 45..54, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 47..53, + node_index: AtomicNodeIndex(..), value: "second", }, ), @@ -132,6 +147,7 @@ Module( Literal( StringLiteral { range: 55..63, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@multiple_assignment_in_case_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@multiple_assignment_in_case_pattern.py.snap index c47d0febba..c3e7a8341c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@multiple_assignment_in_case_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@multiple_assignment_in_case_pattern.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/multiple_assignment_i ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..456, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..444, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..7, value: Int( 2, @@ -23,18 +26,22 @@ Module( cases: [ MatchCase { range: 13..32, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 18..27, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 19..20, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 19..20, + node_index: AtomicNodeIndex(..), }, ), }, @@ -42,11 +49,13 @@ Module( MatchAs( PatternMatchAs { range: 22..23, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("z"), range: 22..23, + node_index: AtomicNodeIndex(..), }, ), }, @@ -54,11 +63,13 @@ Module( MatchAs( PatternMatchAs { range: 25..26, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 25..26, + node_index: AtomicNodeIndex(..), }, ), }, @@ -70,9 +81,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..32, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, }, ), @@ -82,18 +95,22 @@ Module( }, MatchCase { range: 54..74, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 59..69, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 60..61, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 60..61, + node_index: AtomicNodeIndex(..), }, ), }, @@ -101,11 +118,13 @@ Module( MatchAs( PatternMatchAs { range: 63..64, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("z"), range: 63..64, + node_index: AtomicNodeIndex(..), }, ), }, @@ -113,10 +132,12 @@ Module( MatchStar( PatternMatchStar { range: 66..68, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("y"), range: 67..68, + node_index: AtomicNodeIndex(..), }, ), }, @@ -128,9 +149,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 71..74, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 71..74, }, ), @@ -140,18 +163,22 @@ Module( }, MatchCase { range: 96..115, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 101..110, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 102..103, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 102..103, + node_index: AtomicNodeIndex(..), }, ), }, @@ -159,11 +186,13 @@ Module( MatchAs( PatternMatchAs { range: 105..106, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 105..106, + node_index: AtomicNodeIndex(..), }, ), }, @@ -171,11 +200,13 @@ Module( MatchAs( PatternMatchAs { range: 108..109, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 108..109, + node_index: AtomicNodeIndex(..), }, ), }, @@ -187,9 +218,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 112..115, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 112..115, }, ), @@ -199,12 +232,15 @@ Module( }, MatchCase { range: 146..168, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 151..163, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 152..153, value: Int( 1, @@ -213,6 +249,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 158..159, value: Int( 2, @@ -224,11 +261,13 @@ Module( MatchAs( PatternMatchAs { range: 155..156, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 155..156, + node_index: AtomicNodeIndex(..), }, ), }, @@ -236,11 +275,13 @@ Module( MatchAs( PatternMatchAs { range: 161..162, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 161..162, + node_index: AtomicNodeIndex(..), }, ), }, @@ -253,9 +294,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 165..168, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 165..168, }, ), @@ -265,12 +308,15 @@ Module( }, MatchCase { range: 207..228, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 212..223, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 213..214, value: Int( 1, @@ -282,11 +328,13 @@ Module( MatchAs( PatternMatchAs { range: 216..217, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 216..217, + node_index: AtomicNodeIndex(..), }, ), }, @@ -296,6 +344,7 @@ Module( Identifier { id: Name("x"), range: 221..222, + node_index: AtomicNodeIndex(..), }, ), }, @@ -304,9 +353,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 225..228, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 225..228, }, ), @@ -316,11 +367,14 @@ Module( }, MatchCase { range: 269..290, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 274..285, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 274..279, id: Name("Class"), ctx: Load, @@ -328,15 +382,18 @@ Module( ), arguments: PatternArguments { range: 279..285, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 280..281, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 280..281, + node_index: AtomicNodeIndex(..), }, ), }, @@ -344,11 +401,13 @@ Module( MatchAs( PatternMatchAs { range: 283..284, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 283..284, + node_index: AtomicNodeIndex(..), }, ), }, @@ -362,9 +421,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 287..290, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 287..290, }, ), @@ -374,11 +435,14 @@ Module( }, MatchCase { range: 320..345, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 325..340, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 325..330, id: Name("Class"), ctx: Load, @@ -386,22 +450,27 @@ Module( ), arguments: PatternArguments { range: 330..340, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 331..334, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("y"), range: 331..332, + node_index: AtomicNodeIndex(..), }, pattern: MatchAs( PatternMatchAs { range: 333..334, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 333..334, + node_index: AtomicNodeIndex(..), }, ), }, @@ -409,18 +478,22 @@ Module( }, PatternKeyword { range: 336..339, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("z"), range: 336..337, + node_index: AtomicNodeIndex(..), }, pattern: MatchAs( PatternMatchAs { range: 338..339, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 338..339, + node_index: AtomicNodeIndex(..), }, ), }, @@ -434,9 +507,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 342..345, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 342..345, }, ), @@ -446,22 +521,27 @@ Module( }, MatchCase { range: 372..412, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 377..407, + node_index: AtomicNodeIndex(..), patterns: [ MatchSequence( PatternMatchSequence { range: 377..380, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 378..379, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 378..379, + node_index: AtomicNodeIndex(..), }, ), }, @@ -472,9 +552,11 @@ Module( MatchMapping( PatternMatchMapping { range: 383..389, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 384..385, value: Int( 1, @@ -486,11 +568,13 @@ Module( MatchAs( PatternMatchAs { range: 387..388, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 387..388, + node_index: AtomicNodeIndex(..), }, ), }, @@ -502,8 +586,10 @@ Module( MatchClass( PatternMatchClass { range: 392..407, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 392..397, id: Name("Class"), ctx: Load, @@ -511,22 +597,27 @@ Module( ), arguments: PatternArguments { range: 397..407, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 398..401, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("y"), range: 398..399, + node_index: AtomicNodeIndex(..), }, pattern: MatchAs( PatternMatchAs { range: 400..401, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 400..401, + node_index: AtomicNodeIndex(..), }, ), }, @@ -534,18 +625,22 @@ Module( }, PatternKeyword { range: 403..406, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("z"), range: 403..404, + node_index: AtomicNodeIndex(..), }, pattern: MatchAs( PatternMatchAs { range: 405..406, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 405..406, + node_index: AtomicNodeIndex(..), }, ), }, @@ -562,9 +657,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 409..412, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 409..412, }, ), @@ -574,18 +671,22 @@ Module( }, MatchCase { range: 428..444, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 433..439, + node_index: AtomicNodeIndex(..), pattern: Some( MatchAs( PatternMatchAs { range: 433..434, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 433..434, + node_index: AtomicNodeIndex(..), }, ), }, @@ -595,6 +696,7 @@ Module( Identifier { id: Name("x"), range: 438..439, + node_index: AtomicNodeIndex(..), }, ), }, @@ -603,9 +705,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 441..444, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 441..444, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@multiple_clauses_on_same_line.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@multiple_clauses_on_same_line.py.snap index f67856c23f..e7bbeb557a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@multiple_clauses_on_same_line.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@multiple_clauses_on_same_line.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/multiple_clauses_on_same_line.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..258, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..41, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 3..7, value: true, }, @@ -22,6 +24,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -29,9 +32,11 @@ Module( elif_else_clauses: [ ElifElseClause { range: 14..30, + node_index: AtomicNodeIndex(..), test: Some( BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 19..24, value: false, }, @@ -40,6 +45,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 26..30, }, ), @@ -47,10 +53,12 @@ Module( }, ElifElseClause { range: 31..41, + node_index: AtomicNodeIndex(..), test: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 37..41, }, ), @@ -61,9 +69,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 42..85, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 45..49, value: true, }, @@ -71,6 +81,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 51..55, }, ), @@ -78,9 +89,11 @@ Module( elif_else_clauses: [ ElifElseClause { range: 57..73, + node_index: AtomicNodeIndex(..), test: Some( BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 62..67, value: false, }, @@ -89,6 +102,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 69..73, }, ), @@ -96,10 +110,12 @@ Module( }, ElifElseClause { range: 75..85, + node_index: AtomicNodeIndex(..), test: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 81..85, }, ), @@ -110,10 +126,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 86..117, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("x"), ctx: Store, @@ -121,6 +139,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..99, id: Name("iter"), ctx: Load, @@ -129,6 +148,7 @@ Module( body: [ Break( StmtBreak { + node_index: AtomicNodeIndex(..), range: 101..106, }, ), @@ -136,6 +156,7 @@ Module( orelse: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 113..117, }, ), @@ -144,10 +165,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 118..150, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 122..123, id: Name("x"), ctx: Store, @@ -155,6 +178,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..131, id: Name("iter"), ctx: Load, @@ -163,6 +187,7 @@ Module( body: [ Break( StmtBreak { + node_index: AtomicNodeIndex(..), range: 133..138, }, ), @@ -170,6 +195,7 @@ Module( orelse: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 146..150, }, ), @@ -178,10 +204,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 151..202, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 156..160, }, ), @@ -190,9 +218,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 161..177, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 168..171, id: Name("exc"), ctx: Load, @@ -203,6 +233,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 173..177, }, ), @@ -213,6 +244,7 @@ Module( orelse: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 184..188, }, ), @@ -220,6 +252,7 @@ Module( finalbody: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 198..202, }, ), @@ -229,10 +262,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 203..257, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 208..212, }, ), @@ -241,9 +276,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 214..230, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 221..224, id: Name("exc"), ctx: Load, @@ -254,6 +291,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 226..230, }, ), @@ -264,6 +302,7 @@ Module( orelse: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 238..242, }, ), @@ -271,6 +310,7 @@ Module( finalbody: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 253..257, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@named_expr_slice.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@named_expr_slice.py.snap index 815b74f88c..0e70f2a74a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@named_expr_slice.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@named_expr_slice.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/err/named_expr_slice.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..119, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 80..92, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 80..92, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..83, id: Name("lst"), ctx: Load, @@ -24,13 +28,16 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 84..91, lower: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 84..88, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..85, id: Name("x"), ctx: Store, @@ -38,6 +45,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 87..88, value: Int( 1, @@ -50,10 +58,12 @@ Module( upper: Some( UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 89..91, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 90..91, value: Int( 1, @@ -73,12 +83,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 93..100, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 93..100, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..96, id: Name("lst"), ctx: Load, @@ -86,10 +99,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 97..100, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 97..98, value: Int( 1, @@ -100,6 +115,7 @@ Module( upper: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("x"), ctx: Load, @@ -116,9 +132,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 102..103, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 102..103, value: Int( 1, @@ -129,12 +147,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 105..114, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 105..114, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..108, id: Name("lst"), ctx: Load, @@ -142,10 +163,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 109..114, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 109..110, value: Int( 1, @@ -156,6 +179,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 111..112, value: Int( 3, @@ -166,6 +190,7 @@ Module( step: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..114, id: Name("x"), ctx: Load, @@ -181,9 +206,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 116..117, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 116..117, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@named_expr_slice_parse_error.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@named_expr_slice_parse_error.py.snap index d0166af2f4..044df9bbb7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@named_expr_slice_parse_error.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@named_expr_slice_parse_error.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/err/named_expr_slice_pars ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..130, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 117..129, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 117..129, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 117..120, id: Name("lst"), ctx: Load, @@ -24,13 +28,16 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 121..128, lower: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 121..125, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 121..122, id: Name("x"), ctx: Store, @@ -38,6 +45,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 124..125, value: Int( 1, @@ -50,10 +58,12 @@ Module( upper: Some( UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 126..128, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 127..128, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nested_async_comprehension_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nested_async_comprehension_py310.py.snap index cec50a8151..9d6245421f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nested_async_comprehension_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nested_async_comprehension_py310.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/nested_async_comprehe ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..467, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..111, is_async: true, decorator_list: [], name: Identifier { id: Name("f"), range: 54..55, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 55..57, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,16 +37,20 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 59..111, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 66..111, elt: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 67..92, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -49,8 +59,10 @@ Module( generators: [ Comprehension { range: 70..91, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..81, id: Name("x"), ctx: Store, @@ -58,9 +70,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 85..91, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..88, id: Name("foo"), ctx: Load, @@ -68,9 +82,11 @@ Module( ), arguments: Arguments { range: 88..91, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..90, id: Name("n"), ctx: Load, @@ -90,8 +106,10 @@ Module( generators: [ Comprehension { range: 93..110, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 97..98, id: Name("n"), ctx: Store, @@ -99,9 +117,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 102..110, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..107, id: Name("range"), ctx: Load, @@ -109,9 +129,11 @@ Module( ), arguments: Arguments { range: 107..110, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 108..109, value: Int( 3, @@ -137,16 +159,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 122..192, is_async: true, decorator_list: [], name: Identifier { id: Name("g"), range: 132..133, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 133..135, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -157,16 +184,20 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 137..192, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 144..192, elt: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 145..173, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("x"), ctx: Load, @@ -174,6 +205,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 149..150, value: Int( 1, @@ -183,8 +215,10 @@ Module( generators: [ Comprehension { range: 151..172, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 161..162, id: Name("x"), ctx: Store, @@ -192,9 +226,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 166..172, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..169, id: Name("foo"), ctx: Load, @@ -202,9 +238,11 @@ Module( ), arguments: Arguments { range: 169..172, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..171, id: Name("n"), ctx: Load, @@ -224,8 +262,10 @@ Module( generators: [ Comprehension { range: 174..191, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 178..179, id: Name("n"), ctx: Store, @@ -233,9 +273,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 183..191, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 183..188, id: Name("range"), ctx: Load, @@ -243,9 +285,11 @@ Module( ), arguments: Arguments { range: 188..191, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 189..190, value: Int( 3, @@ -271,16 +315,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 200..267, is_async: true, decorator_list: [], name: Identifier { id: Name("h"), range: 210..211, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 211..213, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -291,16 +340,20 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 215..267, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 222..267, elt: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 223..248, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 224..225, id: Name("x"), ctx: Load, @@ -309,8 +362,10 @@ Module( generators: [ Comprehension { range: 226..247, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..237, id: Name("x"), ctx: Store, @@ -318,9 +373,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 241..247, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 241..244, id: Name("foo"), ctx: Load, @@ -328,9 +385,11 @@ Module( ), arguments: Arguments { range: 244..247, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..246, id: Name("n"), ctx: Load, @@ -350,8 +409,10 @@ Module( generators: [ Comprehension { range: 249..266, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 253..254, id: Name("n"), ctx: Store, @@ -359,9 +420,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 258..266, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 258..263, id: Name("range"), ctx: Load, @@ -369,9 +432,11 @@ Module( ), arguments: Arguments { range: 263..266, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 264..265, value: Int( 3, @@ -397,16 +462,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 277..371, is_async: true, decorator_list: [], name: Identifier { id: Name("i"), range: 287..288, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 288..290, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -417,20 +487,25 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 292..371, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 299..371, elt: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 300..352, elts: [ ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 301..328, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 302..303, id: Name("y"), ctx: Load, @@ -439,8 +514,10 @@ Module( generators: [ Comprehension { range: 304..327, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 314..315, id: Name("y"), ctx: Store, @@ -448,9 +525,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 319..327, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 319..324, id: Name("range"), ctx: Load, @@ -458,9 +537,11 @@ Module( ), arguments: Arguments { range: 324..327, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 325..326, value: Int( 1, @@ -480,9 +561,11 @@ Module( ), ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 330..351, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 331..332, id: Name("z"), ctx: Load, @@ -491,8 +574,10 @@ Module( generators: [ Comprehension { range: 333..350, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 337..338, id: Name("z"), ctx: Store, @@ -500,9 +585,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 342..350, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 342..347, id: Name("range"), ctx: Load, @@ -510,9 +597,11 @@ Module( ), arguments: Arguments { range: 347..350, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 348..349, value: Int( 2, @@ -538,8 +627,10 @@ Module( generators: [ Comprehension { range: 353..370, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 357..358, id: Name("x"), ctx: Store, @@ -547,9 +638,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 362..370, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 362..367, id: Name("range"), ctx: Load, @@ -557,9 +650,11 @@ Module( ), arguments: Arguments { range: 367..370, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 368..369, value: Int( 5, @@ -585,16 +680,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 372..466, is_async: true, decorator_list: [], name: Identifier { id: Name("j"), range: 382..383, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 383..385, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -605,20 +705,25 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 387..466, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 394..466, elt: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 395..447, elts: [ ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 396..417, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 397..398, id: Name("y"), ctx: Load, @@ -627,8 +732,10 @@ Module( generators: [ Comprehension { range: 399..416, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 403..404, id: Name("y"), ctx: Store, @@ -636,9 +743,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 408..416, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 408..413, id: Name("range"), ctx: Load, @@ -646,9 +755,11 @@ Module( ), arguments: Arguments { range: 413..416, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 414..415, value: Int( 1, @@ -668,9 +779,11 @@ Module( ), ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 419..446, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 420..421, id: Name("z"), ctx: Load, @@ -679,8 +792,10 @@ Module( generators: [ Comprehension { range: 422..445, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 432..433, id: Name("z"), ctx: Store, @@ -688,9 +803,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 437..445, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 437..442, id: Name("range"), ctx: Load, @@ -698,9 +815,11 @@ Module( ), arguments: Arguments { range: 442..445, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 443..444, value: Int( 2, @@ -726,8 +845,10 @@ Module( generators: [ Comprehension { range: 448..465, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 452..453, id: Name("x"), ctx: Store, @@ -735,9 +856,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 457..465, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 457..462, id: Name("range"), ctx: Load, @@ -745,9 +868,11 @@ Module( ), arguments: Arguments { range: 462..465, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 463..464, value: Int( 5, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@node_range_with_gaps.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@node_range_with_gaps.py.snap index e6364e6c4c..95c44e302d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@node_range_with_gaps.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@node_range_with_gaps.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/node_range_with_gaps. ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..41, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..7, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -33,16 +39,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 18..32, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 22..25, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 25..27, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -53,9 +64,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..32, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, }, ), @@ -66,16 +79,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 33..40, is_async: false, decorator_list: [], name: Identifier { id: Name("baz"), range: 37..40, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 40..40, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_declaration_at_module_level.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_declaration_at_module_level.py.snap index 8b63405c85..d49417620b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_declaration_at_module_level.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_declaration_at_module_level.py.snap @@ -7,30 +7,36 @@ input_file: crates/ruff_python_parser/resources/inline/err/nonlocal_declaration_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..25, body: [ Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 0..10, names: [ Identifier { id: Name("x"), range: 9..10, + node_index: AtomicNodeIndex(..), }, ], }, ), Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 11..24, names: [ Identifier { id: Name("x"), range: 20..21, + node_index: AtomicNodeIndex(..), }, Identifier { id: Name("y"), range: 23..24, + node_index: AtomicNodeIndex(..), }, ], }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_empty.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_empty.py.snap index 67c9ca6335..dde2775dc3 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_empty.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_empty.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/nonlocal_stmt_empty.p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..22, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..21, is_async: false, decorator_list: [], name: Identifier { id: Name("_"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 5..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,6 +37,7 @@ Module( body: [ Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 13..21, names: [], }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_expression.py.snap index b5d768d9a3..739b49643a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_expression.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/nonlocal_stmt_express ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..28, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..27, is_async: false, decorator_list: [], name: Identifier { id: Name("_"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 5..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,24 +37,29 @@ Module( body: [ Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 13..23, names: [ Identifier { id: Name("x"), range: 22..23, + node_index: AtomicNodeIndex(..), }, ], }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..27, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 24..27, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 26..27, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_trailing_comma.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_trailing_comma.py.snap index ee76a9c939..10cedaf7ba 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_trailing_comma.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@nonlocal_stmt_trailing_comma.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/nonlocal_stmt_trailin ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..59, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..58, is_async: false, decorator_list: [], name: Identifier { id: Name("_"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 5..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,32 +37,38 @@ Module( body: [ Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 13..23, names: [], }, ), Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 28..39, names: [ Identifier { id: Name("x"), range: 37..38, + node_index: AtomicNodeIndex(..), }, ], }, ), Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 44..58, names: [ Identifier { id: Name("x"), range: 53..54, + node_index: AtomicNodeIndex(..), }, Identifier { id: Name("y"), range: 56..57, + node_index: AtomicNodeIndex(..), }, ], }, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_missing_annotation.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_missing_annotation.py.snap index b0d2dec14a..f23ebd2f93 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_missing_annotation.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_missing_annotation.py.snap @@ -1,36 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/param_missing_annotation.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..35, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..16, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..11, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..10, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..10, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -45,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..16, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 13..16, }, ), @@ -58,25 +68,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 17..34, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 21..24, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 24..29, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 25..27, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 25..27, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 25..26, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -91,9 +109,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 31..34, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 31..34, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_missing_default.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_missing_default.py.snap index f263e09822..ee03c9a0a6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_missing_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_missing_default.py.snap @@ -1,36 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/param_missing_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..41, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..16, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..11, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..10, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -45,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..16, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 13..16, }, ), @@ -58,29 +68,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 17..40, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 21..24, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 24..35, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 25..33, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 25..31, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 25..26, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..31, id: Name("int"), ctx: Load, @@ -99,9 +118,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 37..40, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 37..40, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_annotation.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_annotation.py.snap index d799a78939..779f868a44 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_annotation.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_annotation.py.snap @@ -7,36 +7,47 @@ input_file: crates/ruff_python_parser/resources/inline/err/param_with_invalid_an ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..81, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..23, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..18, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..17, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 8..11, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 13..17, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -58,9 +69,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..23, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 20..23, }, ), @@ -71,33 +84,43 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 24..52, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 28..31, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 31..47, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 32..46, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 32..46, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 32..35, + node_index: AtomicNodeIndex(..), }, annotation: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 37..46, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..46, id: Name("int"), ctx: Load, @@ -119,9 +142,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..52, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 49..52, }, ), @@ -132,29 +157,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 53..80, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 57..60, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 60..75, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 61..67, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 61..67, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 61..64, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("x"), ctx: Load, @@ -166,11 +200,14 @@ Module( }, ParameterWithDefault { range: 71..74, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 71..74, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("int"), range: 71..74, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -185,9 +222,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 77..80, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 77..80, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_default.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_default.py.snap index 6bbc3b41f5..bec69b1894 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_default.py.snap @@ -1,45 +1,55 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/param_with_invalid_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..68, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..20, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..15, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..14, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 10..14, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..14, id: Name("int"), ctx: Load, @@ -59,9 +69,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..20, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, }, ), @@ -72,34 +84,44 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 21..43, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 25..28, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 28..38, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 29..37, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 29..30, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 29..30, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 32..36, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..36, id: Name("int"), ctx: Load, @@ -119,9 +141,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 40..43, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 40..43, }, ), @@ -132,35 +156,45 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..67, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 48..51, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 51..62, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 52..61, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 52..53, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 52..53, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 54..61, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("y"), ctx: Load, @@ -180,9 +214,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 64..67, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 64..67, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_star_annotation.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_star_annotation.py.snap index 13eeeed689..9360cfde29 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_star_annotation.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_invalid_star_annotation.py.snap @@ -7,35 +7,45 @@ input_file: crates/ruff_python_parser/resources/inline/err/param_with_invalid_st ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..150, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..22, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..17, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 8..16, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 9..13, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 15..16, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..16, id: Name(""), ctx: Invalid, @@ -54,9 +64,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), @@ -67,34 +79,44 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 23..57, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 27..30, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 30..52, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 31..51, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 32..36, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 39..50, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 40..50, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..45, id: Name("tuple"), ctx: Load, @@ -102,6 +124,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..49, id: Name("int"), ctx: Load, @@ -123,9 +146,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..57, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 54..57, }, ), @@ -136,36 +161,46 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 58..90, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 62..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..85, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 66..84, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 67..71, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 73..84, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 74..84, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..77, id: Name("int"), ctx: Load, @@ -173,6 +208,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..84, id: Name("str"), ctx: Load, @@ -194,9 +230,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 87..90, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 87..90, }, ), @@ -207,35 +245,45 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 91..120, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 95..98, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 98..115, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 99..114, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 100..104, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 106..114, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 107..114, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..114, id: Name("x"), ctx: Load, @@ -257,9 +305,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 117..120, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 117..120, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_star_annotation_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_star_annotation_py310.py.snap index ef87ca461f..224824a9e7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_star_annotation_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@param_with_star_annotation_py310.py.snap @@ -7,35 +7,45 @@ input_file: crates/ruff_python_parser/resources/inline/err/param_with_star_annot ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..69, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..68, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 48..51, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 51..63, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 52..62, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 53..57, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 59..62, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..62, id: Name("Ts"), ctx: Load, @@ -54,9 +64,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 65..68, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 65..68, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_duplicate_names.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_duplicate_names.py.snap index 50e5e76378..9e0f94fdad 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_duplicate_names.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_duplicate_names.py.snap @@ -7,29 +7,38 @@ input_file: crates/ruff_python_parser/resources/inline/err/params_duplicate_name ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..42, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..41, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..36, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..9, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -37,17 +46,21 @@ Module( }, ParameterWithDefault { range: 11..15, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 11..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 11..12, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..15, value: Int( 10, @@ -60,9 +73,11 @@ Module( vararg: Some( Parameter { range: 17..19, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 18..19, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -70,11 +85,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 21..22, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 21..22, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 21..22, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -82,15 +100,19 @@ Module( }, ParameterWithDefault { range: 24..30, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 24..30, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 24..25, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..30, id: Name("str"), ctx: Load, @@ -104,9 +126,11 @@ Module( kwarg: Some( Parameter { range: 32..35, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 34..35, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -116,9 +140,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 38..41, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 38..41, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_expected_after_star_separator.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_expected_after_star_separator.py.snap index 9a1f540021..c2fdb7f4d5 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_expected_after_star_separator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_expected_after_star_separator.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_expected_after_star_separator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..98, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..15, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..10, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -32,9 +37,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..15, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 12..15, }, ), @@ -45,16 +52,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 16..32, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 20..23, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 23..27, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -65,9 +77,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..32, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, }, ), @@ -78,25 +92,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 33..51, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 37..40, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 40..46, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 41..42, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 41..42, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 41..42, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -111,9 +133,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 48..51, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 48..51, }, ), @@ -124,25 +148,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 52..71, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 56..59, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 59..66, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 60..61, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 60..61, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 60..61, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -157,9 +189,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..71, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 68..71, }, ), @@ -170,16 +204,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 72..97, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 76..79, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 79..92, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -187,9 +226,11 @@ Module( kwarg: Some( Parameter { range: 83..91, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 85..91, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -199,9 +240,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 94..97, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 94..97, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_kwarg_after_star_separator.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_kwarg_after_star_separator.py.snap index 3decf036cf..71846f8fc7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_kwarg_after_star_separator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_kwarg_after_star_separator.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_kwarg_after_star_separator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..26, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..25, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..20, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -29,9 +34,11 @@ Module( kwarg: Some( Parameter { range: 11..19, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 13..19, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -41,9 +48,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..25, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 22..25, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_kwargs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_kwargs.py.snap index 6fa8e4a41d..f26f826c50 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_kwargs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_kwargs.py.snap @@ -1,36 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_multiple_kwargs.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..38, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..37, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..32, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..9, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -42,9 +50,11 @@ Module( kwarg: Some( Parameter { range: 22..31, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs2"), range: 24..31, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -54,9 +64,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 34..37, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 34..37, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_slash_separator.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_slash_separator.py.snap index 5c081e0e49..5bbcc79890 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_slash_separator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_slash_separator.py.snap @@ -1,35 +1,43 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_multiple_slash_separator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..53, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..24, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..19, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 8..9, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -39,11 +47,14 @@ Module( args: [ ParameterWithDefault { range: 17..18, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 17..18, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 17..18, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -58,9 +69,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..24, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 21..24, }, ), @@ -71,24 +84,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 25..52, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 29..32, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 32..47, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 33..34, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 33..34, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 33..34, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -98,11 +119,14 @@ Module( args: [ ParameterWithDefault { range: 39..40, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 39..40, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 39..40, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -110,11 +134,14 @@ Module( }, ParameterWithDefault { range: 42..43, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 42..43, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 42..43, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -129,9 +156,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..52, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 49..52, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_star_separator.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_star_separator.py.snap index 68c9459f96..9e2ccfb2c9 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_star_separator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_star_separator.py.snap @@ -1,36 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_multiple_star_separator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..53, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..24, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..19, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..9, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -41,11 +49,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 17..18, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 17..18, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 17..18, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -58,9 +69,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..24, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 21..24, }, ), @@ -71,25 +84,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 25..52, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 29..32, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 32..47, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 33..34, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 33..34, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 33..34, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -100,11 +121,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 39..40, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 39..40, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 39..40, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -112,11 +136,14 @@ Module( }, ParameterWithDefault { range: 42..43, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 42..43, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 42..43, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -129,9 +156,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..52, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 49..52, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_varargs.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_varargs.py.snap index 4e350369bf..a8a26d73bc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_varargs.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_multiple_varargs.py.snap @@ -1,36 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_multiple_varargs.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..136, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..28, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..23, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..9, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -40,9 +48,11 @@ Module( vararg: Some( Parameter { range: 14..19, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 15..19, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -50,11 +60,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 21..22, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 21..22, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 21..22, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -67,9 +80,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -80,25 +95,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 63..97, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 67..70, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 70..92, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 71..72, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 71..72, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 71..72, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -108,9 +131,11 @@ Module( vararg: Some( Parameter { range: 74..80, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args1"), range: 75..80, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -118,11 +143,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 90..91, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 90..91, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 90..91, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -135,9 +163,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 94..97, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 94..97, }, ), @@ -148,25 +178,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 98..135, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 102..105, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 105..130, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 106..107, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 106..107, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 106..107, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -176,9 +214,11 @@ Module( vararg: Some( Parameter { range: 109..115, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args1"), range: 110..115, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -186,11 +226,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 117..118, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 117..118, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 117..118, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -198,11 +241,14 @@ Module( }, ParameterWithDefault { range: 120..121, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 120..121, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 120..121, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -215,9 +261,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 132..135, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 132..135, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_no_arg_before_slash.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_no_arg_before_slash.py.snap index 0a3233a0be..be7f6b1b35 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_no_arg_before_slash.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_no_arg_before_slash.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_no_arg_before_slash.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..35, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..15, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..10, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -32,9 +37,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..15, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 12..15, }, ), @@ -45,25 +52,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 16..34, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 20..23, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 23..29, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 27..28, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 27..28, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 27..28, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -78,9 +93,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 31..34, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 31..34, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_non_default_after_default.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_non_default_after_default.py.snap index b8ce121d93..4e01047ebb 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_non_default_after_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_non_default_after_default.py.snap @@ -1,42 +1,51 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_non_default_after_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..30, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..29, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..24, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..12, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..12, value: Int( 10, @@ -47,11 +56,14 @@ Module( }, ParameterWithDefault { range: 14..15, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 14..15, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 14..15, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -59,15 +71,19 @@ Module( }, ParameterWithDefault { range: 17..23, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 17..23, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 17..18, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..23, id: Name("int"), ctx: Load, @@ -86,9 +102,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..29, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 26..29, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_star_after_slash.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_star_after_slash.py.snap index e1bb0c58b9..c2db1084e7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_star_after_slash.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_star_after_slash.py.snap @@ -1,35 +1,42 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_star_after_slash.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..105, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..19, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..14, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 8..10, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 9..10, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -41,9 +48,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..19, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 16..19, }, ), @@ -54,24 +63,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 20..48, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 24..27, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 27..43, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 28..29, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 28..29, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 28..29, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -82,9 +99,11 @@ Module( vararg: Some( Parameter { range: 31..36, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 32..36, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -92,11 +111,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 38..39, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 38..39, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 38..39, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -109,9 +131,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 45..48, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 45..48, }, ), @@ -122,24 +146,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 49..73, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 53..56, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 56..68, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 57..58, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 57..58, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 57..58, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -151,11 +183,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 66..67, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 66..67, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 66..67, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -168,9 +203,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 70..73, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 70..73, }, ), @@ -181,24 +218,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 74..104, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 78..81, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 81..99, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 82..83, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 82..83, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 82..83, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -210,11 +255,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 88..89, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 88..89, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 88..89, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -222,11 +270,14 @@ Module( }, ParameterWithDefault { range: 91..92, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 91..92, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 91..92, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -234,11 +285,14 @@ Module( }, ParameterWithDefault { range: 97..98, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 97..98, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 97..98, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -251,9 +305,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 101..104, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 101..104, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_star_separator_after_star_param.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_star_separator_after_star_param.py.snap index 0521d51896..aa5149155a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_star_separator_after_star_param.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_star_separator_after_star_param.py.snap @@ -1,36 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_star_separator_after_star_param.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..61, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..28, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..23, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..9, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -40,9 +48,11 @@ Module( vararg: Some( Parameter { range: 11..16, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 12..16, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -50,11 +60,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 21..22, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 21..22, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 21..22, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -67,9 +80,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -80,25 +95,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 29..60, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 33..36, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 36..55, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 37..38, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 37..38, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 37..38, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -108,9 +131,11 @@ Module( vararg: Some( Parameter { range: 40..45, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 41..45, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -118,11 +143,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 47..48, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 47..48, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 47..48, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -130,11 +158,14 @@ Module( }, ParameterWithDefault { range: 50..51, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 50..51, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 50..51, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -147,9 +178,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..60, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 57..60, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_var_keyword_with_default.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_var_keyword_with_default.py.snap index 9bde14d963..f56f7d96ab 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_var_keyword_with_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_var_keyword_with_default.py.snap @@ -1,36 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_var_keyword_with_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..43, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..36, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..20, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..9, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -42,9 +50,11 @@ Module( kwarg: Some( Parameter { range: 11..19, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 13..19, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -54,20 +64,24 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..36, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 20..36, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 21..24, value: StringLiteralValue { inner: Single( StringLiteral { range: 21..24, + node_index: AtomicNodeIndex(..), value: "b", flags: StringLiteralFlags { quote_style: Single, @@ -82,6 +96,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 26..27, value: Int( 1, @@ -93,11 +108,13 @@ Module( key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, value: StringLiteralValue { inner: Single( StringLiteral { range: 29..32, + node_index: AtomicNodeIndex(..), value: "c", flags: StringLiteralFlags { quote_style: Single, @@ -112,6 +129,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 34..35, value: Int( 2, @@ -129,9 +147,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 39..42, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 39..42, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_var_positional_with_default.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_var_positional_with_default.py.snap index cafb4857d2..5ca631e7d1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_var_positional_with_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@params_var_positional_with_default.py.snap @@ -1,36 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/params_var_positional_with_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..30, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..23, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..17, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..9, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -40,9 +48,11 @@ Module( vararg: Some( Parameter { range: 11..16, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 12..16, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -54,13 +64,16 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..23, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 17..23, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 1, @@ -69,6 +82,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..22, value: Int( 2, @@ -87,9 +101,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..29, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 26..29, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@parenthesized_context_manager_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@parenthesized_context_manager_py38.py.snap index 0cc6748cbb..ca32f57b18 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@parenthesized_context_manager_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@parenthesized_context_manager_py38.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/err/parenthesized_context ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..126, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 43..73, is_async: false, items: [ WithItem { range: 49..57, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..52, id: Name("foo"), ctx: Load, @@ -26,6 +30,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Store, @@ -35,8 +40,10 @@ Module( }, WithItem { range: 59..67, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..62, id: Name("bar"), ctx: Load, @@ -45,6 +52,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("y"), ctx: Store, @@ -56,9 +64,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 70..73, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 70..73, }, ), @@ -69,13 +79,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 74..99, is_async: false, items: [ WithItem { range: 80..83, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..83, id: Name("foo"), ctx: Load, @@ -85,8 +98,10 @@ Module( }, WithItem { range: 85..93, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..88, id: Name("bar"), ctx: Load, @@ -95,6 +110,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..93, id: Name("y"), ctx: Store, @@ -106,9 +122,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 96..99, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 96..99, }, ), @@ -119,13 +137,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 100..125, is_async: false, items: [ WithItem { range: 106..114, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 106..109, id: Name("foo"), ctx: Load, @@ -134,6 +155,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..114, id: Name("x"), ctx: Store, @@ -143,8 +165,10 @@ Module( }, WithItem { range: 116..119, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..119, id: Name("bar"), ctx: Load, @@ -156,9 +180,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 122..125, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 122..125, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@parenthesized_kwarg_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@parenthesized_kwarg_py38.py.snap index 4b55ae1a8a..90fb2c97da 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@parenthesized_kwarg_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@parenthesized_kwarg_py38.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/err/parenthesized_kwarg_p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..77, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..51, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 43..51, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("f"), ctx: Load, @@ -24,18 +28,22 @@ Module( ), arguments: Arguments { range: 44..51, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 45..50, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("a"), range: 46..47, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 49..50, value: Int( 1, @@ -51,12 +59,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 52..62, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 52..62, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..53, id: Name("f"), ctx: Load, @@ -64,18 +75,22 @@ Module( ), arguments: Arguments { range: 53..62, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 54..61, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("a"), range: 55..56, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 60..61, value: Int( 1, @@ -91,12 +106,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 63..76, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 63..76, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..64, id: Name("f"), ctx: Load, @@ -104,18 +122,22 @@ Module( ), arguments: Arguments { range: 64..76, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 66..75, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("a"), range: 68..69, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 74..75, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@pep701_f_string_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@pep701_f_string_py311.py.snap index 34308fc597..78be042c66 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@pep701_f_string_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@pep701_f_string_py311.py.snap @@ -7,34 +7,42 @@ input_file: crates/ruff_python_parser/resources/inline/err/pep701_f_string_py311 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..549, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..74, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 44..74, value: FStringValue { inner: Single( FString( FString { range: 44..74, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 46..58, + node_index: AtomicNodeIndex(..), value: "Magic wand: ", }, ), Interpolation( InterpolatedElement { range: 58..73, + node_index: AtomicNodeIndex(..), expression: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 60..71, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..63, id: Name("bag"), ctx: Load, @@ -42,11 +50,13 @@ Module( ), slice: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 64..70, value: StringLiteralValue { inner: Single( StringLiteral { range: 64..70, + node_index: AtomicNodeIndex(..), value: "wand", flags: StringLiteralFlags { quote_style: Single, @@ -82,32 +92,40 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 95..112, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 95..112, value: FStringValue { inner: Single( FString( FString { range: 95..112, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 97..111, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 98..110, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 98..107, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 98..102, value: StringLiteralValue { inner: Single( StringLiteral { range: 98..102, + node_index: AtomicNodeIndex(..), value: "\n", flags: StringLiteralFlags { quote_style: Single, @@ -122,15 +140,18 @@ Module( attr: Identifier { id: Name("join"), range: 103..107, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 107..110, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..109, id: Name("a"), ctx: Load, @@ -162,30 +183,37 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 148..220, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 148..220, value: FStringValue { inner: Single( FString( FString { range: 148..220, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 152..169, + node_index: AtomicNodeIndex(..), value: "A complex trick: ", }, ), Interpolation( InterpolatedElement { range: 169..217, + node_index: AtomicNodeIndex(..), expression: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 175..185, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 175..178, id: Name("bag"), ctx: Load, @@ -193,11 +221,13 @@ Module( ), slice: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 179..184, value: StringLiteralValue { inner: Single( StringLiteral { range: 179..184, + node_index: AtomicNodeIndex(..), value: "bag", flags: StringLiteralFlags { quote_style: Single, @@ -233,84 +263,105 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 221..254, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 221..254, value: FStringValue { inner: Single( FString( FString { range: 221..254, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 223..253, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 224..252, value: FStringValue { inner: Single( FString( FString { range: 224..252, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 226..251, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 227..250, value: FStringValue { inner: Single( FString( FString { range: 227..250, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 229..249, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 230..248, value: FStringValue { inner: Single( FString( FString { range: 230..248, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 232..247, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 233..246, value: FStringValue { inner: Single( FString( FString { range: 233..246, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 235..245, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 236..244, value: FStringValue { inner: Single( FString( FString { range: 236..244, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 238..243, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 239..242, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 239..240, value: Int( 1, @@ -320,6 +371,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 241..242, value: Int( 1, @@ -434,38 +486,47 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 276..310, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 276..310, value: FStringValue { inner: Single( FString( FString { range: 276..310, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 278..303, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 279..302, value: FStringValue { inner: Single( FString( FString { range: 279..302, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 283..293, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 284..292, value: StringLiteralValue { inner: Single( StringLiteral { range: 284..292, + node_index: AtomicNodeIndex(..), value: "nested", flags: StringLiteralFlags { quote_style: Double, @@ -485,6 +546,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 293..299, + node_index: AtomicNodeIndex(..), value: " inner", }, ), @@ -508,6 +570,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 303..309, + node_index: AtomicNodeIndex(..), value: " outer", }, ), @@ -527,27 +590,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 336..359, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 336..359, value: FStringValue { inner: Single( FString( FString { range: 336..359, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 338..343, + node_index: AtomicNodeIndex(..), value: "test ", }, ), Interpolation( InterpolatedElement { range: 343..353, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 344..345, id: Name("a"), ctx: Load, @@ -561,6 +630,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 353..358, + node_index: AtomicNodeIndex(..), value: " more", }, ), @@ -580,33 +650,41 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 403..422, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 403..422, value: FStringValue { inner: Single( FString( FString { range: 403..422, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 407..419, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 408..418, value: FStringValue { inner: Single( FString( FString { range: 408..418, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 412..415, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 413..414, id: Name("x"), ctx: Load, @@ -650,32 +728,40 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 468..502, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 468..502, value: FStringValue { inner: Single( FString( FString { range: 468..502, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 470..501, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 471..500, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 471..480, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 471..475, value: StringLiteralValue { inner: Single( StringLiteral { range: 471..475, + node_index: AtomicNodeIndex(..), value: "\n", flags: StringLiteralFlags { quote_style: Single, @@ -690,24 +776,29 @@ Module( attr: Identifier { id: Name("join"), range: 476..480, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 480..500, + node_index: AtomicNodeIndex(..), args: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 481..499, elts: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 482..486, value: StringLiteralValue { inner: Single( StringLiteral { range: 482..486, + node_index: AtomicNodeIndex(..), value: "\t", flags: StringLiteralFlags { quote_style: Single, @@ -721,11 +812,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 488..492, value: StringLiteralValue { inner: Single( StringLiteral { range: 488..492, + node_index: AtomicNodeIndex(..), value: "\u{b}", flags: StringLiteralFlags { quote_style: Single, @@ -739,11 +832,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 494..498, value: StringLiteralValue { inner: Single( StringLiteral { range: 494..498, + node_index: AtomicNodeIndex(..), value: "\r", flags: StringLiteralFlags { quote_style: Single, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@pos_only_py37.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@pos_only_py37.py.snap index adb8b30bc1..6e1bdfaf6e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@pos_only_py37.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@pos_only_py37.py.snap @@ -7,28 +7,37 @@ input_file: crates/ruff_python_parser/resources/inline/err/pos_only_py37.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..136, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 43..61, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 47..50, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 50..56, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 51..52, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 51..52, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 51..52, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -44,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..61, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, }, ), @@ -57,24 +68,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 62..86, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 66..69, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 69..81, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 70..71, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 70..71, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 70..71, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -84,11 +103,14 @@ Module( args: [ ParameterWithDefault { range: 76..77, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 76..77, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 76..77, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -103,9 +125,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..86, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 83..86, }, ), @@ -116,24 +140,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 87..115, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 91..94, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 94..110, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 95..96, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 95..96, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 95..96, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -144,9 +176,11 @@ Module( vararg: Some( Parameter { range: 98..103, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 99..103, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -154,11 +188,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 108..109, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 108..109, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 108..109, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -171,9 +208,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 112..115, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 112..115, }, ), @@ -184,25 +223,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 116..135, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 120..123, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 123..130, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 124..125, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 124..125, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 124..125, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -217,9 +264,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 132..135, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 132..135, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_from_without_exc.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_from_without_exc.py.snap index bfd31fbf6d..d6a06bfe2f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_from_without_exc.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_from_without_exc.py.snap @@ -7,15 +7,18 @@ input_file: crates/ruff_python_parser/resources/inline/err/raise_stmt_from_witho ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..31, body: [ Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 0..14, exc: None, cause: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..14, id: Name("exc"), ctx: Load, @@ -26,11 +29,13 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 15..30, exc: None, cause: Some( NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 26..30, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_invalid_cause.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_invalid_cause.py.snap index 5d6d3eef90..969eb0b526 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_invalid_cause.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_invalid_cause.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/raise_stmt_invalid_cause.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..57, body: [ Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 0..15, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -25,9 +27,11 @@ Module( cause: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 13..15, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("y"), ctx: Load, @@ -41,10 +45,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 16..36, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -54,10 +60,12 @@ Module( cause: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 29..36, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("y"), ctx: Load, @@ -71,10 +79,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 37..51, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("x"), ctx: Load, @@ -84,6 +94,7 @@ Module( cause: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 50..51, id: Name("y"), ctx: Load, @@ -94,9 +105,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 55..56, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 55..56, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_invalid_exc.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_invalid_exc.py.snap index 3bb6f03074..fc1d86ea86 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_invalid_exc.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_invalid_exc.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/raise_stmt_invalid_exc.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..36, body: [ Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 0..8, exc: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 6..8, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Load, @@ -33,14 +36,17 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 9..22, exc: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 15..22, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("x"), ctx: Load, @@ -55,10 +61,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 23..30, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Load, @@ -70,9 +78,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 34..35, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 34..35, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_unparenthesized_tuple_cause.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_unparenthesized_tuple_cause.py.snap index c000ffe470..d25483b1bc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_unparenthesized_tuple_cause.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_unparenthesized_tuple_cause.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/raise_stmt_unparenthesized_tuple_cause.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..34, body: [ Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 0..15, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -25,10 +27,12 @@ Module( cause: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 13..15, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("y"), ctx: Load, @@ -44,10 +48,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 16..33, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -57,10 +63,12 @@ Module( cause: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 29..33, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("y"), ctx: Load, @@ -68,6 +76,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_unparenthesized_tuple_exc.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_unparenthesized_tuple_exc.py.snap index a5bd41c66e..36f4db810c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_unparenthesized_tuple_exc.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@raise_stmt_unparenthesized_tuple_exc.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/raise_stmt_unparenthesized_tuple_exc.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..38, body: [ Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 0..8, exc: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 6..8, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -36,14 +39,17 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 9..19, exc: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 15..19, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..16, id: Name("x"), ctx: Load, @@ -51,6 +57,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("y"), ctx: Load, @@ -67,14 +74,17 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 20..37, exc: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 26..30, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("x"), ctx: Load, @@ -82,6 +92,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("y"), ctx: Load, @@ -96,6 +107,7 @@ Module( cause: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token.py.snap index 9db9481b22..aec52e3b45 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lex_logical_token.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..979, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 48..59, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 51..59, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..55, id: Name("call"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), arguments: Arguments { range: 55..59, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..59, id: Name("foo"), ctx: Load, @@ -43,16 +49,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 60..79, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 64..67, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 67..69, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -63,6 +74,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 75..79, }, ), @@ -71,12 +83,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 113..152, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 116..124, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..120, id: Name("call"), ctx: Load, @@ -84,9 +99,11 @@ Module( ), arguments: Arguments { range: 120..124, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 121..124, id: Name("foo"), ctx: Load, @@ -100,16 +117,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 129..152, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 133..136, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 136..138, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -120,6 +142,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 148..152, }, ), @@ -132,12 +155,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 228..269, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 231..239, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 231..235, id: Name("call"), ctx: Load, @@ -145,9 +171,11 @@ Module( ), arguments: Arguments { range: 235..239, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..239, id: Name("foo"), ctx: Load, @@ -161,16 +189,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 246..269, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 250..253, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 253..255, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -181,6 +214,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 265..269, }, ), @@ -193,12 +227,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 344..392, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 347..355, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 347..351, id: Name("call"), ctx: Load, @@ -206,9 +243,11 @@ Module( ), arguments: Arguments { range: 351..355, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 352..355, id: Name("foo"), ctx: Load, @@ -222,16 +261,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 369..392, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 373..376, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 376..378, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -242,6 +286,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 388..392, }, ), @@ -254,12 +299,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 453..499, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 456..472, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 456..460, id: Name("call"), ctx: Load, @@ -267,9 +315,11 @@ Module( ), arguments: Arguments { range: 460..472, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 461..464, id: Name("foo"), ctx: Load, @@ -277,10 +327,12 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 466..471, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 467..468, id: Name("a"), ctx: Load, @@ -288,6 +340,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 470..471, id: Name("b"), ctx: Load, @@ -305,16 +358,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 476..499, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 480..483, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 483..485, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -325,6 +383,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 495..499, }, ), @@ -337,12 +396,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 564..611, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 567..583, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 567..571, id: Name("call"), ctx: Load, @@ -350,9 +412,11 @@ Module( ), arguments: Arguments { range: 571..583, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 572..575, id: Name("foo"), ctx: Load, @@ -360,10 +424,12 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 577..582, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 578..579, id: Name("a"), ctx: Load, @@ -371,6 +437,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 581..582, id: Name("b"), ctx: Load, @@ -388,16 +455,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 588..611, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 592..595, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 595..597, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -408,6 +480,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 607..611, }, ), @@ -420,12 +493,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 772..824, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 775..796, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 775..779, id: Name("call"), ctx: Load, @@ -433,9 +509,11 @@ Module( ), arguments: Arguments { range: 779..796, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 780..783, id: Name("foo"), ctx: Load, @@ -443,10 +521,12 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 785..794, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 786..787, id: Name("a"), ctx: Load, @@ -454,6 +534,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 793..794, id: Name("b"), ctx: Load, @@ -471,16 +552,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 801..824, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 805..808, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 808..810, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -491,6 +577,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 820..824, }, ), @@ -503,12 +590,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 887..933, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 890..905, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 890..894, id: Name("call"), ctx: Load, @@ -516,27 +606,33 @@ Module( ), arguments: Arguments { range: 894..905, + node_index: AtomicNodeIndex(..), args: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 895..905, value: FStringValue { inner: Single( FString( FString { range: 895..905, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 897..903, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 903..905, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 904..905, id: Name("x"), ctx: Load, @@ -567,16 +663,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 910..933, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 914..917, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 917..919, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -587,6 +688,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 929..933, }, ), @@ -599,12 +701,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 936..956, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 939..956, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 939..943, id: Name("call"), ctx: Load, @@ -612,15 +717,18 @@ Module( ), arguments: Arguments { range: 943..956, + node_index: AtomicNodeIndex(..), args: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 944..951, value: FStringValue { inner: Single( FString( FString { range: 944..951, + node_index: AtomicNodeIndex(..), elements: [], flags: FStringFlags { quote_style: Double, @@ -644,16 +752,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 956..979, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 960..963, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 963..965, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -664,6 +777,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 975..979, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token_mac_eol.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token_mac_eol.py.snap index e9879e5ba3..065645a7ac 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token_mac_eol.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token_mac_eol.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lex_logical_token_mac ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..46, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..46, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 3..19, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..7, id: Name("call"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), arguments: Arguments { range: 7..19, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..11, id: Name("foo"), ctx: Load, @@ -34,10 +40,12 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 13..18, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("a"), ctx: Load, @@ -45,6 +53,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("b"), ctx: Load, @@ -62,16 +71,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 23..46, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 27..30, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 30..32, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -82,6 +96,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 42..46, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token_windows_eol.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token_windows_eol.py.snap index 31bb3a87f2..37943705bb 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token_windows_eol.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lex_logical_token_windows_eol.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lex_logical_token_win ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..50, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..48, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 3..20, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..7, id: Name("call"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), arguments: Arguments { range: 7..20, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..11, id: Name("foo"), ctx: Load, @@ -34,10 +40,12 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 13..18, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("a"), ctx: Load, @@ -45,6 +53,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("b"), ctx: Load, @@ -62,16 +71,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 24..48, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 28..31, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 31..33, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -82,6 +96,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 44..48, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__fstring_format_spec_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__fstring_format_spec_1.py.snap index bb98cde311..708cad03c7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__fstring_format_spec_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__fstring_format_spec_1.py.snap @@ -7,36 +7,44 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lexing/fstring_format ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..298, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 162..192, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 162..192, value: FStringValue { inner: Single( FString( FString { range: 162..192, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 164..171, + node_index: AtomicNodeIndex(..), value: "middle ", }, ), Interpolation( InterpolatedElement { range: 171..191, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 172..180, value: StringLiteralValue { inner: Single( StringLiteral { range: 172..180, + node_index: AtomicNodeIndex(..), value: "string", flags: StringLiteralFlags { quote_style: Single, @@ -53,10 +61,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 181..191, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 181..191, + node_index: AtomicNodeIndex(..), value: " ", }, ), @@ -81,9 +91,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 192..198, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 192..198, id: Name("format"), ctx: Load, @@ -93,9 +105,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 199..203, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..203, id: Name("spec"), ctx: Load, @@ -105,32 +119,39 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 207..228, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 207..228, value: FStringValue { inner: Single( FString( FString { range: 207..228, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 209..216, + node_index: AtomicNodeIndex(..), value: "middle ", }, ), Interpolation( InterpolatedElement { range: 216..228, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 217..225, value: StringLiteralValue { inner: Single( StringLiteral { range: 217..225, + node_index: AtomicNodeIndex(..), value: "string", flags: StringLiteralFlags { quote_style: Single, @@ -147,10 +168,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 226..228, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 226..228, + node_index: AtomicNodeIndex(..), value: "\\", }, ), @@ -175,14 +198,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 237..250, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 237..250, value: StringLiteralValue { inner: Single( StringLiteral { range: 237..250, + node_index: AtomicNodeIndex(..), value: "format spec", flags: StringLiteralFlags { quote_style: Single, @@ -198,32 +224,39 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 253..285, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 253..285, value: FStringValue { inner: Single( FString( FString { range: 253..285, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 255..262, + node_index: AtomicNodeIndex(..), value: "middle ", }, ), Interpolation( InterpolatedElement { range: 262..284, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 263..271, value: StringLiteralValue { inner: Single( StringLiteral { range: 263..271, + node_index: AtomicNodeIndex(..), value: "string", flags: StringLiteralFlags { quote_style: Single, @@ -240,10 +273,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 272..284, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 272..284, + node_index: AtomicNodeIndex(..), value: "\\ ", }, ), @@ -268,9 +303,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 285..291, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 285..291, id: Name("format"), ctx: Load, @@ -280,9 +317,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 292..296, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 292..296, id: Name("spec"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__line_continuation_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__line_continuation_1.py.snap index abeaef0f13..ae9e105919 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__line_continuation_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__line_continuation_1.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lexing/line_continuat ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..36, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..13, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..13, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("a"), ctx: Load, @@ -34,6 +40,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("b"), ctx: Load, @@ -48,16 +55,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 16..35, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 20..23, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 23..25, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -68,6 +80,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 31..35, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__line_continuation_windows_eol.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__line_continuation_windows_eol.py.snap index 935f436e82..97fbdf8b65 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__line_continuation_windows_eol.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__line_continuation_windows_eol.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lexing/line_continuat ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..46, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..10, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("call"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), arguments: Arguments { range: 4..10, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("a"), ctx: Load, @@ -34,6 +40,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("b"), ctx: Load, @@ -48,16 +55,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 26..46, is_async: false, decorator_list: [], name: Identifier { id: Name("bar"), range: 30..33, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 33..35, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -68,6 +80,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 42..46, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_1.py.snap index efb2fecf82..4aa6298cab 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_1.py.snap @@ -7,31 +7,38 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lexing/triple_quoted_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..198, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 166..178, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 166..178, value: FStringValue { inner: Single( FString( FString { range: 166..178, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 170..176, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 176..178, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 177..178, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_2.py.snap index c8431a27c9..6a553051a5 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_2.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lexing/triple_quoted_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..183, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 167..183, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 167..183, value: FStringValue { inner: Single( FString( FString { range: 167..183, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 171..180, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 172..175, id: Name("foo"), ctx: Load, @@ -36,10 +42,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 176..180, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 176..180, + node_index: AtomicNodeIndex(..), value: ".3f\n", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_3.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_3.py.snap index e59c846c0f..2db1a776b1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_3.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@re_lexing__triple_quoted_fstring_3.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/invalid/re_lexing/triple_quoted_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..262, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 231..262, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 234..253, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 234..238, id: Name("call"), ctx: Load, @@ -24,21 +28,26 @@ Module( ), arguments: Arguments { range: 238..253, + node_index: AtomicNodeIndex(..), args: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 239..253, value: FStringValue { inner: Single( FString( FString { range: 239..253, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 243..250, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 244..245, id: Name("x"), ctx: Load, @@ -49,10 +58,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 246..250, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 246..250, + node_index: AtomicNodeIndex(..), value: ".3f\n", }, ), @@ -81,6 +92,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 258..262, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@rebound_comprehension_variable.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@rebound_comprehension_variable.py.snap index d4093c8839..e14ea1a654 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@rebound_comprehension_variable.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@rebound_comprehension_variable.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/inline/err/rebound_comprehension ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..342, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..28, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 0..28, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 2..8, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..3, id: Name("a"), ctx: Store, @@ -27,6 +32,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 7..8, value: Int( 0, @@ -38,8 +44,10 @@ Module( generators: [ Comprehension { range: 10..27, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("a"), ctx: Store, @@ -47,9 +55,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 19..27, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..24, id: Name("range"), ctx: Load, @@ -57,9 +67,11 @@ Module( ), arguments: Arguments { range: 24..27, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 25..26, value: Int( 0, @@ -81,15 +93,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..57, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 29..57, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 31..37, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 31..32, id: Name("a"), ctx: Store, @@ -97,6 +113,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 36..37, value: Int( 0, @@ -108,8 +125,10 @@ Module( generators: [ Comprehension { range: 39..56, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("a"), ctx: Store, @@ -117,9 +136,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 48..56, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..53, id: Name("range"), ctx: Load, @@ -127,9 +148,11 @@ Module( ), arguments: Arguments { range: 53..56, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 0, @@ -151,15 +174,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..91, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 58..91, key: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 60..66, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("a"), ctx: Store, @@ -167,6 +194,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 65..66, value: Int( 0, @@ -177,6 +205,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..72, id: Name("val"), ctx: Load, @@ -185,8 +214,10 @@ Module( generators: [ Comprehension { range: 73..90, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("a"), ctx: Store, @@ -194,9 +225,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 82..90, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..87, id: Name("range"), ctx: Load, @@ -204,9 +237,11 @@ Module( ), arguments: Arguments { range: 87..90, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 88..89, value: Int( 0, @@ -228,12 +263,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..125, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 92..125, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..96, id: Name("key"), ctx: Load, @@ -241,9 +279,11 @@ Module( ), value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 99..105, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("a"), ctx: Store, @@ -251,6 +291,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 104..105, value: Int( 0, @@ -262,8 +303,10 @@ Module( generators: [ Comprehension { range: 107..124, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 111..112, id: Name("a"), ctx: Store, @@ -271,9 +314,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 116..124, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..121, id: Name("range"), ctx: Load, @@ -281,9 +326,11 @@ Module( ), arguments: Arguments { range: 121..124, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..123, value: Int( 0, @@ -305,15 +352,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 126..154, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 126..154, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 128..134, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("a"), ctx: Store, @@ -321,6 +372,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 133..134, value: Int( 0, @@ -332,8 +384,10 @@ Module( generators: [ Comprehension { range: 136..153, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 140..141, id: Name("a"), ctx: Store, @@ -341,9 +395,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 145..153, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 145..150, id: Name("range"), ctx: Load, @@ -351,9 +407,11 @@ Module( ), arguments: Arguments { range: 150..153, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 151..152, value: Int( 0, @@ -376,19 +434,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 155..185, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 155..185, elt: List( ExprList { + node_index: AtomicNodeIndex(..), range: 156..166, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 158..164, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 158..159, id: Name("a"), ctx: Store, @@ -396,6 +459,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 163..164, value: Int( 0, @@ -411,8 +475,10 @@ Module( generators: [ Comprehension { range: 167..184, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..172, id: Name("a"), ctx: Store, @@ -420,9 +486,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 176..184, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 176..181, id: Name("range"), ctx: Load, @@ -430,9 +498,11 @@ Module( ), arguments: Arguments { range: 181..184, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 182..183, value: Int( 0, @@ -454,15 +524,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 186..233, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 186..233, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 188..194, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 188..189, id: Name("a"), ctx: Store, @@ -470,6 +544,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 193..194, value: Int( 0, @@ -481,8 +556,10 @@ Module( generators: [ Comprehension { range: 196..214, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 200..201, id: Name("b"), ctx: Store, @@ -490,9 +567,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 205..214, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 205..210, id: Name("range"), ctx: Load, @@ -500,9 +579,11 @@ Module( ), arguments: Arguments { range: 211..214, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 212..213, value: Int( 0, @@ -519,8 +600,10 @@ Module( }, Comprehension { range: 215..232, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 219..220, id: Name("a"), ctx: Store, @@ -528,9 +611,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 224..232, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 224..229, id: Name("range"), ctx: Load, @@ -538,9 +623,11 @@ Module( ), arguments: Arguments { range: 229..232, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 230..231, value: Int( 0, @@ -562,15 +649,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 234..281, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 234..281, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 236..242, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..237, id: Name("a"), ctx: Store, @@ -578,6 +669,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 241..242, value: Int( 0, @@ -589,8 +681,10 @@ Module( generators: [ Comprehension { range: 244..262, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 248..249, id: Name("a"), ctx: Store, @@ -598,9 +692,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 253..262, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 253..258, id: Name("range"), ctx: Load, @@ -608,9 +704,11 @@ Module( ), arguments: Arguments { range: 259..262, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 260..261, value: Int( 0, @@ -627,8 +725,10 @@ Module( }, Comprehension { range: 263..280, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 267..268, id: Name("b"), ctx: Store, @@ -636,9 +736,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 272..280, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 272..277, id: Name("range"), ctx: Load, @@ -646,9 +748,11 @@ Module( ), arguments: Arguments { range: 277..280, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 278..279, value: Int( 0, @@ -670,19 +774,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 282..341, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 282..341, elt: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 283..303, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 285..291, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 285..286, id: Name("a"), ctx: Store, @@ -690,6 +799,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 290..291, value: Int( 0, @@ -700,9 +810,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 295..301, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 295..296, id: Name("b"), ctx: Store, @@ -710,6 +822,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 300..301, value: Int( 1, @@ -726,8 +839,10 @@ Module( generators: [ Comprehension { range: 304..322, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 308..309, id: Name("a"), ctx: Store, @@ -735,9 +850,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 313..322, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 313..318, id: Name("range"), ctx: Load, @@ -745,9 +862,11 @@ Module( ), arguments: Arguments { range: 319..322, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 320..321, value: Int( 0, @@ -764,8 +883,10 @@ Module( }, Comprehension { range: 323..340, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 327..328, id: Name("b"), ctx: Store, @@ -773,9 +894,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 332..340, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 332..337, id: Name("range"), ctx: Load, @@ -783,9 +906,11 @@ Module( ), arguments: Arguments { range: 337..340, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 338..339, value: Int( 0, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@return_stmt_invalid_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@return_stmt_invalid_expr.py.snap index a6518b0d86..b93edc683b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@return_stmt_invalid_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@return_stmt_invalid_expr.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/err/return_stmt_invalid_e ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..74, body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 0..8, value: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 7..8, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..8, id: Name(""), ctx: Invalid, @@ -31,14 +35,17 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 9..23, value: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 16..23, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -52,13 +59,16 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 24..43, value: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 31..43, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 42..43, id: Name("x"), ctx: Load, @@ -71,10 +81,12 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 44..52, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("x"), ctx: Load, @@ -85,9 +97,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 56..57, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 56..57, value: Int( 1, @@ -98,18 +112,22 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 58..73, value: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 65..73, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 66..73, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("x"), ctx: Load, @@ -117,6 +135,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_and_compound_stmt_on_same_line.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_and_compound_stmt_on_same_line.py.snap index b1abaaa513..208ce1f1b0 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_and_compound_stmt_on_same_line.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_and_compound_stmt_on_same_line.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/simple_and_compound_stmt_on_same_line.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..17, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..1, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("a"), ctx: Load, @@ -24,9 +26,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 3..16, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("b"), ctx: Load, @@ -35,14 +39,17 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..16, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..16, id: Name("b"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_and_compound_stmt_on_same_line_in_block.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_and_compound_stmt_on_same_line_in_block.py.snap index 2973bbb41c..5c6e1ab082 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_and_compound_stmt_on_same_line_in_block.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_and_compound_stmt_on_same_line_in_block.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/simple_and_compound_stmt_on_same_line_in_block.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..59, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..13, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 3..7, value: true, }, @@ -22,6 +24,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -31,9 +34,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 14..28, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 17..22, value: false, }, @@ -41,6 +46,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 24..28, }, ), @@ -50,9 +56,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 29..42, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 32..36, value: true, }, @@ -60,6 +68,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 38..42, }, ), @@ -69,9 +78,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 44..58, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 47..52, value: false, }, @@ -79,6 +90,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 54..58, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_stmts_on_same_line.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_stmts_on_same_line.py.snap index 9bfaeb67a2..3e2eb8febc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_stmts_on_same_line.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_stmts_on_same_line.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/simple_stmts_on_same_line.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..53, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..1, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("a"), ctx: Load, @@ -24,9 +26,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2..3, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..3, id: Name("b"), ctx: Load, @@ -36,12 +40,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4..9, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 4..9, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("a"), ctx: Load, @@ -50,6 +57,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("b"), ctx: Load, @@ -61,12 +69,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..15, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 10..15, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("c"), ctx: Load, @@ -75,6 +86,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("d"), ctx: Load, @@ -86,26 +98,31 @@ Module( ), Break( StmtBreak { + node_index: AtomicNodeIndex(..), range: 16..21, }, ), Continue( StmtContinue { + node_index: AtomicNodeIndex(..), range: 23..31, }, ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 32..36, }, ), Continue( StmtContinue { + node_index: AtomicNodeIndex(..), range: 38..46, }, ), Break( StmtBreak { + node_index: AtomicNodeIndex(..), range: 47..52, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_stmts_on_same_line_in_block.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_stmts_on_same_line_in_block.py.snap index 9f66a28749..0e424616ad 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_stmts_on_same_line_in_block.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@simple_stmts_on_same_line_in_block.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/simple_stmts_on_same_line_in_block.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..46, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..45, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 3..7, value: true, }, @@ -22,26 +24,31 @@ Module( body: [ Break( StmtBreak { + node_index: AtomicNodeIndex(..), range: 9..14, }, ), Continue( StmtContinue { + node_index: AtomicNodeIndex(..), range: 16..24, }, ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 25..29, }, ), Continue( StmtContinue { + node_index: AtomicNodeIndex(..), range: 31..39, }, ), Break( StmtBreak { + node_index: AtomicNodeIndex(..), range: 40..45, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_for.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_for.py.snap index a5699bbc2b..75ce9e0320 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_for.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_for.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/single_star_for.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..35, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..16, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("_"), ctx: Store, @@ -22,9 +25,11 @@ Module( ), iter: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 9..11, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("x"), ctx: Load, @@ -36,9 +41,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..16, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 13..16, }, ), @@ -50,13 +57,16 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 17..34, is_async: false, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 21..23, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Store, @@ -67,6 +77,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..29, id: Name("xs"), ctx: Load, @@ -75,9 +86,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 31..34, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 31..34, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_return.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_return.py.snap index 91feb561c8..8c08d4f66c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_return.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_return.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/single_star_return.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..19, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..18, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 5..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,13 +37,16 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 9..18, value: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 16..18, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_yield.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_yield.py.snap index d89940beaa..273bb6dd53 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_yield.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_star_yield.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/err/single_star_yield.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..18, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..17, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 5..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,16 +37,20 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..17, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 9..17, value: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 15..17, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_starred_assignment_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_starred_assignment_target.py.snap index 406d8532da..fd275c3a2e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_starred_assignment_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@single_starred_assignment_target.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/err/single_starred_assign ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..9, targets: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 0..2, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("a"), ctx: Store, @@ -29,10 +33,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 5..9, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..7, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@star_index_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@star_index_py310.py.snap index 0f06b4ecff..2f547ff272 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@star_index_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@star_index_py310.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/err/star_index_py310.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..293, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..55, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 44..55, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..47, id: Name("lst"), ctx: Load, @@ -24,13 +28,16 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 48..54, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 48..54, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..54, id: Name("index"), ctx: Load, @@ -51,22 +58,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 72..112, decorator_list: [], name: Identifier { id: Name("Array"), range: 78..83, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 83..107, + node_index: AtomicNodeIndex(..), args: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 84..106, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..91, id: Name("Generic"), ctx: Load, @@ -74,10 +86,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 92..105, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..97, id: Name("DType"), ctx: Load, @@ -85,9 +99,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 99..105, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..105, id: Name("Shape"), ctx: Load, @@ -111,9 +127,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 109..112, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 109..112, }, ), @@ -124,12 +142,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 148..161, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 148..161, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 148..151, id: Name("lst"), ctx: Load, @@ -137,10 +158,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 152..160, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 152..153, id: Name("a"), ctx: Load, @@ -148,9 +171,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 155..157, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 156..157, id: Name("b"), ctx: Load, @@ -161,6 +186,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 159..160, id: Name("c"), ctx: Load, @@ -178,12 +204,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 185..198, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 185..198, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 185..188, id: Name("lst"), ctx: Load, @@ -191,10 +220,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 189..197, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("a"), ctx: Load, @@ -202,6 +233,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 192..193, id: Name("b"), ctx: Load, @@ -209,9 +241,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 195..197, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 196..197, id: Name("c"), ctx: Load, @@ -232,12 +266,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 222..233, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 222..233, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 222..225, id: Name("lst"), ctx: Load, @@ -245,13 +282,16 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 226..232, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 226..228, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 227..228, id: Name("a"), ctx: Load, @@ -262,9 +302,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 230..232, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 231..232, id: Name("b"), ctx: Load, @@ -285,12 +327,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 254..271, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 254..271, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 254..259, id: Name("array"), ctx: Load, @@ -298,14 +343,17 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 260..270, elts: [ Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 260..263, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 260..261, value: Int( 3, @@ -316,6 +364,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 262..263, value: Int( 5, @@ -328,9 +377,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 265..270, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 266..270, id: Name("idxs"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@star_slices.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@star_slices.py.snap index de033a8afe..4f9cc982f6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@star_slices.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@star_slices.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/err/star_slices.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..19, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..18, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 0..18, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..5, id: Name("array"), ctx: Load, @@ -24,13 +28,16 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 6..17, lower: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 6..12, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..12, id: Name("start"), ctx: Load, @@ -43,9 +50,11 @@ Module( upper: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 13..17, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("end"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__function_type_parameters.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__function_type_parameters.py.snap index 0c547eb7b4..5853cdff00 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__function_type_parameters.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__function_type_parameters.py.snap @@ -7,27 +7,33 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/function_type ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..988, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 796..824, is_async: false, decorator_list: [], name: Identifier { id: Name("keyword"), range: 800..807, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 807..817, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 808..809, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("A"), range: 808..809, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -36,9 +42,11 @@ Module( TypeVar( TypeParamTypeVar { range: 811..816, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("await"), range: 811..816, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -49,6 +57,9 @@ Module( ), parameters: Parameters { range: 817..819, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -59,9 +70,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 821..824, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 821..824, }, ), @@ -72,23 +85,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 826..862, is_async: false, decorator_list: [], name: Identifier { id: Name("not_a_type_param"), range: 830..846, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 846..855, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 847..848, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("A"), range: 847..848, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -97,9 +115,11 @@ Module( TypeVar( TypeParamTypeVar { range: 853..854, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("B"), range: 853..854, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -110,6 +130,9 @@ Module( ), parameters: Parameters { range: 855..857, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -120,9 +143,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 859..862, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 859..862, }, ), @@ -133,23 +158,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 864..896, is_async: false, decorator_list: [], name: Identifier { id: Name("multiple_commas"), range: 868..883, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 883..889, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 884..885, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("A"), range: 884..885, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -158,9 +188,11 @@ Module( TypeVar( TypeParamTypeVar { range: 887..888, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("B"), range: 887..888, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -171,6 +203,9 @@ Module( ), parameters: Parameters { range: 889..891, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -181,9 +216,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 893..896, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 893..896, }, ), @@ -194,23 +231,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 898..938, is_async: false, decorator_list: [], name: Identifier { id: Name("multiple_trailing_commas"), range: 902..926, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 926..931, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 927..928, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("A"), range: 927..928, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -221,6 +263,9 @@ Module( ), parameters: Parameters { range: 931..933, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -231,9 +276,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 935..938, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 935..938, }, ), @@ -244,23 +291,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 940..979, is_async: false, decorator_list: [], name: Identifier { id: Name("multiple_commas_and_recovery"), range: 944..972, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 972..976, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 973..974, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("A"), range: 973..974, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -271,6 +323,9 @@ Module( ), parameters: Parameters { range: 976..976, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -281,9 +336,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 976..979, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 976..979, value: Int( 100, @@ -297,9 +354,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 980..987, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 980..982, elts: [], ctx: Store, @@ -308,6 +367,7 @@ Module( ), annotation: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 984..987, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__if_extra_closing_parentheses.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__if_extra_closing_parentheses.py.snap index ea5649412f..5ca66592b1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__if_extra_closing_parentheses.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__if_extra_closing_parentheses.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/if_extra_clos ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..110, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 90..97, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 93..97, value: true, }, @@ -24,6 +27,7 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 105..109, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__if_extra_indent.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__if_extra_indent.py.snap index 76a3ff101f..0a04441bbb 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__if_extra_indent.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__if_extra_indent.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/if_extra_inde ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..153, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 103..134, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 106..110, value: true, }, @@ -21,17 +24,21 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 116..120, }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 129..134, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 129..134, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("a"), ctx: Load, @@ -40,6 +47,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 133..134, id: Name("b"), ctx: Load, @@ -55,15 +63,18 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 140..144, }, ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 146..152, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("a"), ctx: Store, @@ -72,6 +83,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 150..152, value: Int( 10, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__invalid_assignment_targets.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__invalid_assignment_targets.py.snap index 7159d351f2..26643d505d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__invalid_assignment_targets.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__invalid_assignment_targets.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/invalid_assig ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..788, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 201..206, targets: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 201..202, value: Int( 5, @@ -24,6 +27,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 205..206, value: Int( 3, @@ -34,9 +38,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 208..214, target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 208..209, value: Int( 5, @@ -46,6 +52,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 213..214, value: Int( 3, @@ -56,9 +63,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 216..228, target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 217..218, value: Int( 5, @@ -67,6 +76,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 221..224, id: Name("int"), ctx: Load, @@ -75,6 +85,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 227..228, value: Int( 3, @@ -87,15 +98,18 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 303..314, targets: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 303..309, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 303..304, id: Name("x"), ctx: Load, @@ -103,6 +117,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 308..309, id: Name("y"), ctx: Load, @@ -114,6 +129,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 312..314, value: Int( 42, @@ -124,13 +140,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 315..328, targets: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 316..322, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 316..317, id: Name("x"), ctx: Store, @@ -138,6 +157,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 321..322, value: Int( 5, @@ -149,6 +169,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 326..328, value: Int( 42, @@ -159,13 +180,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 329..339, targets: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 329..334, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 329..330, id: Name("x"), ctx: Load, @@ -174,6 +198,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 333..334, id: Name("y"), ctx: Load, @@ -184,6 +209,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 337..339, value: Int( 42, @@ -194,14 +220,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 340..347, targets: [ UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 340..342, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 341..342, id: Name("x"), ctx: Store, @@ -212,6 +241,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 345..347, value: Int( 42, @@ -222,23 +252,31 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 348..366, targets: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 349..360, parameters: Some( Parameters { range: 356..357, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 356..357, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 356..357, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("_"), range: 356..357, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -252,6 +290,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 359..360, value: Int( 1, @@ -263,6 +302,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 364..366, value: Int( 42, @@ -273,13 +313,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 367..385, targets: [ If( ExprIf { + node_index: AtomicNodeIndex(..), range: 367..380, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 372..373, id: Name("b"), ctx: Load, @@ -287,6 +330,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 367..368, id: Name("a"), ctx: Load, @@ -294,6 +338,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 379..380, id: Name("c"), ctx: Load, @@ -304,6 +349,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 383..385, value: Int( 42, @@ -314,21 +360,25 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 386..399, targets: [ Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 386..394, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 387..390, value: StringLiteralValue { inner: Single( StringLiteral { range: 387..390, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Double, @@ -343,6 +393,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 392..393, value: Int( 5, @@ -356,6 +407,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 397..399, value: Int( 42, @@ -366,14 +418,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 400..408, targets: [ Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 400..403, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 401..402, id: Name("a"), ctx: Load, @@ -385,6 +440,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 406..408, value: Int( 42, @@ -395,13 +451,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 409..429, targets: [ ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 409..424, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 410..411, id: Name("x"), ctx: Load, @@ -410,8 +469,10 @@ Module( generators: [ Comprehension { range: 412..423, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 416..417, id: Name("x"), ctx: Store, @@ -419,6 +480,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 421..423, id: Name("xs"), ctx: Load, @@ -433,6 +495,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 427..429, value: Int( 42, @@ -443,13 +506,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 430..450, targets: [ SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 430..445, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 431..432, id: Name("x"), ctx: Load, @@ -458,8 +524,10 @@ Module( generators: [ Comprehension { range: 433..444, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 437..438, id: Name("x"), ctx: Store, @@ -467,6 +535,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 442..444, id: Name("xs"), ctx: Load, @@ -481,6 +550,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 448..450, value: Int( 42, @@ -491,13 +561,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 451..478, targets: [ DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 451..473, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 452..453, id: Name("x"), ctx: Load, @@ -505,9 +578,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 455..460, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 455..456, id: Name("x"), ctx: Load, @@ -516,6 +591,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 459..460, value: Int( 2, @@ -527,8 +603,10 @@ Module( generators: [ Comprehension { range: 461..472, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 465..466, id: Name("x"), ctx: Store, @@ -536,6 +614,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 470..472, id: Name("xs"), ctx: Load, @@ -550,6 +629,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 476..478, value: Int( 42, @@ -560,13 +640,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 479..499, targets: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 479..494, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 480..481, id: Name("x"), ctx: Load, @@ -575,8 +658,10 @@ Module( generators: [ Comprehension { range: 482..493, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 486..487, id: Name("x"), ctx: Store, @@ -584,6 +669,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 491..493, id: Name("xs"), ctx: Load, @@ -599,6 +685,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 497..499, value: Int( 42, @@ -609,13 +696,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 500..512, targets: [ Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 500..507, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 506..507, id: Name("x"), ctx: Load, @@ -626,6 +716,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 510..512, value: Int( 42, @@ -636,14 +727,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 513..527, targets: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 514..521, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 520..521, id: Name("x"), ctx: Load, @@ -655,6 +749,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 525..527, value: Int( 42, @@ -665,13 +760,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 528..548, targets: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 529..542, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 540..542, id: Name("xs"), ctx: Load, @@ -682,6 +780,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 546..548, value: Int( 42, @@ -692,13 +791,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 549..563, targets: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 549..558, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 549..550, id: Name("a"), ctx: Load, @@ -711,6 +813,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 553..554, id: Name("b"), ctx: Load, @@ -718,6 +821,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 557..558, id: Name("c"), ctx: Load, @@ -729,6 +833,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 561..563, value: Int( 42, @@ -739,13 +844,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 564..574, targets: [ Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 564..569, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 564..567, id: Name("foo"), ctx: Load, @@ -753,6 +861,7 @@ Module( ), arguments: Arguments { range: 567..569, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -761,6 +870,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 572..574, value: Int( 42, @@ -771,22 +881,27 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 576..590, targets: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 576..585, value: FStringValue { inner: Single( FString( FString { range: 576..585, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 578..584, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 579..583, id: Name("quux"), ctx: Load, @@ -812,6 +927,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 588..590, value: Int( 42, @@ -822,22 +938,27 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 591..614, targets: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 591..609, value: FStringValue { inner: Single( FString( FString { range: 591..609, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 593..598, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 594..597, id: Name("foo"), ctx: Load, @@ -851,14 +972,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 598..603, + node_index: AtomicNodeIndex(..), value: " and ", }, ), Interpolation( InterpolatedElement { range: 603..608, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 604..607, id: Name("bar"), ctx: Load, @@ -884,6 +1008,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 612..614, value: Int( 42, @@ -894,15 +1019,18 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 616..626, targets: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 616..621, value: StringLiteralValue { inner: Single( StringLiteral { range: 616..621, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -917,6 +1045,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 624..626, value: Int( 42, @@ -927,15 +1056,18 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 627..638, targets: [ BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 627..633, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 627..633, + node_index: AtomicNodeIndex(..), value: [ 102, 111, @@ -954,6 +1086,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 636..638, value: Int( 42, @@ -964,10 +1097,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 639..647, targets: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 639..642, value: Int( 123, @@ -977,6 +1112,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 645..647, value: Int( 42, @@ -987,10 +1123,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 648..657, targets: [ BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 648..652, value: true, }, @@ -998,6 +1136,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 655..657, value: Int( 42, @@ -1008,16 +1147,19 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 658..667, targets: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 658..662, }, ), ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 665..667, value: Int( 42, @@ -1028,16 +1170,19 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 668..676, targets: [ EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 668..671, }, ), ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 674..676, value: Int( 42, @@ -1048,16 +1193,20 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 677..688, targets: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 677..683, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 678..683, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 678..681, id: Name("foo"), ctx: Load, @@ -1065,6 +1214,7 @@ Module( ), arguments: Arguments { range: 681..683, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1076,6 +1226,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 686..688, value: Int( 42, @@ -1086,14 +1237,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 689..717, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 689..702, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 690..691, id: Name("x"), ctx: Store, @@ -1101,9 +1255,11 @@ Module( ), Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 693..698, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 693..696, id: Name("foo"), ctx: Load, @@ -1111,6 +1267,7 @@ Module( ), arguments: Arguments { range: 696..698, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1118,6 +1275,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 700..701, id: Name("y"), ctx: Store, @@ -1130,10 +1288,12 @@ Module( ], value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 705..717, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 706..708, value: Int( 42, @@ -1142,6 +1302,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 710..712, value: Int( 42, @@ -1150,6 +1311,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 714..716, value: Int( 42, @@ -1164,18 +1326,22 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 718..758, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 718..737, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 719..725, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 720..721, id: Name("a"), ctx: Store, @@ -1183,6 +1349,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 723..724, id: Name("b"), ctx: Store, @@ -1194,14 +1361,17 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 727..733, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 728..732, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 729..731, value: Int( 42, @@ -1218,6 +1388,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 735..736, id: Name("d"), ctx: Store, @@ -1230,14 +1401,17 @@ Module( ], value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 740..758, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 741..747, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 742..743, value: Int( 1, @@ -1246,6 +1420,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 745..746, value: Int( 2, @@ -1258,14 +1433,17 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 749..754, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 750..753, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 751..752, value: Int( 3, @@ -1282,6 +1460,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 756..757, value: Int( 4, @@ -1296,14 +1475,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 759..787, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 759..772, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 760..761, id: Name("x"), ctx: Store, @@ -1311,9 +1493,11 @@ Module( ), Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 763..768, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 763..766, id: Name("foo"), ctx: Load, @@ -1321,6 +1505,7 @@ Module( ), arguments: Arguments { range: 766..768, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1328,6 +1513,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 770..771, id: Name("y"), ctx: Store, @@ -1341,10 +1527,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 775..787, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 776..778, value: Int( 42, @@ -1353,6 +1541,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 780..782, value: Int( 42, @@ -1361,6 +1550,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 784..786, value: Int( 42, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__invalid_augmented_assignment_target.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__invalid_augmented_assignment_target.py.snap index ec4380012b..788a678251 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__invalid_augmented_assignment_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__invalid_augmented_assignment_target.py.snap @@ -7,18 +7,22 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/invalid_augme ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..611, body: [ AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 97..109, target: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 97..103, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 97..98, id: Name("x"), ctx: Load, @@ -26,6 +30,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..103, id: Name("y"), ctx: Load, @@ -37,6 +42,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 107..109, value: Int( 42, @@ -47,12 +53,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 110..124, target: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 111..117, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 111..112, id: Name("x"), ctx: Store, @@ -60,6 +69,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 116..117, value: Int( 5, @@ -71,6 +81,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..124, value: Int( 42, @@ -81,12 +92,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 125..136, target: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 125..130, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 125..126, id: Name("x"), ctx: Load, @@ -95,6 +109,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("y"), ctx: Load, @@ -105,6 +120,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 134..136, value: Int( 42, @@ -115,13 +131,16 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 137..145, target: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 137..139, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 138..139, id: Name("x"), ctx: Store, @@ -132,6 +151,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 143..145, value: Int( 42, @@ -142,22 +162,30 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 146..165, target: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 147..158, parameters: Some( Parameters { range: 154..155, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 154..155, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 154..155, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("_"), range: 154..155, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -171,6 +199,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 157..158, value: Int( 1, @@ -182,6 +211,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 163..165, value: Int( 42, @@ -192,12 +222,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 166..185, target: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 166..179, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..172, id: Name("b"), ctx: Load, @@ -205,6 +238,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..167, id: Name("a"), ctx: Load, @@ -212,6 +246,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 178..179, id: Name("c"), ctx: Load, @@ -222,6 +257,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 183..185, value: Int( 42, @@ -232,20 +268,24 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 186..200, target: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 186..194, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 187..190, value: StringLiteralValue { inner: Single( StringLiteral { range: 187..190, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Double, @@ -260,6 +300,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 192..193, value: Int( 5, @@ -273,6 +314,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 198..200, value: Int( 42, @@ -283,13 +325,16 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 201..210, target: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 201..204, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 202..203, id: Name("a"), ctx: Load, @@ -301,6 +346,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 208..210, value: Int( 42, @@ -311,12 +357,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 211..232, target: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 211..226, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 212..213, id: Name("x"), ctx: Load, @@ -325,8 +374,10 @@ Module( generators: [ Comprehension { range: 214..225, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 218..219, id: Name("x"), ctx: Store, @@ -334,6 +385,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 223..225, id: Name("xs"), ctx: Load, @@ -348,6 +400,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 230..232, value: Int( 42, @@ -358,12 +411,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 233..254, target: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 233..248, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 234..235, id: Name("x"), ctx: Load, @@ -372,8 +428,10 @@ Module( generators: [ Comprehension { range: 236..247, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 240..241, id: Name("x"), ctx: Store, @@ -381,6 +439,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..247, id: Name("xs"), ctx: Load, @@ -395,6 +454,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 252..254, value: Int( 42, @@ -405,12 +465,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 255..283, target: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 255..277, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 256..257, id: Name("x"), ctx: Load, @@ -418,9 +481,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 259..264, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 259..260, id: Name("x"), ctx: Load, @@ -429,6 +494,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 263..264, value: Int( 2, @@ -440,8 +506,10 @@ Module( generators: [ Comprehension { range: 265..276, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 269..270, id: Name("x"), ctx: Store, @@ -449,6 +517,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 274..276, id: Name("xs"), ctx: Load, @@ -463,6 +532,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 281..283, value: Int( 42, @@ -473,12 +543,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 284..305, target: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 284..299, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 285..286, id: Name("x"), ctx: Load, @@ -487,8 +560,10 @@ Module( generators: [ Comprehension { range: 287..298, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 291..292, id: Name("x"), ctx: Store, @@ -496,6 +571,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 296..298, id: Name("xs"), ctx: Load, @@ -511,6 +587,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 303..305, value: Int( 42, @@ -521,12 +598,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 306..319, target: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 306..313, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 312..313, id: Name("x"), ctx: Load, @@ -537,6 +617,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 317..319, value: Int( 42, @@ -547,13 +628,16 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 320..335, target: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 321..328, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 327..328, id: Name("x"), ctx: Load, @@ -565,6 +649,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 333..335, value: Int( 42, @@ -575,12 +660,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 336..357, target: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 337..350, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 348..350, id: Name("xs"), ctx: Load, @@ -591,6 +679,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 355..357, value: Int( 42, @@ -601,12 +690,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 358..373, target: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 358..367, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 358..359, id: Name("a"), ctx: Load, @@ -619,6 +711,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 362..363, id: Name("b"), ctx: Load, @@ -626,6 +719,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 366..367, id: Name("c"), ctx: Load, @@ -637,6 +731,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 371..373, value: Int( 42, @@ -647,12 +742,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 374..385, target: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 374..379, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 374..377, id: Name("foo"), ctx: Load, @@ -660,6 +758,7 @@ Module( ), arguments: Arguments { range: 377..379, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -668,6 +767,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 383..385, value: Int( 42, @@ -678,21 +778,26 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 387..402, target: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 387..396, value: FStringValue { inner: Single( FString( FString { range: 387..396, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 389..395, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 390..394, id: Name("quux"), ctx: Load, @@ -718,6 +823,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 400..402, value: Int( 42, @@ -728,21 +834,26 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 403..427, target: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 403..421, value: FStringValue { inner: Single( FString( FString { range: 403..421, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 405..410, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 406..409, id: Name("foo"), ctx: Load, @@ -756,14 +867,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 410..415, + node_index: AtomicNodeIndex(..), value: " and ", }, ), Interpolation( InterpolatedElement { range: 415..420, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 416..419, id: Name("bar"), ctx: Load, @@ -789,6 +903,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 425..427, value: Int( 42, @@ -799,14 +914,17 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 429..440, target: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 429..434, value: StringLiteralValue { inner: Single( StringLiteral { range: 429..434, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -821,6 +939,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 438..440, value: Int( 42, @@ -831,14 +950,17 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 441..453, target: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 441..447, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 441..447, + node_index: AtomicNodeIndex(..), value: [ 102, 111, @@ -857,6 +979,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 451..453, value: Int( 42, @@ -867,9 +990,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 454..463, target: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 454..457, value: Int( 123, @@ -879,6 +1004,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 461..463, value: Int( 42, @@ -889,9 +1015,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 464..474, target: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 464..468, value: true, }, @@ -899,6 +1027,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 472..474, value: Int( 42, @@ -909,15 +1038,18 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 475..485, target: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 475..479, }, ), op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 483..485, value: Int( 42, @@ -928,15 +1060,18 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 486..495, target: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 486..489, }, ), op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 493..495, value: Int( 42, @@ -947,15 +1082,19 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 496..508, target: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 496..502, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 497..502, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 497..500, id: Name("foo"), ctx: Load, @@ -963,6 +1102,7 @@ Module( ), arguments: Arguments { range: 500..502, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -974,6 +1114,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 506..508, value: Int( 42, @@ -984,13 +1125,16 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 509..538, target: List( ExprList { + node_index: AtomicNodeIndex(..), range: 509..522, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 510..511, id: Name("x"), ctx: Store, @@ -998,9 +1142,11 @@ Module( ), Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 513..518, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 513..516, id: Name("foo"), ctx: Load, @@ -1008,6 +1154,7 @@ Module( ), arguments: Arguments { range: 516..518, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1015,6 +1162,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 520..521, id: Name("y"), ctx: Store, @@ -1027,10 +1175,12 @@ Module( op: Add, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 526..538, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 527..529, value: Int( 42, @@ -1039,6 +1189,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 531..533, value: Int( 42, @@ -1047,6 +1198,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 535..537, value: Int( 42, @@ -1061,17 +1213,21 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 539..580, target: List( ExprList { + node_index: AtomicNodeIndex(..), range: 539..558, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 540..546, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 541..542, id: Name("a"), ctx: Store, @@ -1079,6 +1235,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 544..545, id: Name("b"), ctx: Store, @@ -1090,14 +1247,17 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 548..554, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 549..553, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 550..552, value: Int( 42, @@ -1114,6 +1274,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 556..557, id: Name("d"), ctx: Store, @@ -1126,14 +1287,17 @@ Module( op: Add, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 562..580, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 563..569, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 564..565, value: Int( 1, @@ -1142,6 +1306,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 567..568, value: Int( 2, @@ -1154,14 +1319,17 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 571..576, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 572..575, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 573..574, value: Int( 3, @@ -1178,6 +1346,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 578..579, value: Int( 4, @@ -1192,13 +1361,16 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 581..610, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 581..594, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 582..583, id: Name("x"), ctx: Store, @@ -1206,9 +1378,11 @@ Module( ), Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 585..590, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 585..588, id: Name("foo"), ctx: Load, @@ -1216,6 +1390,7 @@ Module( ), arguments: Arguments { range: 588..590, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1223,6 +1398,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 592..593, id: Name("y"), ctx: Store, @@ -1236,10 +1412,12 @@ Module( op: Add, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 598..610, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 599..601, value: Int( 42, @@ -1248,6 +1426,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 603..605, value: Int( 42, @@ -1256,6 +1435,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 607..609, value: Int( 42, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_0.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_0.py.snap index 45f7c9abf7..58087f43bd 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_0.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_0.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/statements/match/as_pattern_0.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..198, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..197, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..13, id: Name("subject"), ctx: Load, @@ -23,11 +25,14 @@ Module( cases: [ MatchCase { range: 127..197, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 132..146, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 133..139, id: Name(""), ctx: Invalid, @@ -35,15 +40,18 @@ Module( ), arguments: PatternArguments { range: 140..146, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 141..142, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 141..142, + node_index: AtomicNodeIndex(..), }, ), }, @@ -51,11 +59,13 @@ Module( MatchAs( PatternMatchAs { range: 144..145, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("b"), range: 144..145, + node_index: AtomicNodeIndex(..), }, ), }, @@ -69,6 +79,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 193..197, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_1.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_1.py.snap index a2e2631cab..c33ba5de9a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_1.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/statements/match/as_pattern_1.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..210, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..209, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..13, id: Name("subject"), ctx: Load, @@ -23,14 +25,18 @@ Module( cases: [ MatchCase { range: 140..209, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 145..158, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 145..158, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..152, id: Name(""), ctx: Invalid, @@ -39,6 +45,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 156..158, value: Complex { real: 0.0, @@ -54,6 +61,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 205..209, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_2.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_2.py.snap index 1607c5185f..056268c64d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_2.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/match/as_patt ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..190, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..176, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..13, id: Name("subject"), ctx: Load, @@ -22,18 +25,22 @@ Module( cases: [ MatchCase { range: 159..176, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 164..170, + node_index: AtomicNodeIndex(..), pattern: Some( MatchAs( PatternMatchAs { range: 164..165, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 164..165, + node_index: AtomicNodeIndex(..), }, ), }, @@ -43,6 +50,7 @@ Module( Identifier { id: Name("y"), range: 169..170, + node_index: AtomicNodeIndex(..), }, ), }, @@ -51,13 +59,16 @@ Module( body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 171..176, target: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 171..175, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 173..175, value: Complex { real: 0.0, @@ -69,6 +80,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 176..176, id: Name(""), ctx: Invalid, @@ -85,6 +97,7 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 185..189, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_3.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_3.py.snap index cf7490e5fd..6ebf0be44b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_3.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_3.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/match/as_patt ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..136, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..120, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..13, id: Name("subject"), ctx: Load, @@ -22,30 +25,37 @@ Module( cases: [ MatchCase { range: 103..120, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 108..117, + node_index: AtomicNodeIndex(..), cls: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 108..109, items: [], }, ), arguments: PatternArguments { range: 109..117, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 110..116, + node_index: AtomicNodeIndex(..), pattern: Some( MatchAs( PatternMatchAs { range: 110..111, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 110..111, + node_index: AtomicNodeIndex(..), }, ), }, @@ -55,6 +65,7 @@ Module( Identifier { id: Name("y"), range: 115..116, + node_index: AtomicNodeIndex(..), }, ), }, @@ -68,9 +79,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 119..120, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 119..120, value: Int( 1, @@ -86,6 +99,7 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 131..135, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_4.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_4.py.snap index a05914e033..6d705cce3a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_4.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__as_pattern_4.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/statements/match/as_pattern_4.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..187, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..186, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..13, id: Name("subject"), ctx: Load, @@ -23,12 +25,15 @@ Module( cases: [ MatchCase { range: 156..186, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 161..172, + node_index: AtomicNodeIndex(..), keys: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 162..163, id: Name("x"), ctx: Store, @@ -36,6 +41,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 167..168, id: Name("y"), ctx: Store, @@ -46,11 +52,13 @@ Module( MatchAs( PatternMatchAs { range: 164..166, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("as"), range: 164..166, + node_index: AtomicNodeIndex(..), }, ), }, @@ -58,8 +66,10 @@ Module( MatchValue( PatternMatchValue { range: 170..171, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 170..171, value: Int( 1, @@ -76,6 +86,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 182..186, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_class_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_class_pattern.py.snap index 9bbae6b780..1687f42248 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_class_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_class_pattern.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/statements/match/invalid_class_pattern.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..383, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 44..285, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 50..57, id: Name("subject"), ctx: Load, @@ -23,11 +25,14 @@ Module( cases: [ MatchCase { range: 63..97, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 68..83, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..71, id: Name("Foo"), ctx: Load, @@ -35,19 +40,24 @@ Module( ), arguments: PatternArguments { range: 71..83, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 72..82, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name(""), range: 80..80, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 81..82, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 81..82, value: Int( 1, @@ -65,6 +75,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 93..97, }, ), @@ -72,11 +83,14 @@ Module( }, MatchCase { range: 102..135, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 107..121, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 107..110, id: Name("Foo"), ctx: Load, @@ -84,19 +98,24 @@ Module( ), arguments: PatternArguments { range: 110..121, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 111..120, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name(""), range: 118..118, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 119..120, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 119..120, value: Int( 1, @@ -114,6 +133,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 131..135, }, ), @@ -121,11 +141,14 @@ Module( }, MatchCase { range: 140..174, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 145..160, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 145..148, id: Name("Foo"), ctx: Load, @@ -133,19 +156,24 @@ Module( ), arguments: PatternArguments { range: 148..160, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 149..159, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name(""), range: 157..157, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 158..159, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 158..159, value: Int( 1, @@ -163,6 +191,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 170..174, }, ), @@ -170,11 +199,14 @@ Module( }, MatchCase { range: 179..217, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 184..203, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 184..187, id: Name("Foo"), ctx: Load, @@ -182,19 +214,24 @@ Module( ), arguments: PatternArguments { range: 187..203, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 188..202, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name(""), range: 200..200, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 201..202, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 201..202, value: Int( 1, @@ -212,6 +249,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 213..217, }, ), @@ -219,11 +257,14 @@ Module( }, MatchCase { range: 222..249, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 227..235, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 227..230, id: Name("Foo"), ctx: Load, @@ -231,19 +272,24 @@ Module( ), arguments: PatternArguments { range: 230..235, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 231..234, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name(""), range: 233..233, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 233..234, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 233..234, value: Int( 1, @@ -261,6 +307,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 245..249, }, ), @@ -268,11 +315,14 @@ Module( }, MatchCase { range: 254..285, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 259..271, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 259..262, id: Name("Foo"), ctx: Load, @@ -280,19 +330,24 @@ Module( ), arguments: PatternArguments { range: 262..271, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 263..270, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name(""), range: 269..269, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 269..270, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 269..270, value: Int( 1, @@ -310,6 +365,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 281..285, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_lhs_or_rhs_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_lhs_or_rhs_pattern.py.snap index 4ff9810638..abf680ec65 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_lhs_or_rhs_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_lhs_or_rhs_pattern.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/statements/match/invalid_lhs_or_rhs_pattern.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..695, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..332, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..25, id: Name("invalid_lhs_pattern"), ctx: Load, @@ -23,17 +25,22 @@ Module( cases: [ MatchCase { range: 31..60, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 36..46, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 36..46, left: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 36..41, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..39, id: Name("Foo"), ctx: Load, @@ -41,6 +48,7 @@ Module( ), arguments: Arguments { range: 39..41, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -49,6 +57,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 44..46, value: Complex { real: 0.0, @@ -64,6 +73,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 56..60, }, ), @@ -71,14 +81,18 @@ Module( }, MatchCase { range: 65..90, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 70..76, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 70..76, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("x"), ctx: Store, @@ -87,6 +101,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 74..76, value: Complex { real: 0.0, @@ -102,6 +117,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 86..90, }, ), @@ -109,14 +125,18 @@ Module( }, MatchCase { range: 95..120, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 100..106, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 100..106, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("_"), ctx: Store, @@ -125,6 +145,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 104..106, value: Complex { real: 0.0, @@ -140,6 +161,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 116..120, }, ), @@ -147,17 +169,22 @@ Module( }, MatchCase { range: 125..156, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 130..142, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 130..142, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 131..136, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 131..132, value: Int( 1, @@ -167,6 +194,7 @@ Module( op: BitOr, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 135..136, value: Int( 2, @@ -178,6 +206,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 140..142, value: Complex { real: 0.0, @@ -193,6 +222,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 152..156, }, ), @@ -200,18 +230,23 @@ Module( }, MatchCase { range: 161..191, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 166..177, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 166..177, left: List( ExprList { + node_index: AtomicNodeIndex(..), range: 166..172, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 167..168, value: Int( 1, @@ -220,6 +255,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 170..171, value: Int( 2, @@ -233,6 +269,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 175..177, value: Complex { real: 0.0, @@ -248,6 +285,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 187..191, }, ), @@ -255,20 +293,25 @@ Module( }, MatchCase { range: 196..229, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 201..215, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 201..215, left: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 201..210, items: [ DictItem { key: Some( BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 202..206, value: true, }, @@ -276,6 +319,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 208..209, value: Int( 1, @@ -289,6 +333,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 213..215, value: Complex { real: 0.0, @@ -304,6 +349,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 225..229, }, ), @@ -311,14 +357,18 @@ Module( }, MatchCase { range: 234..260, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 239..246, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 239..246, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 239..241, value: Complex { real: 0.0, @@ -329,6 +379,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 244..246, value: Complex { real: 0.0, @@ -344,6 +395,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 256..260, }, ), @@ -351,18 +403,23 @@ Module( }, MatchCase { range: 265..292, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 270..278, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 270..278, left: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 270..273, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 271..273, value: Complex { real: 0.0, @@ -375,6 +432,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 276..278, value: Complex { real: 0.0, @@ -390,6 +448,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 288..292, }, ), @@ -397,17 +456,22 @@ Module( }, MatchCase { range: 297..332, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 302..318, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 302..318, left: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 302..313, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 302..305, id: Name("Foo"), ctx: Load, @@ -415,9 +479,11 @@ Module( ), arguments: Arguments { range: 305..313, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 306..312, id: Name(""), ctx: Invalid, @@ -431,6 +497,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 316..318, value: Complex { real: 0.0, @@ -446,6 +513,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 328..332, }, ), @@ -456,9 +524,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 334..625, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 340..359, id: Name("invalid_rhs_pattern"), ctx: Load, @@ -467,14 +537,18 @@ Module( cases: [ MatchCase { range: 365..393, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 370..379, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 370..379, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 370..371, value: Int( 1, @@ -484,9 +558,11 @@ Module( op: Add, right: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 374..379, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 374..377, id: Name("Foo"), ctx: Load, @@ -494,6 +570,7 @@ Module( ), arguments: Arguments { range: 377..379, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -507,6 +584,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 389..393, }, ), @@ -514,14 +592,18 @@ Module( }, MatchCase { range: 398..422, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 403..408, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 403..408, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 403..404, value: Int( 2, @@ -531,6 +613,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 407..408, id: Name("x"), ctx: Store, @@ -544,6 +627,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 418..422, }, ), @@ -551,14 +635,18 @@ Module( }, MatchCase { range: 427..451, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 432..437, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 432..437, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 432..433, value: Int( 3, @@ -568,6 +656,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 436..437, id: Name("_"), ctx: Store, @@ -581,6 +670,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 447..451, }, ), @@ -588,14 +678,18 @@ Module( }, MatchCase { range: 456..486, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 461..472, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 461..472, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 461..462, value: Int( 4, @@ -605,9 +699,11 @@ Module( op: Add, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 466..471, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 466..467, value: Int( 1, @@ -617,6 +713,7 @@ Module( op: BitOr, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 470..471, value: Int( 2, @@ -633,6 +730,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 482..486, }, ), @@ -640,14 +738,18 @@ Module( }, MatchCase { range: 491..520, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 496..506, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 496..506, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 496..497, value: Int( 5, @@ -657,10 +759,12 @@ Module( op: Add, right: List( ExprList { + node_index: AtomicNodeIndex(..), range: 500..506, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 501..502, value: Int( 1, @@ -669,6 +773,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 504..505, value: Int( 2, @@ -687,6 +792,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 516..520, }, ), @@ -694,14 +800,18 @@ Module( }, MatchCase { range: 525..557, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 530..543, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 530..543, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 530..531, value: Int( 6, @@ -711,12 +821,14 @@ Module( op: Add, right: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 534..543, items: [ DictItem { key: Some( BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 535..539, value: true, }, @@ -724,6 +836,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 541..542, value: Int( 1, @@ -742,6 +855,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 553..557, }, ), @@ -749,14 +863,18 @@ Module( }, MatchCase { range: 562..586, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 567..572, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 567..572, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 567..568, value: Int( 1, @@ -766,6 +884,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 571..572, value: Int( 2, @@ -780,6 +899,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 582..586, }, ), @@ -787,14 +907,18 @@ Module( }, MatchCase { range: 591..625, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 596..611, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 596..611, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 596..597, value: Int( 1, @@ -804,9 +928,11 @@ Module( op: Add, right: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 600..611, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 600..603, id: Name("Foo"), ctx: Load, @@ -814,9 +940,11 @@ Module( ), arguments: Arguments { range: 603..611, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 604..610, id: Name(""), ctx: Invalid, @@ -835,6 +963,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 621..625, }, ), @@ -845,9 +974,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 627..694, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 633..656, id: Name("invalid_lhs_rhs_pattern"), ctx: Load, @@ -856,17 +987,22 @@ Module( cases: [ MatchCase { range: 662..694, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 667..680, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 667..680, left: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 667..672, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 667..670, id: Name("Foo"), ctx: Load, @@ -874,6 +1010,7 @@ Module( ), arguments: Arguments { range: 670..672, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -882,9 +1019,11 @@ Module( op: Add, right: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 675..680, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 675..678, id: Name("Bar"), ctx: Load, @@ -892,6 +1031,7 @@ Module( ), arguments: Arguments { range: 678..680, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -905,6 +1045,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 690..694, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_mapping_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_mapping_pattern.py.snap index dddbd65f4a..69e3b740ee 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_mapping_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__invalid_mapping_pattern.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/statements/match/invalid_mapping_pattern.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..509, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 61..209, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..74, id: Name("subject"), ctx: Load, @@ -23,15 +25,19 @@ Module( cases: [ MatchCase { range: 80..105, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 85..91, + node_index: AtomicNodeIndex(..), keys: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 86..90, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..90, id: Name("key"), ctx: Store, @@ -45,8 +51,10 @@ Module( MatchValue( PatternMatchValue { range: 90..90, + node_index: AtomicNodeIndex(..), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..90, id: Name(""), ctx: Invalid, @@ -62,6 +70,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 101..105, }, ), @@ -69,15 +78,19 @@ Module( }, MatchCase { range: 110..138, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 115..124, + node_index: AtomicNodeIndex(..), keys: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 116..120, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 117..120, id: Name("key"), ctx: Store, @@ -91,8 +104,10 @@ Module( MatchValue( PatternMatchValue { range: 122..123, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..123, value: Int( 1, @@ -109,6 +124,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 134..138, }, ), @@ -116,15 +132,19 @@ Module( }, MatchCase { range: 143..170, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 148..156, + node_index: AtomicNodeIndex(..), keys: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 149..153, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..153, id: Name("key"), ctx: Store, @@ -138,8 +158,10 @@ Module( MatchValue( PatternMatchValue { range: 154..155, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 154..155, value: Int( 1, @@ -156,6 +178,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 166..170, }, ), @@ -163,15 +186,19 @@ Module( }, MatchCase { range: 175..209, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 180..195, + node_index: AtomicNodeIndex(..), keys: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 181..185, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 182..185, id: Name("key"), ctx: Store, @@ -182,6 +209,7 @@ Module( ), NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 187..191, }, ), @@ -190,8 +218,10 @@ Module( MatchValue( PatternMatchValue { range: 185..185, + node_index: AtomicNodeIndex(..), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 185..185, id: Name(""), ctx: Invalid, @@ -202,8 +232,10 @@ Module( MatchValue( PatternMatchValue { range: 193..194, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 193..194, value: Int( 1, @@ -220,6 +252,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 205..209, }, ), @@ -230,9 +263,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 305..462, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 311..318, id: Name("subject"), ctx: Load, @@ -241,12 +276,15 @@ Module( cases: [ MatchCase { range: 324..360, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 329..346, + node_index: AtomicNodeIndex(..), keys: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 338..342, }, ), @@ -255,8 +293,10 @@ Module( MatchValue( PatternMatchValue { range: 344..345, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 344..345, value: Int( 1, @@ -270,6 +310,7 @@ Module( Identifier { id: Name("rest"), range: 332..336, + node_index: AtomicNodeIndex(..), }, ), }, @@ -278,6 +319,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 356..360, }, ), @@ -285,12 +327,15 @@ Module( }, MatchCase { range: 365..411, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 370..397, + node_index: AtomicNodeIndex(..), keys: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 389..393, }, ), @@ -299,8 +344,10 @@ Module( MatchValue( PatternMatchValue { range: 395..396, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 395..396, value: Int( 1, @@ -314,6 +361,7 @@ Module( Identifier { id: Name("rest2"), range: 382..387, + node_index: AtomicNodeIndex(..), }, ), }, @@ -322,6 +370,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 407..411, }, ), @@ -329,12 +378,15 @@ Module( }, MatchCase { range: 416..462, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 421..448, + node_index: AtomicNodeIndex(..), keys: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 431..435, }, ), @@ -343,8 +395,10 @@ Module( MatchValue( PatternMatchValue { range: 437..438, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 437..438, value: Int( 1, @@ -358,6 +412,7 @@ Module( Identifier { id: Name("rest2"), range: 442..447, + node_index: AtomicNodeIndex(..), }, ), }, @@ -366,6 +421,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 458..462, }, ), @@ -376,9 +432,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 464..509, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 470..477, id: Name("subject"), ctx: Load, @@ -387,15 +445,19 @@ Module( cases: [ MatchCase { range: 483..509, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 488..504, + node_index: AtomicNodeIndex(..), keys: [ Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 489..500, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 489..492, id: Name("Foo"), ctx: Load, @@ -403,9 +465,11 @@ Module( ), arguments: Arguments { range: 492..500, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 493..499, id: Name(""), ctx: Invalid, @@ -421,8 +485,10 @@ Module( MatchValue( PatternMatchValue { range: 502..503, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 502..503, value: Int( 1, @@ -439,9 +505,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 506..509, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 506..509, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__star_pattern_usage.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__star_pattern_usage.py.snap index fa73b40cf6..ca41862659 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__star_pattern_usage.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__star_pattern_usage.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/statements/match/star_pattern_usage.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..408, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 57..407, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..70, id: Name("subject"), ctx: Load, @@ -23,9 +25,11 @@ Module( cases: [ MatchCase { range: 76..97, + node_index: AtomicNodeIndex(..), pattern: MatchStar( PatternMatchStar { range: 81..83, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -33,6 +37,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 93..97, }, ), @@ -40,13 +45,16 @@ Module( }, MatchCase { range: 102..128, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 107..114, + node_index: AtomicNodeIndex(..), pattern: Some( MatchStar( PatternMatchStar { range: 107..109, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -55,6 +63,7 @@ Module( Identifier { id: Name("x"), range: 113..114, + node_index: AtomicNodeIndex(..), }, ), }, @@ -63,6 +72,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 124..128, }, ), @@ -70,13 +80,16 @@ Module( }, MatchCase { range: 133..156, + node_index: AtomicNodeIndex(..), pattern: MatchStar( PatternMatchStar { range: 138..142, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("foo"), range: 139..142, + node_index: AtomicNodeIndex(..), }, ), }, @@ -85,6 +98,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 152..156, }, ), @@ -92,17 +106,21 @@ Module( }, MatchCase { range: 161..188, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 166..174, + node_index: AtomicNodeIndex(..), patterns: [ MatchStar( PatternMatchStar { range: 166..170, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("foo"), range: 167..170, + node_index: AtomicNodeIndex(..), }, ), }, @@ -110,8 +128,10 @@ Module( MatchValue( PatternMatchValue { range: 173..174, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 173..174, value: Int( 1, @@ -127,6 +147,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 184..188, }, ), @@ -134,15 +155,19 @@ Module( }, MatchCase { range: 193..220, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 198..206, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 198..199, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 198..199, value: Int( 1, @@ -154,10 +179,12 @@ Module( MatchStar( PatternMatchStar { range: 202..206, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("foo"), range: 203..206, + node_index: AtomicNodeIndex(..), }, ), }, @@ -169,6 +196,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 216..220, }, ), @@ -176,11 +204,14 @@ Module( }, MatchCase { range: 225..251, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 230..237, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 230..233, id: Name("Foo"), ctx: Load, @@ -188,10 +219,12 @@ Module( ), arguments: PatternArguments { range: 233..237, + node_index: AtomicNodeIndex(..), patterns: [ MatchStar( PatternMatchStar { range: 234..236, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -204,6 +237,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 247..251, }, ), @@ -211,11 +245,14 @@ Module( }, MatchCase { range: 256..284, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 261..270, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 261..264, id: Name("Foo"), ctx: Load, @@ -223,17 +260,21 @@ Module( ), arguments: PatternArguments { range: 264..270, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 265..269, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 265..266, + node_index: AtomicNodeIndex(..), }, pattern: MatchStar( PatternMatchStar { range: 267..269, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -246,6 +287,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 280..284, }, ), @@ -253,15 +295,19 @@ Module( }, MatchCase { range: 289..312, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 294..298, + node_index: AtomicNodeIndex(..), keys: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 295..297, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 296..297, id: Name("_"), ctx: Store, @@ -275,8 +321,10 @@ Module( MatchValue( PatternMatchValue { range: 297..297, + node_index: AtomicNodeIndex(..), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 297..297, id: Name(""), ctx: Invalid, @@ -292,6 +340,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 308..312, }, ), @@ -299,15 +348,19 @@ Module( }, MatchCase { range: 317..343, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 322..329, + node_index: AtomicNodeIndex(..), keys: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 323..325, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 324..325, id: Name("_"), ctx: Store, @@ -321,8 +374,10 @@ Module( MatchValue( PatternMatchValue { range: 327..328, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 327..328, value: Int( 1, @@ -339,6 +394,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 339..343, }, ), @@ -346,12 +402,15 @@ Module( }, MatchCase { range: 348..377, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 353..363, + node_index: AtomicNodeIndex(..), keys: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 354..358, }, ), @@ -360,6 +419,7 @@ Module( MatchStar( PatternMatchStar { range: 360..362, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -371,6 +431,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 373..377, }, ), @@ -378,14 +439,18 @@ Module( }, MatchCase { range: 382..407, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 387..393, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 387..393, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 387..388, value: Int( 1, @@ -395,9 +460,11 @@ Module( op: Add, right: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 391..393, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 392..393, id: Name("_"), ctx: Store, @@ -414,6 +481,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 403..407, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__unary_add_usage.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__unary_add_usage.py.snap index f4dfce5b70..b0a9f945ab 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__unary_add_usage.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__match__unary_add_usage.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/invalid/statements/match/unary_add_usage.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..269, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 74..268, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..87, id: Name("subject"), ctx: Load, @@ -23,15 +25,19 @@ Module( cases: [ MatchCase { range: 93..114, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 98..100, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 98..100, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 99..100, value: Int( 1, @@ -46,6 +52,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 110..114, }, ), @@ -53,15 +60,19 @@ Module( }, MatchCase { range: 119..149, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 124..135, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 124..125, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 124..125, value: Int( 1, @@ -73,12 +84,15 @@ Module( MatchValue( PatternMatchValue { range: 128..130, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 128..130, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 129..130, value: Int( 2, @@ -92,12 +106,15 @@ Module( MatchValue( PatternMatchValue { range: 133..135, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 133..135, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 134..135, value: Int( 3, @@ -115,6 +132,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 145..149, }, ), @@ -122,15 +140,19 @@ Module( }, MatchCase { range: 154..184, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 159..170, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 160..161, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 160..161, value: Int( 1, @@ -142,12 +164,15 @@ Module( MatchValue( PatternMatchValue { range: 163..165, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 163..165, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 164..165, value: Int( 2, @@ -161,12 +186,15 @@ Module( MatchValue( PatternMatchValue { range: 167..169, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 167..169, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 168..169, value: Int( 3, @@ -184,6 +212,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 180..184, }, ), @@ -191,11 +220,14 @@ Module( }, MatchCase { range: 189..223, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 194..209, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 194..197, id: Name("Foo"), ctx: Load, @@ -203,23 +235,29 @@ Module( ), arguments: PatternArguments { range: 197..209, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 198..202, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 198..199, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 200..202, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 200..202, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 201..202, value: Int( 1, @@ -233,19 +271,24 @@ Module( }, PatternKeyword { range: 204..208, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("y"), range: 204..205, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 206..208, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 206..208, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 207..208, value: Int( 2, @@ -265,6 +308,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 219..223, }, ), @@ -272,18 +316,22 @@ Module( }, MatchCase { range: 228..268, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 233..254, + node_index: AtomicNodeIndex(..), keys: [ BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 234..238, value: true, }, ), BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 244..249, value: false, }, @@ -293,12 +341,15 @@ Module( MatchValue( PatternMatchValue { range: 240..242, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 240..242, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 241..242, value: Int( 1, @@ -312,12 +363,15 @@ Module( MatchValue( PatternMatchValue { range: 251..253, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 251..253, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 252..253, value: Int( 2, @@ -336,6 +390,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 264..268, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__ambiguous_lpar_with_items.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__ambiguous_lpar_with_items.py.snap index e05f49c03b..3c07014614 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__ambiguous_lpar_with_items.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__ambiguous_lpar_with_items.py.snap @@ -7,21 +7,26 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/with/ambiguou ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..950, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 163..188, is_async: false, items: [ WithItem { range: 168..182, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 168..182, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 169..174, id: Name("item1"), ctx: Load, @@ -29,6 +34,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 176..181, id: Name("item2"), ctx: Load, @@ -45,9 +51,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 185..188, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 185..188, }, ), @@ -58,17 +66,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 189..219, is_async: false, items: [ WithItem { range: 194..208, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 194..208, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 195..200, id: Name("item1"), ctx: Load, @@ -76,6 +88,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 202..207, id: Name("item2"), ctx: Load, @@ -90,8 +103,10 @@ Module( }, WithItem { range: 213..214, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 213..214, id: Name("f"), ctx: Load, @@ -103,9 +118,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 216..219, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 216..219, }, ), @@ -116,17 +133,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 220..252, is_async: false, items: [ WithItem { range: 225..239, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 225..239, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 226..231, id: Name("item1"), ctx: Load, @@ -134,6 +155,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 233..238, id: Name("item2"), ctx: Load, @@ -148,8 +170,10 @@ Module( }, WithItem { range: 241..246, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 241..246, id: Name("item3"), ctx: Load, @@ -161,9 +185,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 249..252, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 249..252, }, ), @@ -174,16 +200,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 253..270, is_async: false, items: [ WithItem { range: 258..265, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 259..264, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 260..264, id: Name("item"), ctx: Load, @@ -198,9 +228,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 267..270, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 267..270, }, ), @@ -211,16 +243,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 271..293, is_async: false, items: [ WithItem { range: 276..288, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 277..282, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 278..282, id: Name("item"), ctx: Load, @@ -232,6 +268,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 287..288, id: Name("f"), ctx: Store, @@ -243,9 +280,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 290..293, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 290..293, }, ), @@ -256,16 +295,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 294..321, is_async: false, items: [ WithItem { range: 300..315, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 300..310, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 300..304, id: Name("item"), ctx: Store, @@ -273,6 +316,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 308..310, value: Int( 10, @@ -284,6 +328,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 314..315, id: Name("f"), ctx: Store, @@ -295,9 +340,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 318..321, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 318..321, }, ), @@ -308,13 +355,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 322..357, is_async: false, items: [ WithItem { range: 328..333, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 328..333, id: Name("item1"), ctx: Load, @@ -324,11 +374,14 @@ Module( }, WithItem { range: 335..351, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 335..346, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 335..340, id: Name("item2"), ctx: Store, @@ -336,6 +389,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 344..346, value: Int( 10, @@ -347,6 +401,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 350..351, id: Name("f"), ctx: Store, @@ -358,9 +413,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 354..357, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 354..357, }, ), @@ -371,16 +428,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 358..396, is_async: false, items: [ WithItem { range: 363..384, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 363..384, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 364..365, id: Name("x"), ctx: Load, @@ -389,8 +450,10 @@ Module( generators: [ Comprehension { range: 366..384, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 370..371, id: Name("x"), ctx: Store, @@ -398,9 +461,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 375..384, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 375..380, id: Name("range"), ctx: Load, @@ -408,9 +473,11 @@ Module( ), arguments: Arguments { range: 380..384, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 381..383, value: Int( 10, @@ -433,8 +500,10 @@ Module( }, WithItem { range: 386..390, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 386..390, id: Name("item"), ctx: Load, @@ -446,9 +515,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 393..396, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 393..396, }, ), @@ -459,17 +530,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 397..410, is_async: false, items: [ WithItem { range: 402..410, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 402..410, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 403..407, id: Name("item"), ctx: Load, @@ -477,6 +552,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 409..410, id: Name("x"), ctx: Load, @@ -495,10 +571,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 411..429, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 415..416, id: Name("x"), ctx: Store, @@ -506,9 +584,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 420..429, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 420..425, id: Name("range"), ctx: Load, @@ -516,9 +596,11 @@ Module( ), arguments: Arguments { range: 425..429, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 426..428, value: Int( 10, @@ -536,9 +618,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 432..435, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 432..435, }, ), @@ -546,16 +630,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 496..515, is_async: false, items: [ WithItem { range: 502..509, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 503..508, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 504..508, id: Name("item"), ctx: Load, @@ -570,9 +658,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 512..515, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 512..515, }, ), @@ -583,19 +673,24 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 517..551, is_async: false, items: [ WithItem { range: 522..539, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 522..539, elt: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 523..525, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 524..525, id: Name("x"), ctx: Load, @@ -607,8 +702,10 @@ Module( generators: [ Comprehension { range: 526..539, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 530..531, id: Name("x"), ctx: Store, @@ -616,6 +713,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 535..539, id: Name("iter"), ctx: Load, @@ -632,8 +730,10 @@ Module( }, WithItem { range: 541..545, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 541..545, id: Name("item"), ctx: Load, @@ -645,9 +745,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 548..551, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 548..551, }, ), @@ -658,17 +760,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 552..567, is_async: false, items: [ WithItem { range: 557..567, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 557..567, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 558..563, id: Name("item1"), ctx: Load, @@ -676,9 +782,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 565..567, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 566..567, id: Name("x"), ctx: Load, @@ -700,10 +808,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 568..588, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 572..573, id: Name("x"), ctx: Store, @@ -711,10 +821,12 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 577..588, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 577..581, id: Name("iter"), ctx: Load, @@ -722,6 +834,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 583..588, id: Name("item2"), ctx: Load, @@ -738,9 +851,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 591..594, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 591..594, }, ), @@ -748,13 +863,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 595..617, is_async: false, items: [ WithItem { range: 601..607, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 601..602, id: Name("x"), ctx: Load, @@ -763,6 +881,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 606..607, id: Name("f"), ctx: Store, @@ -772,11 +891,14 @@ Module( }, WithItem { range: 609..611, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 609..611, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 610..611, id: Name("y"), ctx: Load, @@ -791,9 +913,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 614..617, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 614..617, }, ), @@ -804,16 +928,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 618..640, is_async: false, items: [ WithItem { range: 624..626, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 624..626, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 625..626, id: Name("x"), ctx: Load, @@ -826,8 +954,10 @@ Module( }, WithItem { range: 628..634, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 628..629, id: Name("y"), ctx: Load, @@ -836,6 +966,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 633..634, id: Name("f"), ctx: Store, @@ -847,9 +978,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 637..640, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 637..640, }, ), @@ -860,17 +993,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 641..663, is_async: false, items: [ WithItem { range: 646..658, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 646..658, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 647..648, id: Name("x"), ctx: Load, @@ -878,10 +1015,12 @@ Module( ), Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 650..657, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 656..657, id: Name("y"), ctx: Load, @@ -901,9 +1040,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 660..663, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 660..663, }, ), @@ -914,17 +1055,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 664..689, is_async: false, items: [ WithItem { range: 669..684, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 669..684, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 670..671, id: Name("x"), ctx: Load, @@ -932,14 +1077,17 @@ Module( ), Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 673..683, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 679..683, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 679..680, id: Name("y"), ctx: Load, @@ -947,6 +1095,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 682..683, id: Name("z"), ctx: Load, @@ -971,9 +1120,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 686..689, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 686..689, }, ), @@ -984,17 +1135,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 690..717, is_async: false, items: [ WithItem { range: 695..712, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 695..712, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 696..697, id: Name("x"), ctx: Load, @@ -1002,9 +1157,11 @@ Module( ), YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 699..711, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 710..711, id: Name("y"), ctx: Load, @@ -1023,9 +1180,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 714..717, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 714..717, }, ), @@ -1036,13 +1195,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 718..734, is_async: false, items: [ WithItem { range: 724..730, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 724..725, id: Name("x"), ctx: Load, @@ -1051,6 +1213,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 729..730, id: Name("f"), ctx: Store, @@ -1060,8 +1223,10 @@ Module( }, WithItem { range: 732..733, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 732..733, id: Name("y"), ctx: Load, @@ -1075,9 +1240,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 738..744, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 738..739, id: Name("f"), ctx: Store, @@ -1085,6 +1252,7 @@ Module( ), annotation: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 741..744, }, ), @@ -1094,16 +1262,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 745..777, is_async: false, items: [ WithItem { range: 750..771, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 750..766, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 751..752, id: Name("x"), ctx: Load, @@ -1112,8 +1284,10 @@ Module( generators: [ Comprehension { range: 753..766, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 757..758, id: Name("x"), ctx: Store, @@ -1121,6 +1295,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 762..766, id: Name("iter"), ctx: Load, @@ -1136,6 +1311,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 770..771, id: Name("y"), ctx: Store, @@ -1147,9 +1323,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 774..777, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 774..777, }, ), @@ -1160,13 +1338,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 837..854, is_async: false, items: [ WithItem { range: 843..853, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 844..848, id: Name("item"), ctx: Load, @@ -1175,6 +1356,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 852..853, id: Name("f"), ctx: Store, @@ -1188,9 +1370,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 857..860, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 857..860, }, ), @@ -1198,13 +1382,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 862..878, is_async: false, items: [ WithItem { range: 868..877, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 868..872, id: Name("item"), ctx: Load, @@ -1213,6 +1400,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 876..877, id: Name("f"), ctx: Store, @@ -1226,9 +1414,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 880..886, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 880..881, id: Name("x"), ctx: Store, @@ -1236,6 +1426,7 @@ Module( ), annotation: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 883..886, }, ), @@ -1245,13 +1436,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 887..904, is_async: false, items: [ WithItem { range: 893..903, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 893..897, id: Name("item"), ctx: Load, @@ -1260,6 +1454,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 901..903, id: Name("f1"), ctx: Store, @@ -1273,9 +1468,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 908..915, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 908..910, id: Name("f2"), ctx: Store, @@ -1283,6 +1480,7 @@ Module( ), annotation: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 912..915, }, ), @@ -1292,13 +1490,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 916..950, is_async: false, items: [ WithItem { range: 922..932, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 922..927, id: Name("item1"), ctx: Load, @@ -1307,6 +1508,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 931..932, id: Name("f"), ctx: Store, @@ -1316,11 +1518,14 @@ Module( }, WithItem { range: 934..944, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 934..944, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 934..939, id: Name("item2"), ctx: Store, @@ -1328,6 +1533,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 943..944, value: Int( 0, @@ -1342,9 +1548,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 947..950, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 947..950, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__empty_with_items.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__empty_with_items.py.snap index 9d3a53afb0..1798ad6c23 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__empty_with_items.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__empty_with_items.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/with/empty_wi ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..105, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 88..98, is_async: false, items: [], body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 95..98, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 95..98, }, ), @@ -30,12 +34,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 100..105, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 100..105, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("x"), ctx: Load, @@ -44,6 +51,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..105, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unclosed_ambiguous_lpar.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unclosed_ambiguous_lpar.py.snap index e389ad7480..15bb2f058b 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unclosed_ambiguous_lpar.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unclosed_ambiguous_lpar.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/with/unclosed ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..14, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 0..14, is_async: false, items: [ WithItem { range: 5..6, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..6, id: Name(""), ctx: Invalid, @@ -29,12 +33,15 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..14, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 9..14, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("x"), ctx: Load, @@ -43,6 +50,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unclosed_ambiguous_lpar_eof.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unclosed_ambiguous_lpar_eof.py.snap index 057cb44426..ce5678ded9 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unclosed_ambiguous_lpar_eof.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unclosed_ambiguous_lpar_eof.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/with/unclosed ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..6, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 0..6, is_async: false, items: [ WithItem { range: 5..6, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..6, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unparenthesized_with_items.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unparenthesized_with_items.py.snap index 7182e64ab1..c93979143a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unparenthesized_with_items.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@statements__with__unparenthesized_with_items.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/invalid/statements/with/unparent ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..249, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 86..102, is_async: false, items: [ WithItem { range: 91..95, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..95, id: Name("item"), ctx: Load, @@ -29,6 +33,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 98..102, }, ), @@ -37,13 +42,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 103..124, is_async: false, items: [ WithItem { range: 108..117, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..112, id: Name("item"), ctx: Load, @@ -52,6 +60,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..117, id: Name("x"), ctx: Store, @@ -63,6 +72,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 120..124, }, ), @@ -71,16 +81,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 125..141, is_async: false, items: [ WithItem { range: 130..135, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 130..135, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..135, id: Name("item"), ctx: Load, @@ -95,6 +109,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 137..141, }, ), @@ -103,16 +118,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 142..163, is_async: false, items: [ WithItem { range: 147..157, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 147..152, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 148..152, id: Name("item"), ctx: Load, @@ -124,6 +143,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 156..157, id: Name("x"), ctx: Store, @@ -135,6 +155,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 159..163, }, ), @@ -143,16 +164,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 164..193, is_async: false, items: [ WithItem { range: 169..175, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 169..175, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..175, id: Name("item1"), ctx: Load, @@ -165,8 +190,10 @@ Module( }, WithItem { range: 177..187, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 177..182, id: Name("item2"), ctx: Load, @@ -175,6 +202,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 186..187, id: Name("f"), ctx: Store, @@ -186,6 +214,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 189..193, }, ), @@ -194,13 +223,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 194..223, is_async: false, items: [ WithItem { range: 199..209, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..204, id: Name("item1"), ctx: Load, @@ -209,6 +241,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 208..209, id: Name("f"), ctx: Store, @@ -218,11 +251,14 @@ Module( }, WithItem { range: 211..217, + node_index: AtomicNodeIndex(..), context_expr: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 211..217, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 212..217, id: Name("item2"), ctx: Load, @@ -237,6 +273,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 219..223, }, ), @@ -245,13 +282,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 224..249, is_async: false, items: [ WithItem { range: 229..233, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 229..233, id: Name("item"), ctx: Load, @@ -261,8 +301,10 @@ Module( }, WithItem { range: 237..243, + node_index: AtomicNodeIndex(..), context_expr: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 237..238, value: Int( 0, @@ -272,6 +314,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 242..243, id: Name("f"), ctx: Store, @@ -283,6 +326,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 245..249, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_empty_expression.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_empty_expression.py.snap index 423ad64c79..6b3811f0e1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_empty_expression.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_empty_expression.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/inline/err/t_string_empty_expres ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..58, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..49, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 44..49, value: TStringValue { inner: Single( TString( TString { range: 44..49, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 46..48, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..47, id: Name(""), ctx: Invalid, @@ -52,21 +58,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 50..57, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 50..57, value: TStringValue { inner: Single( TString( TString { range: 50..57, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 52..56, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..53, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_conversion_flag_name_tok.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_conversion_flag_name_tok.py.snap index b65770e8d8..ebf7817858 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_conversion_flag_name_tok.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_conversion_flag_name_tok.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/inline/err/t_string_invalid_conv ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..53, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..52, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 44..52, value: TStringValue { inner: Single( TString( TString { range: 44..52, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 46..51, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_conversion_flag_other_tok.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_conversion_flag_other_tok.py.snap index 10324a349f..f448523735 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_conversion_flag_other_tok.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_conversion_flag_other_tok.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/inline/err/t_string_invalid_conv ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..66, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..54, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 44..54, value: TStringValue { inner: Single( TString( TString { range: 44..54, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 46..53, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Load, @@ -52,21 +58,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 55..65, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 55..65, value: TStringValue { inner: Single( TString( TString { range: 55..65, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 57..64, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..59, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_starred_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_starred_expr.py.snap index a2fb0fda2d..b2a595bf80 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_starred_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_invalid_starred_expr.py.snap @@ -7,28 +7,35 @@ input_file: crates/ruff_python_parser/resources/inline/err/t_string_invalid_star ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..156, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 121..127, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 121..127, value: TStringValue { inner: Single( TString( TString { range: 121..127, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 123..126, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 124..125, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 125..125, id: Name(""), ctx: Invalid, @@ -58,29 +65,36 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 128..141, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 128..141, value: TStringValue { inner: Single( TString( TString { range: 128..141, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 130..140, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 131..139, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 132..139, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..133, id: Name("x"), ctx: Load, @@ -88,6 +102,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 138..139, id: Name("y"), ctx: Load, @@ -120,28 +135,35 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 142..155, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 142..155, value: TStringValue { inner: Single( TString( TString { range: 142..155, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 144..154, + node_index: AtomicNodeIndex(..), expression: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 145..153, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 146..153, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 152..153, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_lambda_without_parentheses.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_lambda_without_parentheses.py.snap index 1138fe8530..121d002f28 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_lambda_without_parentheses.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_lambda_without_parentheses.py.snap @@ -7,38 +7,50 @@ input_file: crates/ruff_python_parser/resources/inline/err/t_string_lambda_witho ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..61, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..60, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 44..60, value: TStringValue { inner: Single( TString( TString { range: 44..60, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 46..56, + node_index: AtomicNodeIndex(..), expression: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 47..56, parameters: Some( Parameters { range: 54..55, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 54..55, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 54..55, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 54..55, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -52,6 +64,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..56, id: Name(""), ctx: Invalid, @@ -67,6 +80,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 56..58, + node_index: AtomicNodeIndex(..), value: " x", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_unclosed_lbrace.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_unclosed_lbrace.py.snap index b910137829..5c1f43a2b7 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_unclosed_lbrace.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_unclosed_lbrace.py.snap @@ -7,25 +7,31 @@ input_file: crates/ruff_python_parser/resources/inline/err/t_string_unclosed_lbr ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..82, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..48, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 44..48, value: TStringValue { inner: Single( TString( TString { range: 44..48, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 46..47, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..47, id: Name(""), ctx: Invalid, @@ -52,21 +58,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..58, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 49..58, value: TStringValue { inner: Single( TString( TString { range: 49..58, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 51..58, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..55, id: Name("foo"), ctx: Load, @@ -93,21 +104,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 59..67, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 59..67, value: TStringValue { inner: Single( TString( TString { range: 59..67, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 61..66, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..65, id: Name("foo"), ctx: Load, @@ -139,9 +155,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..81, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 68..81, value: TStringValue { inner: Concatenated( @@ -149,12 +167,15 @@ Module( TString( TString { range: 68..72, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 70..71, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..71, id: Name(""), ctx: Invalid, @@ -176,12 +197,15 @@ Module( TString( TString { range: 73..81, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 77..78, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..78, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_unclosed_lbrace_in_format_spec.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_unclosed_lbrace_in_format_spec.py.snap index 3c16c4c161..117976d898 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_unclosed_lbrace_in_format_spec.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@t_string_unclosed_lbrace_in_format_spec.py.snap @@ -7,31 +7,38 @@ input_file: crates/ruff_python_parser/resources/inline/err/t_string_unclosed_lbr ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..73, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..56, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 44..56, value: TStringValue { inner: Single( TString( TString { range: 44..56, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 46..52, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 52..55, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("x"), ctx: Load, @@ -42,6 +49,7 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 55..55, + node_index: AtomicNodeIndex(..), elements: [], }, ), @@ -63,27 +71,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..72, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 57..72, value: TStringValue { inner: Single( TString( TString { range: 57..72, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 59..65, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 65..71, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("x"), ctx: Load, @@ -94,10 +108,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 68..71, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 68..71, + node_index: AtomicNodeIndex(..), value: ".3f", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_invalid_order.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_invalid_order.py.snap index f3525218f4..81e4bacde6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_invalid_order.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_invalid_order.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/try_stmt_invalid_orde ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..47, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..31, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -24,6 +27,7 @@ Module( finalbody: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 27..31, }, ), @@ -33,6 +37,7 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 42..46, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_missing_except_finally.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_missing_except_finally.py.snap index df9779babd..b86a2ad5bf 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_missing_except_finally.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_missing_except_finally.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/try_stmt_missing_exce ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..43, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..13, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -27,10 +30,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 14..42, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 23..27, }, ), @@ -39,6 +44,7 @@ Module( orelse: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 38..42, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_misspelled_except.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_misspelled_except.py.snap index 93dc9f223d..2bb1a1e828 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_misspelled_except.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_misspelled_except.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/try_stmt_misspelled_e ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..165, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..13, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -27,9 +30,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 14..20, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..19, id: Name("exept"), ctx: Store, @@ -37,6 +42,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..20, id: Name(""), ctx: Invalid, @@ -48,20 +54,24 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 54..58, }, ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 72..76, }, ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 77..82, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("a"), ctx: Store, @@ -70,6 +80,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 81..82, value: Int( 1, @@ -80,10 +91,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 83..113, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 92..96, }, ), @@ -92,11 +105,13 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 97..113, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 109..113, }, ), @@ -111,9 +126,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 114..120, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..119, id: Name("exept"), ctx: Store, @@ -121,6 +138,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..120, id: Name(""), ctx: Invalid, @@ -132,15 +150,18 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 154..158, }, ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 159..164, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 159..160, id: Name("b"), ctx: Store, @@ -149,6 +170,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 163..164, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_mixed_except_kind.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_mixed_except_kind.py.snap index 0117d56216..689c42622e 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_mixed_except_kind.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@try_stmt_mixed_except_kind.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/try_stmt_mixed_except ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..242, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..63, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -23,11 +26,13 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 14..30, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 26..30, }, ), @@ -37,9 +42,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 31..63, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..53, id: Name("ExceptionGroup"), ctx: Load, @@ -50,6 +57,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 59..63, }, ), @@ -64,10 +72,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 64..127, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 73..77, }, ), @@ -76,9 +86,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 78..110, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..100, id: Name("ExceptionGroup"), ctx: Load, @@ -89,6 +101,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 106..110, }, ), @@ -98,11 +111,13 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 111..127, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 123..127, }, ), @@ -117,10 +132,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 128..241, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 137..141, }, ), @@ -129,11 +146,13 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 142..158, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 154..158, }, ), @@ -143,11 +162,13 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 159..175, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 171..175, }, ), @@ -157,9 +178,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 176..208, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 184..198, id: Name("ExceptionGroup"), ctx: Load, @@ -170,6 +193,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 204..208, }, ), @@ -179,9 +203,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 209..241, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 217..231, id: Name("ExceptionGroup"), ctx: Load, @@ -192,6 +218,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 237..241, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@tuple_context_manager_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@tuple_context_manager_py38.py.snap index 4cb4a0a1bc..b0c18e8a43 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@tuple_context_manager_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@tuple_context_manager_py38.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/err/tuple_context_manager ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..327, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 216..236, is_async: false, items: [ WithItem { range: 222..225, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 222..225, id: Name("foo"), ctx: Load, @@ -27,8 +31,10 @@ Module( }, WithItem { range: 227..230, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 227..230, id: Name("bar"), ctx: Load, @@ -40,9 +46,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 233..236, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 233..236, }, ), @@ -53,16 +61,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 237..274, is_async: false, items: [ WithItem { range: 242..269, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 246..261, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 246..250, id: Name("open"), ctx: Load, @@ -70,14 +82,17 @@ Module( ), arguments: Arguments { range: 250..261, + node_index: AtomicNodeIndex(..), args: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 251..260, value: StringLiteralValue { inner: Single( StringLiteral { range: 251..260, + node_index: AtomicNodeIndex(..), value: "foo.txt", flags: StringLiteralFlags { quote_style: Single, @@ -97,6 +112,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 266..269, id: Name("foo"), ctx: Store, @@ -108,9 +124,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 271..274, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 271..274, }, ), @@ -121,13 +139,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 275..309, is_async: false, items: [ WithItem { range: 284..287, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 284..287, id: Name("foo"), ctx: Load, @@ -137,8 +158,10 @@ Module( }, WithItem { range: 291..294, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 291..294, id: Name("bar"), ctx: Load, @@ -148,8 +171,10 @@ Module( }, WithItem { range: 298..301, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 298..301, id: Name("baz"), ctx: Load, @@ -161,9 +186,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 306..309, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 306..309, }, ), @@ -174,13 +201,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 310..326, is_async: false, items: [ WithItem { range: 316..319, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 316..319, id: Name("foo"), ctx: Load, @@ -192,9 +222,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 323..326, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 323..326, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_alias_incomplete_stmt.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_alias_incomplete_stmt.py.snap index 8878c1663a..96e430a647 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_alias_incomplete_stmt.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_alias_incomplete_stmt.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/type_alias_incomplete_stmt.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..21, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..4, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("type"), ctx: Load, @@ -24,9 +26,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..9, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..9, id: Name("type"), ctx: Load, @@ -36,9 +40,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..11, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("x"), ctx: Load, @@ -48,9 +54,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 12..20, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("x"), ctx: Store, @@ -59,6 +67,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..20, id: Name(""), ctx: Invalid, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_alias_invalid_value_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_alias_invalid_value_expr.py.snap index 3b1d5c40ab..a7f11501f6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_alias_invalid_value_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_alias_invalid_value_expr.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/type_alias_invalid_va ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..67, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..11, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Store, @@ -22,9 +25,11 @@ Module( type_params: None, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 9..11, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("y"), ctx: Load, @@ -37,9 +42,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 12..28, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("x"), ctx: Store, @@ -48,10 +55,12 @@ Module( type_params: None, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 21..28, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("y"), ctx: Load, @@ -64,9 +73,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 29..50, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("x"), ctx: Store, @@ -75,9 +86,11 @@ Module( type_params: None, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 38..50, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("y"), ctx: Load, @@ -89,9 +102,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 51..61, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Store, @@ -100,6 +115,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("x"), ctx: Load, @@ -109,9 +125,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 65..66, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 65..66, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_default_py312.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_default_py312.py.snap index 68d3ff0524..c9de513d8a 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_default_py312.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_default_py312.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/type_param_default_py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..149, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 44..65, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("X"), ctx: Store, @@ -22,18 +25,22 @@ Module( type_params: Some( TypeParams { range: 50..59, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 51..58, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 51..52, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..58, id: Name("int"), ctx: Load, @@ -47,6 +54,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..65, id: Name("int"), ctx: Load, @@ -56,28 +64,34 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 66..87, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 70..71, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 71..80, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 72..79, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 72..73, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..79, id: Name("int"), ctx: Load, @@ -91,6 +105,9 @@ Module( ), parameters: Parameters { range: 80..82, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -101,9 +118,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 84..87, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 84..87, }, ), @@ -114,27 +133,33 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 88..111, decorator_list: [], name: Identifier { id: Name("C"), range: 94..95, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 95..104, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 96..103, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 96..97, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..103, id: Name("int"), ctx: Load, @@ -149,6 +174,7 @@ Module( arguments: Some( Arguments { range: 104..106, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -156,9 +182,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 108..111, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 108..111, }, ), @@ -169,22 +197,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 112..148, decorator_list: [], name: Identifier { id: Name("D"), range: 118..119, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 119..141, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 120..121, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("S"), range: 120..121, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -193,14 +226,17 @@ Module( TypeVar( TypeParamTypeVar { range: 123..130, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 123..124, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..130, id: Name("int"), ctx: Load, @@ -212,14 +248,17 @@ Module( TypeVar( TypeParamTypeVar { range: 132..140, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 132..133, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..140, id: Name("uint"), ctx: Load, @@ -234,6 +273,7 @@ Module( arguments: Some( Arguments { range: 141..143, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -241,9 +281,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 145..148, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 145..148, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_invalid_bound_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_invalid_bound_expr.py.snap index 6de003c414..ce4ecda18c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_invalid_bound_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_invalid_bound_expr.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/type_param_invalid_bo ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..103, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..21, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -22,20 +25,25 @@ Module( type_params: Some( TypeParams { range: 6..15, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 7..14, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 7..8, + node_index: AtomicNodeIndex(..), }, bound: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 10..14, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..14, id: Name("int"), ctx: Load, @@ -53,6 +61,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..21, id: Name("int"), ctx: Load, @@ -62,9 +71,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 22..46, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("X"), ctx: Store, @@ -73,21 +84,26 @@ Module( type_params: Some( TypeParams { range: 28..40, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 29..39, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 29..30, + node_index: AtomicNodeIndex(..), }, bound: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 32..39, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("x"), ctx: Load, @@ -105,6 +121,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..46, id: Name("int"), ctx: Load, @@ -114,9 +131,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 47..76, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..53, id: Name("X"), ctx: Store, @@ -125,20 +144,25 @@ Module( type_params: Some( TypeParams { range: 53..70, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 54..69, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 54..55, + node_index: AtomicNodeIndex(..), }, bound: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 57..69, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -155,6 +179,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..76, id: Name("int"), ctx: Load, @@ -164,9 +189,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 77..102, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("X"), ctx: Store, @@ -175,17 +202,21 @@ Module( type_params: Some( TypeParams { range: 83..96, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 84..88, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 84..85, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..88, id: Name("x"), ctx: Load, @@ -198,9 +229,11 @@ Module( TypeVar( TypeParamTypeVar { range: 92..95, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("int"), range: 92..95, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -211,6 +244,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..102, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_missing_bound.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_missing_bound.py.snap index 0e9672fd1c..84551e10b6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_missing_bound.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_missing_bound.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/type_param_missing_bound.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..41, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..17, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..11, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 7..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 7..8, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -40,6 +45,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -49,9 +55,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 18..40, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("X"), ctx: Store, @@ -60,13 +68,16 @@ Module( type_params: Some( TypeParams { range: 24..34, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 25..28, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T1"), range: 25..27, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -75,9 +86,11 @@ Module( TypeVar( TypeParamTypeVar { range: 31..33, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T2"), range: 31..33, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -88,6 +101,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..40, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_bound.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_bound.py.snap index 79c0ae7689..7b4e3d833c 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_bound.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_bound.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/type_param_param_spec_bound.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..23, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..10, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..10, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 7..10, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 9..10, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -39,6 +44,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..10, id: Name(""), ctx: Invalid, @@ -48,9 +54,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..15, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..15, id: Name("int"), ctx: Load, @@ -60,9 +68,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..22, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_invalid_default_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_invalid_default_expr.py.snap index 757545ca6e..6cde8b6197 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_invalid_default_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_invalid_default_expr.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/type_param_param_spec ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..140, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..24, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -22,20 +25,25 @@ Module( type_params: Some( TypeParams { range: 6..18, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 7..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 9..10, + node_index: AtomicNodeIndex(..), }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 13..17, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -52,6 +60,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..24, id: Name("int"), ctx: Load, @@ -61,9 +70,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 25..52, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 30..31, id: Name("X"), ctx: Store, @@ -72,21 +83,26 @@ Module( type_params: Some( TypeParams { range: 31..46, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 32..45, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 34..35, + node_index: AtomicNodeIndex(..), }, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 38..45, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("x"), ctx: Load, @@ -103,6 +119,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..52, id: Name("int"), ctx: Load, @@ -112,9 +129,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 53..85, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..59, id: Name("X"), ctx: Store, @@ -123,20 +142,25 @@ Module( type_params: Some( TypeParams { range: 59..79, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 60..78, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 62..63, + node_index: AtomicNodeIndex(..), }, default: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 66..78, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("x"), ctx: Load, @@ -152,6 +176,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..85, id: Name("int"), ctx: Load, @@ -161,9 +186,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 86..114, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..92, id: Name("X"), ctx: Store, @@ -172,17 +199,21 @@ Module( type_params: Some( TypeParams { range: 92..108, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 93..100, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 95..96, + node_index: AtomicNodeIndex(..), }, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("x"), ctx: Load, @@ -194,9 +225,11 @@ Module( TypeVar( TypeParamTypeVar { range: 104..107, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("int"), range: 104..107, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -207,6 +240,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 111..114, id: Name("int"), ctx: Load, @@ -216,9 +250,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 115..139, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..121, id: Name("X"), ctx: Store, @@ -227,20 +263,25 @@ Module( type_params: Some( TypeParams { range: 121..133, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 122..132, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 124..125, + node_index: AtomicNodeIndex(..), }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 128..132, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..132, id: Name("int"), ctx: Load, @@ -257,6 +298,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..139, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_missing_default.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_missing_default.py.snap index 8ed2eb4c05..ce7099a5e3 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_missing_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_param_spec_missing_default.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/type_param_param_spec_missing_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..44, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..19, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..13, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 7..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 9..10, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -39,6 +44,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..19, id: Name("int"), ctx: Load, @@ -48,9 +54,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 20..43, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("X"), ctx: Store, @@ -59,13 +67,16 @@ Module( type_params: Some( TypeParams { range: 26..37, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 27..32, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 29..30, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -73,9 +84,11 @@ Module( TypeVar( TypeParamTypeVar { range: 34..36, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T2"), range: 34..36, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -86,6 +99,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..43, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_invalid_default_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_invalid_default_expr.py.snap index 9d93c799c7..17ce8c72fd 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_invalid_default_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_invalid_default_expr.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/type_param_type_var_i ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..163, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..22, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -22,21 +25,26 @@ Module( type_params: Some( TypeParams { range: 6..16, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 7..15, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 7..8, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 11..15, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..15, id: Name("int"), ctx: Load, @@ -53,6 +61,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..22, id: Name("int"), ctx: Load, @@ -62,9 +71,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 23..48, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("X"), ctx: Store, @@ -73,22 +84,27 @@ Module( type_params: Some( TypeParams { range: 29..42, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 30..41, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 30..31, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 34..41, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("x"), ctx: Load, @@ -105,6 +121,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..48, id: Name("int"), ctx: Load, @@ -114,9 +131,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 49..76, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..55, id: Name("X"), ctx: Store, @@ -125,22 +144,27 @@ Module( type_params: Some( TypeParams { range: 55..70, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 56..69, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 56..57, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 61..68, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..68, id: Name("x"), ctx: Load, @@ -157,6 +181,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..76, id: Name("int"), ctx: Load, @@ -166,9 +191,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 77..107, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("X"), ctx: Store, @@ -177,21 +204,26 @@ Module( type_params: Some( TypeParams { range: 83..101, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 84..100, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 84..85, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 88..100, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("x"), ctx: Load, @@ -207,6 +239,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..107, id: Name("int"), ctx: Load, @@ -216,9 +249,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 108..134, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..114, id: Name("X"), ctx: Store, @@ -227,18 +262,22 @@ Module( type_params: Some( TypeParams { range: 114..128, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 115..120, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 115..116, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 119..120, id: Name("x"), ctx: Load, @@ -250,9 +289,11 @@ Module( TypeVar( TypeParamTypeVar { range: 124..127, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("int"), range: 124..127, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -263,6 +304,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..134, id: Name("int"), ctx: Load, @@ -272,9 +314,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 135..162, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 140..141, id: Name("X"), ctx: Store, @@ -283,17 +327,21 @@ Module( type_params: Some( TypeParams { range: 141..156, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 142..155, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 142..143, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 145..148, id: Name("int"), ctx: Load, @@ -303,9 +351,11 @@ Module( default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 151..155, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 152..155, id: Name("int"), ctx: Load, @@ -322,6 +372,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 159..162, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_missing_default.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_missing_default.py.snap index 1547b5dd00..5ad35632e6 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_missing_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_missing_default.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/type_param_type_var_missing_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..64, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..17, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..11, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 7..10, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 7..8, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -40,6 +45,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -49,9 +55,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 18..40, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("X"), ctx: Store, @@ -60,17 +68,21 @@ Module( type_params: Some( TypeParams { range: 24..34, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 25..33, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 25..26, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..31, id: Name("int"), ctx: Load, @@ -85,6 +97,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..40, id: Name("int"), ctx: Load, @@ -94,9 +107,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 41..63, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("X"), ctx: Store, @@ -105,13 +120,16 @@ Module( type_params: Some( TypeParams { range: 47..57, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 48..52, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T1"), range: 48..50, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -120,9 +138,11 @@ Module( TypeVar( TypeParamTypeVar { range: 54..56, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T2"), range: 54..56, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -133,6 +153,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..63, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_bound.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_bound.py.snap index 3e6e16fa6f..3ffc891d81 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_bound.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_bound.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/type_param_type_var_tuple_bound.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..22, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..9, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..9, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 7..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 8..9, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -39,6 +44,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..9, id: Name(""), ctx: Invalid, @@ -48,9 +54,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 11..14, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..14, id: Name("int"), ctx: Load, @@ -60,9 +68,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..21, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..21, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_invalid_default_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_invalid_default_expr.py.snap index 61860a15ef..c6ab71d84f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_invalid_default_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_invalid_default_expr.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/type_param_type_var_t ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..147, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..24, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -22,20 +25,25 @@ Module( type_params: Some( TypeParams { range: 6..18, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 7..17, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 8..10, + node_index: AtomicNodeIndex(..), }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 13..17, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -52,6 +60,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..24, id: Name("int"), ctx: Load, @@ -61,9 +70,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 25..56, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 30..31, id: Name("X"), ctx: Store, @@ -72,25 +83,31 @@ Module( type_params: Some( TypeParams { range: 31..50, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 32..49, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 33..35, + node_index: AtomicNodeIndex(..), }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 38..49, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 39..49, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..42, id: Name("int"), ctx: Load, @@ -98,6 +115,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..49, id: Name("str"), ctx: Load, @@ -117,6 +135,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..56, id: Name("int"), ctx: Load, @@ -126,9 +145,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 57..84, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("X"), ctx: Store, @@ -137,21 +158,26 @@ Module( type_params: Some( TypeParams { range: 63..78, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 64..77, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 65..67, + node_index: AtomicNodeIndex(..), }, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 70..77, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..77, id: Name("x"), ctx: Load, @@ -168,6 +194,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..84, id: Name("int"), ctx: Load, @@ -177,9 +204,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 85..117, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("X"), ctx: Store, @@ -188,20 +217,25 @@ Module( type_params: Some( TypeParams { range: 91..111, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 92..110, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 93..95, + node_index: AtomicNodeIndex(..), }, default: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 98..110, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 109..110, id: Name("x"), ctx: Load, @@ -217,6 +251,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..117, id: Name("int"), ctx: Load, @@ -226,9 +261,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 118..146, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 123..124, id: Name("X"), ctx: Store, @@ -237,17 +274,21 @@ Module( type_params: Some( TypeParams { range: 124..140, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 125..132, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 126..128, + node_index: AtomicNodeIndex(..), }, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..132, id: Name("x"), ctx: Load, @@ -259,9 +300,11 @@ Module( TypeVar( TypeParamTypeVar { range: 136..139, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("int"), range: 136..139, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -272,6 +315,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 143..146, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_missing_default.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_missing_default.py.snap index 17303b6687..b7e862a105 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_missing_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_param_type_var_tuple_missing_default.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/type_param_type_var_tuple_missing_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..44, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..19, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..13, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 7..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 8..10, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -39,6 +44,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..19, id: Name("int"), ctx: Load, @@ -48,9 +54,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 20..43, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("X"), ctx: Store, @@ -59,13 +67,16 @@ Module( type_params: Some( TypeParams { range: 26..37, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 27..32, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 28..30, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -73,9 +84,11 @@ Module( TypeVar( TypeParamTypeVar { range: 34..36, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T2"), range: 34..36, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -86,6 +99,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..43, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_params_empty.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_params_empty.py.snap index fff0c28aa0..fd3e6b168f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_params_empty.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_params_empty.py.snap @@ -1,32 +1,38 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/type_params_empty.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..52, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..21, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 7..9, + node_index: AtomicNodeIndex(..), type_params: [], }, ), parameters: Parameters { range: 9..11, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -37,6 +43,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 17..21, }, ), @@ -45,9 +52,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 22..51, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..36, id: Name("ListOrSet"), ctx: Store, @@ -56,14 +65,17 @@ Module( type_params: Some( TypeParams { range: 36..38, + node_index: AtomicNodeIndex(..), type_params: [], }, ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 41..51, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..45, id: Name("list"), ctx: Load, @@ -72,6 +84,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..51, id: Name("set"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_stmt_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_stmt_py311.py.snap index dfb7a15121..df2f28b34d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_stmt_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@type_stmt_py311.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/err/type_stmt_py311.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..57, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 44..56, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("x"), ctx: Store, @@ -22,6 +25,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..56, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_index_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_index_py38.py.snap index 55d81b949d..cbeb13482f 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_index_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_index_py38.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/err/unparenthesized_named ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..53, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..52, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 43..52, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..46, id: Name("lst"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), slice: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 47..51, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -34,6 +40,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 50..51, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_set_comp_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_set_comp_py38.py.snap index a608f55121..abbb6e06fa 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_set_comp_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_set_comp_py38.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/inline/err/unparenthesized_named ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..73, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..72, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 43..72, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 44..53, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..48, id: Name("last"), ctx: Store, @@ -27,6 +32,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..53, id: Name("x"), ctx: Load, @@ -37,8 +43,10 @@ Module( generators: [ Comprehension { range: 54..71, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..59, id: Name("x"), ctx: Store, @@ -46,9 +54,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 63..71, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..68, id: Name("range"), ctx: Load, @@ -56,9 +66,11 @@ Module( ), arguments: Arguments { range: 68..71, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 69..70, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_set_literal_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_set_literal_py38.py.snap index d03f0ebe48..16c0b89b53 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_set_literal_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unparenthesized_named_expr_set_literal_py38.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/inline/err/unparenthesized_named ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..88, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..57, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 43..57, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 44..50, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("x"), ctx: Store, @@ -28,6 +33,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 49..50, value: Int( 1, @@ -38,6 +44,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 52..53, value: Int( 2, @@ -46,6 +53,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 55..56, value: Int( 3, @@ -59,13 +67,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..72, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 58..72, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 59..60, value: Int( 1, @@ -74,9 +85,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 62..68, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Store, @@ -84,6 +97,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 67..68, value: Int( 2, @@ -94,6 +108,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 70..71, value: Int( 3, @@ -107,13 +122,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 73..87, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 73..87, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 74..75, value: Int( 1, @@ -122,6 +140,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 77..78, value: Int( 2, @@ -130,9 +149,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 80..86, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..81, id: Name("x"), ctx: Store, @@ -140,6 +161,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 85..86, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unterminated_fstring_newline_recovery.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unterminated_fstring_newline_recovery.py.snap index ad595e25bb..7f914852c9 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unterminated_fstring_newline_recovery.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@unterminated_fstring_newline_recovery.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/inline/err/unterminated_fstring_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..67, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..7, value: FStringValue { inner: Single( FString( FString { range: 0..7, + node_index: AtomicNodeIndex(..), elements: [], flags: FStringFlags { quote_style: Double, @@ -36,12 +40,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..13, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 8..13, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 1, @@ -51,6 +58,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 12..13, value: Int( 1, @@ -63,27 +71,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 14..24, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 14..24, value: FStringValue { inner: Single( FString( FString { range: 14..24, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 16..22, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 22..24, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("x"), ctx: Load, @@ -110,12 +124,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..30, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 25..30, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 25..26, value: Int( 2, @@ -125,6 +142,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 29..30, value: Int( 2, @@ -137,27 +155,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 31..42, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 31..42, value: FStringValue { inner: Single( FString( FString { range: 31..42, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 33..39, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 39..42, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("x"), ctx: Load, @@ -168,6 +192,7 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 42..42, + node_index: AtomicNodeIndex(..), elements: [], }, ), @@ -189,12 +214,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..48, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 43..48, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 43..44, value: Int( 3, @@ -204,6 +232,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 47..48, value: Int( 3, @@ -216,27 +245,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..60, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 49..60, value: FStringValue { inner: Single( FString( FString { range: 49..60, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 51..57, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 57..60, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..59, id: Name("x"), ctx: Load, @@ -263,12 +298,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 61..66, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 61..66, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 61..62, value: Int( 4, @@ -278,6 +316,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 65..66, value: Int( 4, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@walrus_py37.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@walrus_py37.py.snap index 402445a7f6..9949fa6cbc 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@walrus_py37.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@walrus_py37.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/err/walrus_py37.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..54, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 45..53, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 46..52, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("x"), ctx: Store, @@ -24,6 +28,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_invalid_test_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_invalid_test_expr.py.snap index 0e8d49ac75..4f87608d79 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_invalid_test_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_invalid_test_expr.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/while_stmt_invalid_test_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..70, body: [ While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 0..13, test: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 6..8, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Load, @@ -29,9 +32,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..13, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 10..13, }, ), @@ -43,13 +48,16 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 14..32, test: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 20..27, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("x"), ctx: Load, @@ -61,9 +69,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..32, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, }, ), @@ -75,9 +85,11 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 33..40, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("a"), ctx: Load, @@ -89,9 +101,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 42..48, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 42..43, id: Name("b"), ctx: Store, @@ -99,6 +113,7 @@ Module( ), annotation: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 45..48, }, ), @@ -108,12 +123,15 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 49..61, test: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 55..61, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..56, id: Name("a"), ctx: Store, @@ -121,6 +139,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 60..61, value: Int( 1, @@ -135,9 +154,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 63..69, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..64, id: Name("b"), ctx: Store, @@ -145,6 +166,7 @@ Module( ), annotation: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 66..69, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_missing_colon.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_missing_colon.py.snap index 39dfbec62b..7006daf690 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_missing_colon.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_missing_colon.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/while_stmt_missing_colon.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..40, body: [ While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 0..39, test: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 12..18, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..13, id: Name("a"), ctx: Load, @@ -29,6 +32,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 16..18, value: Int( 30, @@ -41,6 +45,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 35..39, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_missing_test.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_missing_test.py.snap index 59871538d3..e86db412de 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_missing_test.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@while_stmt_missing_test.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/while_stmt_missing_test.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..30, body: [ While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 0..11, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..5, id: Name(""), ctx: Invalid, @@ -23,9 +25,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..11, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 8..11, }, ), @@ -37,9 +41,11 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 12..29, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..17, id: Name(""), ctx: Invalid, @@ -48,10 +54,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 24..29, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("a"), ctx: Store, @@ -60,6 +68,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 28..29, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@with_items_parenthesized_missing_colon.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@with_items_parenthesized_missing_colon.py.snap index c73b00b2b3..8a24d7009d 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@with_items_parenthesized_missing_colon.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@with_items_parenthesized_missing_colon.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/with_items_parenthesized_missing_colon.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..57, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 28..56, is_async: false, items: [ WithItem { range: 34..39, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..39, id: Name("item1"), ctx: Load, @@ -28,8 +31,10 @@ Module( }, WithItem { range: 41..46, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..46, id: Name("item2"), ctx: Load, @@ -41,6 +46,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 52..56, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@with_items_parenthesized_missing_comma.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@with_items_parenthesized_missing_comma.py.snap index 817874cdbe..7a3cf04fb1 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@with_items_parenthesized_missing_comma.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@with_items_parenthesized_missing_comma.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/err/with_items_parenthesized_missing_comma.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..160, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 0..23, is_async: false, items: [ WithItem { range: 6..11, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..11, id: Name("item1"), ctx: Load, @@ -28,8 +31,10 @@ Module( }, WithItem { range: 12..17, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..17, id: Name("item2"), ctx: Load, @@ -41,9 +46,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..23, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 20..23, }, ), @@ -54,13 +61,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 24..53, is_async: false, items: [ WithItem { range: 30..41, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 30..35, id: Name("item1"), ctx: Load, @@ -69,6 +79,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..41, id: Name("f1"), ctx: Store, @@ -78,8 +89,10 @@ Module( }, WithItem { range: 42..47, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 42..47, id: Name("item2"), ctx: Load, @@ -91,9 +104,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 50..53, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 50..53, }, ), @@ -104,13 +119,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 54..91, is_async: false, items: [ WithItem { range: 60..65, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..65, id: Name("item1"), ctx: Load, @@ -120,8 +138,10 @@ Module( }, WithItem { range: 67..72, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..72, id: Name("item2"), ctx: Load, @@ -131,8 +151,10 @@ Module( }, WithItem { range: 73..78, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..78, id: Name("item3"), ctx: Load, @@ -142,8 +164,10 @@ Module( }, WithItem { range: 80..85, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..85, id: Name("item4"), ctx: Load, @@ -155,9 +179,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 88..91, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 88..91, }, ), @@ -168,13 +194,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 92..135, is_async: false, items: [ WithItem { range: 98..103, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..103, id: Name("item1"), ctx: Load, @@ -184,8 +213,10 @@ Module( }, WithItem { range: 105..116, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..110, id: Name("item2"), ctx: Load, @@ -194,6 +225,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..116, id: Name("f1"), ctx: Store, @@ -203,8 +235,10 @@ Module( }, WithItem { range: 117..122, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 117..122, id: Name("item3"), ctx: Load, @@ -214,8 +248,10 @@ Module( }, WithItem { range: 124..129, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 124..129, id: Name("item4"), ctx: Load, @@ -227,9 +263,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 132..135, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 132..135, }, ), @@ -240,17 +278,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 136..159, is_async: false, items: [ WithItem { range: 141..154, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 141..154, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..147, id: Name("item1"), ctx: Load, @@ -258,6 +300,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 149..154, id: Name("item2"), ctx: Load, @@ -274,9 +317,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 156..159, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 156..159, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@write_to_debug_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@write_to_debug_expr.py.snap index 348aa344d8..cf762a1792 100644 --- a/crates/ruff_python_parser/tests/snapshots/invalid_syntax@write_to_debug_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/invalid_syntax@write_to_debug_expr.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/err/write_to_debug_expr.p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..83, body: [ Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 0..13, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..13, id: Name("__debug__"), ctx: Del, @@ -25,10 +28,12 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 14..36, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("x"), ctx: Del, @@ -36,6 +41,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("y"), ctx: Del, @@ -43,6 +49,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..33, id: Name("__debug__"), ctx: Del, @@ -50,6 +57,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("z"), ctx: Del, @@ -60,10 +68,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 37..50, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..46, id: Name("__debug__"), ctx: Store, @@ -72,6 +82,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 49..50, value: Int( 1, @@ -82,14 +93,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 51..82, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 51..69, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("x"), ctx: Store, @@ -97,6 +111,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..55, id: Name("y"), ctx: Store, @@ -104,6 +119,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..66, id: Name("__debug__"), ctx: Store, @@ -111,6 +127,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("z"), ctx: Store, @@ -124,10 +141,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 72..82, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 72..73, value: Int( 1, @@ -136,6 +155,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 75..76, value: Int( 2, @@ -144,6 +164,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..79, value: Int( 3, @@ -152,6 +173,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 81..82, value: Int( 4, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@all_async_comprehension_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@all_async_comprehension_py310.py.snap index 85cb132698..411a58148d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@all_async_comprehension_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@all_async_comprehension_py310.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/all_async_comprehensio ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..126, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..125, is_async: true, decorator_list: [], name: Identifier { id: Name("test"), range: 54..58, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 58..60, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,16 +37,20 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 62..125, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 69..125, elt: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 70..100, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..72, id: Name("x"), ctx: Load, @@ -49,8 +59,10 @@ Module( generators: [ Comprehension { range: 73..99, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("x"), ctx: Store, @@ -58,9 +70,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 88..99, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..96, id: Name("elements"), ctx: Load, @@ -68,9 +82,11 @@ Module( ), arguments: Arguments { range: 96..99, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 97..98, id: Name("n"), ctx: Load, @@ -90,8 +106,10 @@ Module( generators: [ Comprehension { range: 101..124, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 111..112, id: Name("n"), ctx: Store, @@ -99,9 +117,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 116..124, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..121, id: Name("range"), ctx: Load, @@ -109,9 +129,11 @@ Module( ), arguments: Arguments { range: 121..124, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..123, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@ambiguous_lpar_with_items_binary_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@ambiguous_lpar_with_items_binary_expr.py.snap index bfcd7c88d8..40c7d68cfd 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@ambiguous_lpar_with_items_binary_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@ambiguous_lpar_with_items_binary_expr.py.snap @@ -1,29 +1,33 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/ambiguous_lpar_with_items_binary_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..337, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 124..143, is_async: false, items: [ WithItem { range: 129..138, + node_index: AtomicNodeIndex(..), context_expr: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 129..138, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 130..131, id: Name("a"), ctx: Load, @@ -31,6 +35,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 137..138, id: Name("b"), ctx: Load, @@ -45,9 +50,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 140..143, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 140..143, }, ), @@ -58,16 +65,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 144..166, is_async: false, items: [ WithItem { range: 149..161, + node_index: AtomicNodeIndex(..), context_expr: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 149..161, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..151, id: Name("a"), ctx: Load, @@ -79,6 +90,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..161, id: Name("b"), ctx: Load, @@ -93,9 +105,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 163..166, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 163..166, }, ), @@ -106,18 +120,22 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 196..220, is_async: false, items: [ WithItem { range: 201..215, + node_index: AtomicNodeIndex(..), context_expr: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 201..215, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 202..203, id: Name("a"), ctx: Load, @@ -125,11 +143,13 @@ Module( ), BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 208..215, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 208..209, id: Name("b"), ctx: Load, @@ -137,6 +157,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 214..215, id: Name("c"), ctx: Load, @@ -154,9 +175,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 217..220, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 217..220, }, ), @@ -167,23 +190,28 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 221..245, is_async: false, items: [ WithItem { range: 226..240, + node_index: AtomicNodeIndex(..), context_expr: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 226..240, op: Or, values: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 226..235, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 227..228, id: Name("a"), ctx: Load, @@ -191,6 +219,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 234..235, id: Name("b"), ctx: Load, @@ -201,6 +230,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 239..240, id: Name("c"), ctx: Load, @@ -215,9 +245,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 242..245, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 242..245, }, ), @@ -228,22 +260,28 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 246..272, is_async: false, items: [ WithItem { range: 251..267, + node_index: AtomicNodeIndex(..), context_expr: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 251..267, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 251..263, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 252..257, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 252..253, id: Name("a"), ctx: Load, @@ -252,6 +290,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 256..257, id: Name("b"), ctx: Load, @@ -262,6 +301,7 @@ Module( op: LShift, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 262..263, id: Name("c"), ctx: Load, @@ -272,6 +312,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 266..267, id: Name("d"), ctx: Load, @@ -285,9 +326,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 269..272, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 269..272, }, ), @@ -298,19 +341,24 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 312..336, is_async: false, items: [ WithItem { range: 317..331, + node_index: AtomicNodeIndex(..), context_expr: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 317..331, left: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 317..323, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 318..319, id: Name("a"), ctx: Load, @@ -318,6 +366,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 321..322, value: Int( 0, @@ -330,9 +379,11 @@ Module( op: Add, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 326..331, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 326..327, id: Name("b"), ctx: Load, @@ -341,6 +392,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 330..331, id: Name("c"), ctx: Load, @@ -356,9 +408,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 333..336, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 333..336, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@ambiguous_lpar_with_items_if_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@ambiguous_lpar_with_items_if_expr.py.snap index 22de70bfc8..00a32e1ab3 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@ambiguous_lpar_with_items_if_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@ambiguous_lpar_with_items_if_expr.py.snap @@ -1,33 +1,38 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/ambiguous_lpar_with_items_if_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..153, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 0..28, is_async: false, items: [ WithItem { range: 5..23, + node_index: AtomicNodeIndex(..), context_expr: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 5..23, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 12..16, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -35,6 +40,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("y"), ctx: Load, @@ -48,9 +54,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -61,25 +69,31 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 29..71, is_async: false, items: [ WithItem { range: 34..66, + node_index: AtomicNodeIndex(..), context_expr: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 34..66, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 55..59, value: true, }, ), body: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 34..51, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("x"), ctx: Load, @@ -88,8 +102,10 @@ Module( generators: [ Comprehension { range: 37..50, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("x"), ctx: Store, @@ -97,6 +113,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..50, id: Name("iter"), ctx: Load, @@ -111,6 +128,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("y"), ctx: Load, @@ -124,9 +142,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..71, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 68..71, }, ), @@ -137,25 +157,31 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 72..120, is_async: false, items: [ WithItem { range: 77..115, + node_index: AtomicNodeIndex(..), context_expr: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 77..115, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 104..108, value: true, }, ), body: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 77..100, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..79, id: Name("x"), ctx: Load, @@ -164,8 +190,10 @@ Module( generators: [ Comprehension { range: 80..99, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("x"), ctx: Store, @@ -173,6 +201,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..99, id: Name("iter"), ctx: Load, @@ -187,6 +216,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..115, id: Name("y"), ctx: Load, @@ -200,9 +230,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 117..120, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 117..120, }, ), @@ -213,25 +245,31 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 121..152, is_async: false, items: [ WithItem { range: 126..147, + node_index: AtomicNodeIndex(..), context_expr: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 126..147, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 136..140, value: true, }, ), body: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 126..132, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("x"), ctx: Load, @@ -239,6 +277,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 130..131, value: Int( 0, @@ -250,6 +289,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("y"), ctx: Load, @@ -263,9 +303,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 149..152, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 149..152, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@ann_assign_stmt_simple_target.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@ann_assign_stmt_simple_target.py.snap index 8dbc86f993..c0dc9bb148 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@ann_assign_stmt_simple_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@ann_assign_stmt_simple_target.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/ann_assign_stmt_simple_target.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..45, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 0..6, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("a"), ctx: Store, @@ -22,6 +24,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("int"), ctx: Load, @@ -33,9 +36,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 17..25, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("a"), ctx: Store, @@ -43,6 +48,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..25, id: Name("int"), ctx: Load, @@ -54,12 +60,15 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 26..34, target: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 26..29, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("a"), ctx: Load, @@ -68,12 +77,14 @@ Module( attr: Identifier { id: Name("b"), range: 28..29, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 31..34, id: Name("int"), ctx: Load, @@ -85,12 +96,15 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 35..44, target: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 35..39, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("a"), ctx: Load, @@ -98,6 +112,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 37..38, value: Int( 0, @@ -109,6 +124,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..44, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@args_unparenthesized_generator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@args_unparenthesized_generator.py.snap index 043e187b9d..650a3b6e53 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@args_unparenthesized_generator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@args_unparenthesized_generator.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/ok/args_unparenthesized_g ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..107, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..51, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..51, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..3, id: Name("zip"), ctx: Load, @@ -24,12 +28,15 @@ Module( ), arguments: Arguments { range: 3..51, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 4..26, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("x"), ctx: Load, @@ -38,8 +45,10 @@ Module( generators: [ Comprehension { range: 7..25, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("x"), ctx: Store, @@ -47,9 +56,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 16..25, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..21, id: Name("range"), ctx: Load, @@ -57,9 +68,11 @@ Module( ), arguments: Arguments { range: 21..25, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 22..24, value: Int( 10, @@ -80,9 +93,11 @@ Module( ), Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 28..50, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("y"), ctx: Load, @@ -91,8 +106,10 @@ Module( generators: [ Comprehension { range: 31..49, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("y"), ctx: Store, @@ -100,9 +117,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 40..49, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..45, id: Name("range"), ctx: Load, @@ -110,9 +129,11 @@ Module( ), arguments: Arguments { range: 45..49, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 46..48, value: Int( 10, @@ -140,12 +161,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 52..77, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 52..77, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..55, id: Name("sum"), ctx: Load, @@ -153,12 +177,15 @@ Module( ), arguments: Arguments { range: 55..77, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 56..76, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Load, @@ -167,8 +194,10 @@ Module( generators: [ Comprehension { range: 58..76, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Store, @@ -176,9 +205,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 67..76, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..72, id: Name("range"), ctx: Load, @@ -186,9 +217,11 @@ Module( ), arguments: Arguments { range: 72..76, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 73..75, value: Int( 10, @@ -216,12 +249,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 78..106, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 78..106, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..81, id: Name("sum"), ctx: Load, @@ -229,12 +265,15 @@ Module( ), arguments: Arguments { range: 81..106, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 82..104, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("x"), ctx: Load, @@ -243,8 +282,10 @@ Module( generators: [ Comprehension { range: 85..103, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..90, id: Name("x"), ctx: Store, @@ -252,9 +293,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 94..103, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 94..99, id: Name("range"), ctx: Load, @@ -262,9 +305,11 @@ Module( ), arguments: Arguments { range: 99..103, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 100..102, value: Int( 10, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@assign_stmt_starred_expr_value.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@assign_stmt_starred_expr_value.py.snap index 5b5bf36875..a9a4f61078 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@assign_stmt_starred_expr_value.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@assign_stmt_starred_expr_value.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/assign_stmt_starred_ex ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..36, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..5, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("_"), ctx: Store, @@ -23,6 +26,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..5, value: Int( 4, @@ -33,10 +37,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 6..13, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("_"), ctx: Store, @@ -45,10 +51,12 @@ Module( ], value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 10..13, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 11..12, value: Int( 4, @@ -63,10 +71,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 14..25, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("_"), ctx: Store, @@ -75,17 +85,21 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 18..25, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 19..23, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 20..23, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..22, value: Int( 1, @@ -108,10 +122,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 26..35, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("_"), ctx: Store, @@ -120,17 +136,21 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 30..35, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 30..34, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 31..34, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@assign_targets_terminator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@assign_targets_terminator.py.snap index f188573e18..52e3ad2338 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@assign_targets_terminator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@assign_targets_terminator.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/assign_targets_terminator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..39, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..13, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -23,6 +25,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("y"), ctx: Store, @@ -30,6 +33,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("z"), ctx: Store, @@ -38,6 +42,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 12..13, value: Int( 1, @@ -48,13 +53,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..19, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 15..19, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..16, id: Name("a"), ctx: Load, @@ -62,6 +70,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("b"), ctx: Load, @@ -76,10 +85,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 20..33, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("x"), ctx: Store, @@ -87,6 +98,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("y"), ctx: Store, @@ -94,6 +106,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("z"), ctx: Store, @@ -102,6 +115,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 1, @@ -112,13 +126,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 34..38, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 34..38, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("a"), ctx: Load, @@ -126,6 +143,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..38, id: Name("b"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_for_statement.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_for_statement.py.snap index dc88085678..f01730187c 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_for_statement.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_for_statement.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/async_for_statement.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..30, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..29, is_async: true, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..16, id: Name("target"), ctx: Store, @@ -23,6 +25,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..24, id: Name("iter"), ctx: Load, @@ -31,9 +34,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..29, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 26..29, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_function_definition.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_function_definition.py.snap index 1ec8e02a7c..52ec987c61 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_function_definition.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_function_definition.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/async_function_definition.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..21, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..20, is_async: true, decorator_list: [], name: Identifier { id: Name("foo"), range: 10..13, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 13..15, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -32,9 +37,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..20, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_with_statement.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_with_statement.py.snap index 2e7e68961e..be892875b2 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_with_statement.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@async_with_statement.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/async_with_statement.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..21, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 0..20, is_async: true, items: [ WithItem { range: 11..15, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..15, id: Name("item"), ctx: Load, @@ -30,9 +33,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..20, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 17..20, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_def_arguments.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_def_arguments.py.snap index 37e765799f..d1f1b93250 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_def_arguments.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_def_arguments.py.snap @@ -1,31 +1,35 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/class_def_arguments.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..32, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 0..14, decorator_list: [], name: Identifier { id: Name("Foo"), range: 6..9, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 11..14, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 11..14, }, ), @@ -36,16 +40,19 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 15..31, decorator_list: [], name: Identifier { id: Name("Foo"), range: 21..24, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 24..26, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -53,9 +60,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..31, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 28..31, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_keyword_in_case_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_keyword_in_case_pattern.py.snap index 99fc05f67b..ad057f45f6 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_keyword_in_case_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_keyword_in_case_pattern.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/class_keyword_in_case_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..34, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..33, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..7, value: Int( 2, @@ -23,11 +26,14 @@ Module( cases: [ MatchCase { range: 13..33, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 18..28, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..23, id: Name("Class"), ctx: Load, @@ -35,22 +41,27 @@ Module( ), arguments: PatternArguments { range: 23..28, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 24..27, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 24..25, + node_index: AtomicNodeIndex(..), }, pattern: MatchAs( PatternMatchAs { range: 26..27, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 26..27, + node_index: AtomicNodeIndex(..), }, ), }, @@ -64,9 +75,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..33, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 30..33, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_type_params_py312.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_type_params_py312.py.snap index 8ca2d42037..e55236a706 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_type_params_py312.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@class_type_params_py312.py.snap @@ -7,34 +7,42 @@ input_file: crates/ruff_python_parser/resources/inline/ok/class_type_params_py31 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..96, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 44..95, decorator_list: [], name: Identifier { id: Name("Foo"), range: 50..53, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 53..90, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 54..69, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("S"), range: 54..55, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 57..69, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..61, id: Name("str"), ctx: Load, @@ -42,6 +50,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..68, id: Name("bytes"), ctx: Load, @@ -59,13 +68,16 @@ Module( TypeVar( TypeParamTypeVar { range: 71..79, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 71..72, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..79, id: Name("float"), ctx: Load, @@ -78,9 +90,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 81..84, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 82..84, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -88,9 +102,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 86..89, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 88..89, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -102,9 +118,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..95, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 92..95, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@comma_separated_regular_list_terminator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@comma_separated_regular_list_terminator.py.snap index 78f64ab6bd..9d9c72049a 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@comma_separated_regular_list_terminator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@comma_separated_regular_list_terminator.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/comma_separated_regular_list_terminator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..181, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 141..144, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 141..144, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 142..143, value: Int( 0, @@ -33,13 +36,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 145..151, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 145..151, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 146..147, value: Int( 0, @@ -48,6 +54,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 149..150, value: Int( 1, @@ -62,13 +69,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 152..159, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 152..159, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 153..154, value: Int( 0, @@ -77,6 +87,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 156..157, value: Int( 1, @@ -91,13 +102,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 160..169, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 160..169, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 161..162, value: Int( 0, @@ -106,6 +120,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 164..165, value: Int( 1, @@ -114,6 +129,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 167..168, value: Int( 2, @@ -128,13 +144,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 170..180, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 170..180, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 171..172, value: Int( 0, @@ -143,6 +162,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 174..175, value: Int( 1, @@ -151,6 +171,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 177..178, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@debug_rename_import.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@debug_rename_import.py.snap index 6289f59327..3a7f83d488 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@debug_rename_import.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@debug_rename_import.py.snap @@ -7,22 +7,27 @@ input_file: crates/ruff_python_parser/resources/inline/ok/debug_rename_import.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..86, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..25, names: [ Alias { range: 7..25, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("__debug__"), range: 7..16, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("debug"), range: 20..25, + node_index: AtomicNodeIndex(..), }, ), }, @@ -31,19 +36,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 26..52, module: Some( Identifier { id: Name("__debug__"), range: 31..40, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 48..52, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Some"), range: 48..52, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -53,24 +62,29 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 53..85, module: Some( Identifier { id: Name("x"), range: 58..59, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 67..85, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("__debug__"), range: 67..76, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("debug"), range: 80..85, + node_index: AtomicNodeIndex(..), }, ), }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_async_function.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_async_function.py.snap index 53f7aff8e8..14d34fa18b 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_async_function.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_async_function.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/decorator_async_function.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..32, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..31, is_async: true, decorator_list: [ Decorator { range: 0..10, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..10, id: Name("decorator"), ctx: Load, @@ -29,10 +32,14 @@ Module( name: Identifier { id: Name("foo"), range: 21..24, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 24..26, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -43,9 +50,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..31, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 28..31, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_await_expression_py39.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_await_expression_py39.py.snap index 20b6b6d6df..4ad9fb1dc8 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_await_expression_py39.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_await_expression_py39.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/decorator_await_expres ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..96, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..95, is_async: true, decorator_list: [], name: Identifier { id: Name("foo"), range: 55..58, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 58..60, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,16 +37,20 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 66..95, is_async: false, decorator_list: [ Decorator { range: 66..76, + node_index: AtomicNodeIndex(..), expression: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 67..76, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..76, id: Name("bar"), ctx: Load, @@ -53,10 +63,14 @@ Module( name: Identifier { id: Name("baz"), range: 85..88, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 88..90, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -67,9 +81,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..95, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 92..95, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_dotted_ident_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_dotted_ident_py38.py.snap index c18f2aa994..25bdacc747 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_dotted_ident_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_dotted_ident_py38.py.snap @@ -7,23 +7,29 @@ input_file: crates/ruff_python_parser/resources/inline/ok/decorator_expression_d ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..86, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..85, is_async: false, decorator_list: [ Decorator { range: 45..69, + node_index: AtomicNodeIndex(..), expression: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 46..69, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 46..61, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..53, id: Name("buttons"), ctx: Load, @@ -32,6 +38,7 @@ Module( attr: Identifier { id: Name("clicked"), range: 54..61, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -39,6 +46,7 @@ Module( attr: Identifier { id: Name("connect"), range: 62..69, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -48,10 +56,14 @@ Module( name: Identifier { id: Name("spam"), range: 74..78, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 78..80, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -62,9 +74,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 82..85, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 82..85, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_eval_hack_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_eval_hack_py38.py.snap index ff8fce644f..d3208630da 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_eval_hack_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_eval_hack_py38.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/inline/ok/decorator_expression_e ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..97, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..96, is_async: false, decorator_list: [ Decorator { range: 45..80, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 46..80, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..50, id: Name("eval"), ctx: Load, @@ -28,14 +33,17 @@ Module( ), arguments: Arguments { range: 50..80, + node_index: AtomicNodeIndex(..), args: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 51..79, value: StringLiteralValue { inner: Single( StringLiteral { range: 51..79, + node_index: AtomicNodeIndex(..), value: "buttons[0].clicked.connect", flags: StringLiteralFlags { quote_style: Double, @@ -57,10 +65,14 @@ Module( name: Identifier { id: Name("spam"), range: 85..89, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 89..91, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -71,9 +83,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 93..96, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 93..96, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_identity_hack_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_identity_hack_py38.py.snap index cedb9372d8..f83bba2ca6 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_identity_hack_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_identity_hack_py38.py.snap @@ -7,29 +7,38 @@ input_file: crates/ruff_python_parser/resources/inline/ok/decorator_expression_i ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..111, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..63, is_async: false, decorator_list: [], name: Identifier { id: Name("_"), range: 49..50, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 50..53, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 51..52, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 51..52, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 51..52, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -44,10 +53,12 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 55..63, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Load, @@ -61,16 +72,20 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 64..110, is_async: false, decorator_list: [ Decorator { range: 64..94, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 65..94, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("_"), ctx: Load, @@ -78,18 +93,23 @@ Module( ), arguments: Arguments { range: 66..94, + node_index: AtomicNodeIndex(..), args: [ Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 67..93, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 67..85, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 67..77, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..74, id: Name("buttons"), ctx: Load, @@ -97,6 +117,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 75..76, value: Int( 0, @@ -109,6 +130,7 @@ Module( attr: Identifier { id: Name("clicked"), range: 78..85, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -116,6 +138,7 @@ Module( attr: Identifier { id: Name("connect"), range: 86..93, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -130,10 +153,14 @@ Module( name: Identifier { id: Name("spam"), range: 99..103, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 103..105, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -144,9 +171,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 107..110, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 107..110, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_py39.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_py39.py.snap index 50c0502003..500d2a4b23 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_py39.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@decorator_expression_py39.py.snap @@ -7,26 +7,33 @@ input_file: crates/ruff_python_parser/resources/inline/ok/decorator_expression_p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..129, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 45..88, is_async: false, decorator_list: [ Decorator { range: 45..72, + node_index: AtomicNodeIndex(..), expression: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 46..72, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 46..64, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 46..56, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..53, id: Name("buttons"), ctx: Load, @@ -34,6 +41,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 0, @@ -46,6 +54,7 @@ Module( attr: Identifier { id: Name("clicked"), range: 57..64, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -53,6 +62,7 @@ Module( attr: Identifier { id: Name("connect"), range: 65..72, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -62,10 +72,14 @@ Module( name: Identifier { id: Name("spam"), range: 77..81, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 81..83, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -76,9 +90,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 85..88, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 85..88, }, ), @@ -89,19 +105,24 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 89..128, is_async: false, decorator_list: [ Decorator { range: 89..113, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 90..113, func: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 91..107, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..92, id: Name("x"), ctx: Store, @@ -109,19 +130,26 @@ Module( ), value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 96..107, parameters: Some( Parameters { range: 103..104, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 103..104, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 103..104, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 103..104, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -135,6 +163,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 106..107, id: Name("x"), ctx: Load, @@ -146,9 +175,11 @@ Module( ), arguments: Arguments { range: 108..113, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 109..112, id: Name("foo"), ctx: Load, @@ -164,10 +195,14 @@ Module( name: Identifier { id: Name("bar"), range: 118..121, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 121..123, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -178,9 +213,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 125..128, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 125..128, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@del_debug_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@del_debug_py38.py.snap index 1ba0db0c2d..ebaae1fd52 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@del_debug_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@del_debug_py38.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/del_debug_py38.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..57, body: [ Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 43..56, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..56, id: Name("__debug__"), ctx: Del, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@del_targets_terminator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@del_targets_terminator.py.snap index 8c0830ab6e..cd953e9041 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@del_targets_terminator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@del_targets_terminator.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/del_targets_terminator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..29, body: [ Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 0..8, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("a"), ctx: Del, @@ -23,6 +25,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("b"), ctx: Del, @@ -33,13 +36,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..14, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 10..14, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("c"), ctx: Load, @@ -47,6 +53,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("d"), ctx: Load, @@ -61,10 +68,12 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 15..23, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("a"), ctx: Del, @@ -72,6 +81,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("b"), ctx: Del, @@ -82,13 +92,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..28, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 24..28, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("c"), ctx: Load, @@ -96,6 +109,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("d"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@dotted_name_normalized_spaces.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@dotted_name_normalized_spaces.py.snap index 2d63a9baf1..9c3c3f576f 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@dotted_name_normalized_spaces.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@dotted_name_normalized_spaces.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/dotted_name_normalized_spaces.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..32, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..12, names: [ Alias { range: 7..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a.b.c"), range: 7..12, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -27,13 +30,16 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 13..31, names: [ Alias { range: 20..31, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a.b.c"), range: 20..31, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@duplicate_match_key_attr.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@duplicate_match_key_attr.py.snap index 56b342c8b5..277f35c150 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@duplicate_match_key_attr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@duplicate_match_key_attr.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/duplicate_match_key_at ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..40, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..39, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -22,15 +25,19 @@ Module( cases: [ MatchCase { range: 13..39, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 18..34, + node_index: AtomicNodeIndex(..), keys: [ Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 19..22, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("x"), ctx: Load, @@ -39,15 +46,18 @@ Module( attr: Identifier { id: Name("a"), range: 21..22, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 27..30, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("x"), ctx: Load, @@ -56,6 +66,7 @@ Module( attr: Identifier { id: Name("a"), range: 29..30, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -65,8 +76,10 @@ Module( MatchValue( PatternMatchValue { range: 24..25, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 24..25, value: Int( 1, @@ -78,8 +91,10 @@ Module( MatchValue( PatternMatchValue { range: 32..33, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 2, @@ -96,9 +111,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 36..39, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 36..39, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_star_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_star_py311.py.snap index f0a6018f84..c3efa0df92 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_star_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_star_py311.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/ok/except_star_py311.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..77, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 44..76, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..52, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 49..52, }, ), @@ -28,9 +32,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 53..76, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 61..71, id: Name("ValueError"), ctx: Load, @@ -41,9 +47,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 73..76, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 73..76, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_stmt_as_name_soft_keyword.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_stmt_as_name_soft_keyword.py.snap index c27aa0a2e9..07ef1ddbd3 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_stmt_as_name_soft_keyword.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_stmt_as_name_soft_keyword.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/except_stmt_as_name_soft_keyword.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..100, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..99, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5..8, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 5..8, }, ), @@ -29,9 +32,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 9..39, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..25, id: Name("Exception"), ctx: Load, @@ -42,14 +47,17 @@ Module( Identifier { id: Name("match"), range: 29..34, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 36..39, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 36..39, }, ), @@ -61,9 +69,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 40..69, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..56, id: Name("Exception"), ctx: Load, @@ -74,14 +84,17 @@ Module( Identifier { id: Name("case"), range: 60..64, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 66..69, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 66..69, }, ), @@ -93,9 +106,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 70..99, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..86, id: Name("Exception"), ctx: Load, @@ -106,14 +121,17 @@ Module( Identifier { id: Name("type"), range: 90..94, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 96..99, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 96..99, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_stmt_unparenthesized_tuple_no_as_py314.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_stmt_unparenthesized_tuple_no_as_py314.py.snap index 044e166fa6..bf94e92b01 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_stmt_unparenthesized_tuple_no_as_py314.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@except_stmt_unparenthesized_tuple_no_as_py314.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/except_stmt_unparenthe ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..117, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 44..79, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 53..57, }, ), @@ -23,13 +26,16 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 58..79, + node_index: AtomicNodeIndex(..), type_: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 65..69, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("x"), ctx: Load, @@ -37,6 +43,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("y"), ctx: Load, @@ -52,6 +59,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 75..79, }, ), @@ -66,10 +74,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 80..116, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 89..93, }, ), @@ -78,13 +88,16 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 94..116, + node_index: AtomicNodeIndex(..), type_: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 102..106, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..103, id: Name("x"), ctx: Load, @@ -92,6 +105,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..106, id: Name("y"), ctx: Load, @@ -107,6 +121,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 112..116, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__arguments.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__arguments.py.snap index a7b3283c41..d5977dbfc4 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__arguments.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__arguments.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/valid/expressions/arguments.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..805, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 102..108, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 102..108, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..106, id: Name("call"), ctx: Load, @@ -24,6 +28,7 @@ Module( ), arguments: Arguments { range: 106..108, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -33,12 +38,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 109..119, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 109..119, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 109..113, id: Name("call"), ctx: Load, @@ -46,9 +54,11 @@ Module( ), arguments: Arguments { range: 113..119, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..115, id: Name("x"), ctx: Load, @@ -56,6 +66,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 117..118, id: Name("y"), ctx: Load, @@ -70,12 +81,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 120..131, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 120..131, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..124, id: Name("call"), ctx: Load, @@ -83,9 +97,11 @@ Module( ), arguments: Arguments { range: 124..131, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 125..126, id: Name("x"), ctx: Load, @@ -93,6 +109,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("y"), ctx: Load, @@ -107,12 +124,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 150..164, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 150..164, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..154, id: Name("call"), ctx: Load, @@ -120,18 +140,22 @@ Module( ), arguments: Arguments { range: 154..164, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 155..158, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 155..156, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 157..158, value: Int( 1, @@ -141,14 +165,17 @@ Module( }, Keyword { range: 160..163, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("y"), range: 160..161, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 162..163, value: Int( 2, @@ -164,12 +191,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 165..173, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 165..173, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 165..169, id: Name("call"), ctx: Load, @@ -177,12 +207,15 @@ Module( ), arguments: Arguments { range: 169..173, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 170..172, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..172, id: Name("x"), ctx: Load, @@ -200,12 +233,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 174..183, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 174..183, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 174..178, id: Name("call"), ctx: Load, @@ -213,13 +249,16 @@ Module( ), arguments: Arguments { range: 178..183, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 179..182, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 181..182, id: Name("x"), ctx: Load, @@ -234,12 +273,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 193..205, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 193..205, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..197, id: Name("call"), ctx: Load, @@ -247,9 +289,11 @@ Module( ), arguments: Arguments { range: 197..205, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 198..199, id: Name("x"), ctx: Load, @@ -259,14 +303,17 @@ Module( keywords: [ Keyword { range: 201..204, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("y"), range: 201..202, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 203..204, value: Int( 1, @@ -282,12 +329,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 206..217, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 206..217, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 206..210, id: Name("call"), ctx: Load, @@ -295,9 +345,11 @@ Module( ), arguments: Arguments { range: 210..217, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 211..212, id: Name("x"), ctx: Load, @@ -305,9 +357,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 214..216, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 215..216, id: Name("y"), ctx: Load, @@ -325,12 +379,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 218..230, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 218..230, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 218..222, id: Name("call"), ctx: Load, @@ -338,9 +395,11 @@ Module( ), arguments: Arguments { range: 222..230, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 223..224, id: Name("x"), ctx: Load, @@ -350,9 +409,11 @@ Module( keywords: [ Keyword { range: 226..229, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 228..229, id: Name("y"), ctx: Load, @@ -367,12 +428,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 231..244, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 231..244, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 231..235, id: Name("call"), ctx: Load, @@ -380,12 +444,15 @@ Module( ), arguments: Arguments { range: 235..244, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 241..243, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 242..243, id: Name("y"), ctx: Load, @@ -398,14 +465,17 @@ Module( keywords: [ Keyword { range: 236..239, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 236..237, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 238..239, value: Int( 1, @@ -421,12 +491,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 245..259, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 245..259, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..249, id: Name("call"), ctx: Load, @@ -434,18 +507,22 @@ Module( ), arguments: Arguments { range: 249..259, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 250..253, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 250..251, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 252..253, value: Int( 1, @@ -455,9 +532,11 @@ Module( }, Keyword { range: 255..258, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 257..258, id: Name("y"), ctx: Load, @@ -472,12 +551,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 260..273, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 260..273, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 260..264, id: Name("call"), ctx: Load, @@ -485,12 +567,15 @@ Module( ), arguments: Arguments { range: 264..273, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 265..267, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 266..267, id: Name("x"), ctx: Load, @@ -503,9 +588,11 @@ Module( keywords: [ Keyword { range: 269..272, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 271..272, id: Name("y"), ctx: Load, @@ -520,12 +607,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 274..288, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 274..288, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 274..278, id: Name("call"), ctx: Load, @@ -533,12 +623,15 @@ Module( ), arguments: Arguments { range: 278..288, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 279..281, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 280..281, id: Name("x"), ctx: Load, @@ -549,6 +642,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 283..284, id: Name("y"), ctx: Load, @@ -556,6 +650,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 286..287, id: Name("z"), ctx: Load, @@ -570,12 +665,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 289..308, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 289..308, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 289..293, id: Name("call"), ctx: Load, @@ -583,13 +681,16 @@ Module( ), arguments: Arguments { range: 293..308, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 294..297, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 296..297, id: Name("x"), ctx: Load, @@ -598,14 +699,17 @@ Module( }, Keyword { range: 299..302, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("y"), range: 299..300, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 301..302, value: Int( 1, @@ -615,14 +719,17 @@ Module( }, Keyword { range: 304..307, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("z"), range: 304..305, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 306..307, value: Int( 2, @@ -638,12 +745,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 309..335, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 309..335, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 309..313, id: Name("call"), ctx: Load, @@ -651,12 +761,15 @@ Module( ), arguments: Arguments { range: 313..335, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 314..317, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 315..317, id: Name("x1"), ctx: Load, @@ -667,9 +780,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 319..322, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 320..322, id: Name("x2"), ctx: Load, @@ -682,9 +797,11 @@ Module( keywords: [ Keyword { range: 324..328, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 326..328, id: Name("y1"), ctx: Load, @@ -693,9 +810,11 @@ Module( }, Keyword { range: 330..334, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 332..334, id: Name("y2"), ctx: Load, @@ -710,12 +829,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 336..355, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 336..355, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 336..340, id: Name("call"), ctx: Load, @@ -723,18 +845,22 @@ Module( ), arguments: Arguments { range: 340..355, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 341..344, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 341..342, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 343..344, value: Int( 1, @@ -744,9 +870,11 @@ Module( }, Keyword { range: 346..349, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 348..349, id: Name("y"), ctx: Load, @@ -755,14 +883,17 @@ Module( }, Keyword { range: 351..354, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("z"), range: 351..352, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 353..354, value: Int( 1, @@ -778,12 +909,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 378..402, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 378..402, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 378..382, id: Name("call"), ctx: Load, @@ -791,27 +925,33 @@ Module( ), arguments: Arguments { range: 382..402, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 383..401, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 383..384, + node_index: AtomicNodeIndex(..), }, ), value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 385..401, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 390..394, value: true, }, ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 385..386, value: Int( 1, @@ -820,6 +960,7 @@ Module( ), orelse: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 400..401, value: Int( 2, @@ -837,12 +978,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 403..418, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 403..418, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 403..407, id: Name("call"), ctx: Load, @@ -850,21 +994,26 @@ Module( ), arguments: Arguments { range: 407..418, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 408..417, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 408..409, + node_index: AtomicNodeIndex(..), }, ), value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 410..417, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 416..417, id: Name("y"), ctx: Load, @@ -881,12 +1030,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 419..438, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 419..438, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 419..423, id: Name("call"), ctx: Load, @@ -894,31 +1046,41 @@ Module( ), arguments: Arguments { range: 423..438, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 424..437, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 424..425, + node_index: AtomicNodeIndex(..), }, ), value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 426..437, parameters: Some( Parameters { range: 433..434, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 433..434, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 433..434, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 433..434, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -932,6 +1094,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 436..437, id: Name("y"), ctx: Load, @@ -948,12 +1111,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 439..455, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 439..455, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 439..443, id: Name("call"), ctx: Load, @@ -961,21 +1127,26 @@ Module( ), arguments: Arguments { range: 443..455, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 444..454, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("x"), range: 444..445, + node_index: AtomicNodeIndex(..), }, ), value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 447..453, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 447..448, id: Name("y"), ctx: Store, @@ -983,6 +1154,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 452..453, value: Int( 1, @@ -1000,12 +1172,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 476..491, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 476..491, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 476..480, id: Name("call"), ctx: Load, @@ -1013,13 +1188,16 @@ Module( ), arguments: Arguments { range: 480..491, + node_index: AtomicNodeIndex(..), args: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 482..489, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 488..489, id: Name("x"), ctx: Load, @@ -1037,12 +1215,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 492..512, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 492..512, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 492..496, id: Name("call"), ctx: Load, @@ -1050,12 +1231,15 @@ Module( ), arguments: Arguments { range: 496..512, + node_index: AtomicNodeIndex(..), args: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 498..510, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 509..510, id: Name("x"), ctx: Load, @@ -1072,12 +1256,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 533..545, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 533..545, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 533..537, id: Name("call"), ctx: Load, @@ -1085,12 +1272,15 @@ Module( ), arguments: Arguments { range: 537..545, + node_index: AtomicNodeIndex(..), args: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 538..544, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 538..539, id: Name("x"), ctx: Store, @@ -1098,6 +1288,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 543..544, value: Int( 1, @@ -1115,12 +1306,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 546..572, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 546..572, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 546..550, id: Name("call"), ctx: Load, @@ -1128,15 +1322,19 @@ Module( ), arguments: Arguments { range: 550..572, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 551..571, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 551..557, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 551..552, id: Name("x"), ctx: Store, @@ -1144,6 +1342,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 556..557, value: Int( 1, @@ -1155,8 +1354,10 @@ Module( generators: [ Comprehension { range: 558..571, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 562..563, id: Name("i"), ctx: Store, @@ -1164,6 +1365,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 567..571, id: Name("iter"), ctx: Load, @@ -1185,12 +1387,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 596..610, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 596..610, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 596..600, id: Name("call"), ctx: Load, @@ -1198,17 +1403,21 @@ Module( ), arguments: Arguments { range: 600..610, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 601..609, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 602..609, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 602..603, id: Name("x"), ctx: Load, @@ -1216,6 +1425,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 608..609, id: Name("y"), ctx: Load, @@ -1236,12 +1446,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 611..623, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 611..623, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 611..615, id: Name("call"), ctx: Load, @@ -1249,15 +1462,19 @@ Module( ), arguments: Arguments { range: 615..623, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 616..622, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 617..622, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 617..618, id: Name("x"), ctx: Load, @@ -1266,6 +1483,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 621..622, id: Name("y"), ctx: Load, @@ -1285,12 +1503,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 624..638, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 624..638, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 624..628, id: Name("call"), ctx: Load, @@ -1298,15 +1519,19 @@ Module( ), arguments: Arguments { range: 628..638, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 629..637, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 630..637, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 636..637, id: Name("x"), ctx: Load, @@ -1326,12 +1551,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 639..657, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 639..657, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 639..643, id: Name("call"), ctx: Load, @@ -1339,25 +1567,34 @@ Module( ), arguments: Arguments { range: 643..657, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 644..656, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 645..656, parameters: Some( Parameters { range: 652..653, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 652..653, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 652..653, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 652..653, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1371,6 +1608,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 655..656, id: Name("x"), ctx: Load, @@ -1390,12 +1628,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 658..681, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 658..681, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 658..662, id: Name("call"), ctx: Load, @@ -1403,21 +1644,26 @@ Module( ), arguments: Arguments { range: 662..681, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 663..680, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 664..680, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 669..673, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 664..665, id: Name("x"), ctx: Load, @@ -1425,6 +1671,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 679..680, id: Name("y"), ctx: Load, @@ -1444,12 +1691,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 700..709, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 700..709, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 700..704, id: Name("call"), ctx: Load, @@ -1457,13 +1707,16 @@ Module( ), arguments: Arguments { range: 704..709, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 705..708, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 707..708, id: Name("x"), ctx: Load, @@ -1478,12 +1731,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 710..725, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 710..725, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 710..714, id: Name("call"), ctx: Load, @@ -1491,18 +1747,22 @@ Module( ), arguments: Arguments { range: 714..725, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 715..724, + node_index: AtomicNodeIndex(..), arg: None, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 717..724, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 717..718, id: Name("x"), ctx: Load, @@ -1510,6 +1770,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 723..724, id: Name("y"), ctx: Load, @@ -1527,12 +1788,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 726..741, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 726..741, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 726..730, id: Name("call"), ctx: Load, @@ -1540,16 +1804,20 @@ Module( ), arguments: Arguments { range: 730..741, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 731..740, + node_index: AtomicNodeIndex(..), arg: None, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 733..740, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 739..740, id: Name("x"), ctx: Load, @@ -1566,12 +1834,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 742..766, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 742..766, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 742..746, id: Name("call"), ctx: Load, @@ -1579,22 +1850,27 @@ Module( ), arguments: Arguments { range: 746..766, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 747..765, + node_index: AtomicNodeIndex(..), arg: None, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 749..765, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 754..758, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 749..750, id: Name("x"), ctx: Load, @@ -1602,6 +1878,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 764..765, id: Name("y"), ctx: Load, @@ -1618,12 +1895,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 767..784, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 767..784, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 767..771, id: Name("call"), ctx: Load, @@ -1631,17 +1911,21 @@ Module( ), arguments: Arguments { range: 771..784, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 772..783, + node_index: AtomicNodeIndex(..), arg: None, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 775..782, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 781..782, id: Name("x"), ctx: Load, @@ -1659,12 +1943,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 785..804, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 785..804, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 785..789, id: Name("call"), ctx: Load, @@ -1672,26 +1959,35 @@ Module( ), arguments: Arguments { range: 789..804, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 790..803, + node_index: AtomicNodeIndex(..), arg: None, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 792..803, parameters: Some( Parameters { range: 799..800, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 799..800, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 799..800, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 799..800, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1705,6 +2001,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 802..803, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__attribute.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__attribute.py.snap index 2a37d0a8a9..e6b46d32b7 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__attribute.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__attribute.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/attribute.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..90, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 0..10, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..5, id: Name("value"), ctx: Load, @@ -26,6 +29,7 @@ Module( attr: Identifier { id: Name("attr"), range: 6..10, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -34,15 +38,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 11..23, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 11..23, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 11..21, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..16, id: Name("value"), ctx: Load, @@ -51,12 +59,14 @@ Module( attr: Identifier { id: Name("attr"), range: 17..21, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 21..23, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -66,15 +76,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..36, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 24..36, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 24..31, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..29, id: Name("value"), ctx: Load, @@ -82,6 +96,7 @@ Module( ), arguments: Arguments { range: 29..31, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -90,6 +105,7 @@ Module( attr: Identifier { id: Name("attr"), range: 32..36, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -98,21 +114,27 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 37..55, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 37..55, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 37..51, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 37..49, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 37..44, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..42, id: Name("value"), ctx: Load, @@ -120,6 +142,7 @@ Module( ), arguments: Arguments { range: 42..44, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -128,12 +151,14 @@ Module( attr: Identifier { id: Name("attr"), range: 45..49, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 49..51, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -142,6 +167,7 @@ Module( attr: Identifier { id: Name("foo"), range: 52..55, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -150,15 +176,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 56..70, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 56..70, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 56..66, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..61, id: Name("value"), ctx: Load, @@ -167,6 +197,7 @@ Module( attr: Identifier { id: Name("attr"), range: 62..66, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -174,6 +205,7 @@ Module( attr: Identifier { id: Name("foo"), range: 67..70, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -182,18 +214,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 71..89, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 71..89, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 71..85, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 71..83, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..77, id: Name("value"), ctx: Load, @@ -202,12 +239,14 @@ Module( attr: Identifier { id: Name("attr"), range: 79..83, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 83..85, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -216,6 +255,7 @@ Module( attr: Identifier { id: Name("foo"), range: 86..89, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__await.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__await.py.snap index e5351ffe1e..d2791d35df 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__await.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__await.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/await.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..211, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 0..7, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -29,15 +32,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..19, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 8..19, left: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 8..15, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("x"), ctx: Load, @@ -48,6 +55,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 1, @@ -60,17 +68,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..33, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 20..33, op: And, values: [ Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 20..27, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("a"), ctx: Load, @@ -80,6 +92,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("b"), ctx: Load, @@ -92,15 +105,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 34..43, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 34..43, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 40..43, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("f"), ctx: Load, @@ -108,6 +125,7 @@ Module( ), arguments: Arguments { range: 41..43, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -119,16 +137,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..56, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 44..56, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 50..56, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 1, @@ -137,6 +159,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 2, @@ -153,16 +176,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..69, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 57..69, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 63..69, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 64..65, value: Int( 3, @@ -171,6 +198,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 67..68, value: Int( 4, @@ -186,18 +214,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 70..82, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 70..82, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 76..82, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("i"), ctx: Load, @@ -206,6 +238,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 80..81, value: Int( 5, @@ -222,16 +255,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..93, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 83..93, elts: [ Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 83..90, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 7, @@ -242,6 +279,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 92..93, value: Int( 8, @@ -257,16 +295,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 94..107, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 94..107, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 100..107, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 101..102, value: Int( 9, @@ -275,6 +317,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 104..106, value: Int( 10, @@ -292,15 +335,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 108..120, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 108..120, left: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 108..115, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 114..115, value: Int( 1, @@ -315,6 +362,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 119..120, value: Int( 1, @@ -328,21 +376,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 121..146, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 121..146, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 132..136, value: true, }, ), body: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 121..128, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("x"), ctx: Load, @@ -352,6 +405,7 @@ Module( ), orelse: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 142..146, }, ), @@ -361,19 +415,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 147..158, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 147..158, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 153..158, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 154..156, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 155..156, id: Name("x"), ctx: Load, @@ -393,25 +452,34 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 159..178, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 159..178, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 166..177, parameters: Some( Parameters { range: 173..174, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 173..174, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 173..174, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 173..174, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -425,6 +493,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 176..177, id: Name("x"), ctx: Load, @@ -438,15 +507,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 179..192, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 179..192, left: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 179..186, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 185..186, id: Name("x"), ctx: Load, @@ -457,10 +530,12 @@ Module( op: Pow, right: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 190..192, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 191..192, id: Name("x"), ctx: Load, @@ -474,15 +549,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 193..211, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 193..211, left: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 193..200, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..200, id: Name("x"), ctx: Load, @@ -493,9 +572,11 @@ Module( op: Pow, right: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 204..211, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 210..211, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__bin_op.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__bin_op.py.snap index a6cc4528a1..ac83b26a4d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__bin_op.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__bin_op.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/valid/expressions/bin_op.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..397, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..14, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 9..14, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 1, @@ -26,6 +30,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 2, @@ -38,12 +43,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..20, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 15..20, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 15..16, value: Int( 1, @@ -53,6 +61,7 @@ Module( op: Sub, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 19..20, value: Int( 2, @@ -65,12 +74,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..26, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 21..26, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..22, value: Int( 1, @@ -80,6 +92,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 25..26, value: Int( 2, @@ -92,12 +105,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 27..32, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 27..32, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 27..28, value: Int( 1, @@ -107,6 +123,7 @@ Module( op: Div, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 31..32, value: Int( 2, @@ -119,12 +136,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 33..39, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 33..39, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 33..34, value: Int( 1, @@ -134,6 +154,7 @@ Module( op: FloorDiv, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 38..39, value: Int( 2, @@ -146,12 +167,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 40..45, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 40..45, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 40..41, value: Int( 1, @@ -161,6 +185,7 @@ Module( op: Mod, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 44..45, value: Int( 2, @@ -173,12 +198,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 46..52, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 46..52, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 46..47, value: Int( 1, @@ -188,6 +216,7 @@ Module( op: Pow, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 2, @@ -200,12 +229,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..58, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 53..58, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 53..54, value: Int( 1, @@ -215,6 +247,7 @@ Module( op: BitOr, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 2, @@ -227,12 +260,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 59..64, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 59..64, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 59..60, value: Int( 1, @@ -242,6 +278,7 @@ Module( op: BitXor, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 63..64, value: Int( 2, @@ -254,12 +291,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 65..70, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 65..70, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 65..66, value: Int( 1, @@ -269,6 +309,7 @@ Module( op: BitAnd, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 69..70, value: Int( 2, @@ -281,12 +322,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 71..77, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 71..77, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 71..72, value: Int( 1, @@ -296,6 +340,7 @@ Module( op: RShift, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 76..77, value: Int( 2, @@ -308,12 +353,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 78..84, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 78..84, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..79, value: Int( 1, @@ -323,6 +371,7 @@ Module( op: LShift, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 2, @@ -335,12 +384,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 85..90, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 85..90, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 85..86, value: Int( 1, @@ -350,6 +402,7 @@ Module( op: MatMult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 2, @@ -362,18 +415,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 110..123, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 110..123, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 110..119, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 110..115, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 110..111, value: Int( 1, @@ -383,6 +441,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 114..115, value: Int( 2, @@ -394,6 +453,7 @@ Module( op: Sub, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 118..119, value: Int( 3, @@ -405,6 +465,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..123, value: Int( 4, @@ -417,24 +478,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 124..146, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 124..146, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 124..142, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 124..138, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 124..133, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 124..129, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 124..125, value: Int( 1, @@ -444,6 +512,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 128..129, value: Int( 2, @@ -455,6 +524,7 @@ Module( op: Div, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 132..133, value: Int( 3, @@ -466,6 +536,7 @@ Module( op: FloorDiv, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 137..138, value: Int( 4, @@ -477,6 +548,7 @@ Module( op: MatMult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 141..142, value: Int( 5, @@ -488,6 +560,7 @@ Module( op: Mod, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 145..146, value: Int( 6, @@ -500,21 +573,27 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 147..168, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 147..168, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 147..163, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 147..158, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 147..153, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 147..148, value: Int( 1, @@ -524,6 +603,7 @@ Module( op: LShift, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 152..153, value: Int( 2, @@ -535,6 +615,7 @@ Module( op: RShift, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 157..158, value: Int( 3, @@ -546,6 +627,7 @@ Module( op: RShift, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 162..163, value: Int( 4, @@ -557,6 +639,7 @@ Module( op: LShift, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 167..168, value: Int( 5, @@ -569,12 +652,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 193..202, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 193..202, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 193..194, value: Int( 1, @@ -584,9 +670,11 @@ Module( op: Add, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 197..202, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 197..198, value: Int( 2, @@ -596,6 +684,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 201..202, value: Int( 3, @@ -610,15 +699,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 203..212, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 203..212, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 203..208, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 203..204, value: Int( 1, @@ -628,6 +721,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 207..208, value: Int( 2, @@ -639,6 +733,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 211..212, value: Int( 3, @@ -651,24 +746,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 213..244, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 213..244, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 213..235, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 213..231, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 213..223, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 213..219, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 213..214, value: Int( 1, @@ -678,6 +780,7 @@ Module( op: Pow, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 218..219, value: Int( 2, @@ -689,6 +792,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 222..223, value: Int( 3, @@ -700,9 +804,11 @@ Module( op: Sub, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 226..231, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 226..227, value: Int( 4, @@ -712,6 +818,7 @@ Module( op: MatMult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 230..231, value: Int( 5, @@ -725,6 +832,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 234..235, value: Int( 6, @@ -736,9 +844,11 @@ Module( op: Sub, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 238..244, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 238..239, value: Int( 7, @@ -748,6 +858,7 @@ Module( op: FloorDiv, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 243..244, value: Int( 8, @@ -762,12 +873,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 270..306, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 270..306, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 270..271, value: Int( 1, @@ -777,12 +891,15 @@ Module( op: BitOr, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 274..306, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 274..279, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 274..275, value: Int( 2, @@ -792,6 +909,7 @@ Module( op: BitAnd, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 278..279, value: Int( 3, @@ -803,15 +921,19 @@ Module( op: BitXor, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 282..306, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 282..301, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 282..291, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 282..283, value: Int( 4, @@ -821,9 +943,11 @@ Module( op: Add, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 286..291, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 286..287, value: Int( 5, @@ -833,6 +957,7 @@ Module( op: MatMult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 290..291, value: Int( 6, @@ -846,9 +971,11 @@ Module( op: LShift, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 295..301, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 295..296, value: Int( 7, @@ -858,6 +985,7 @@ Module( op: FloorDiv, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 300..301, value: Int( 8, @@ -871,6 +999,7 @@ Module( op: RShift, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 305..306, value: Int( 9, @@ -887,15 +1016,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 324..339, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 324..339, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 324..335, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 324..325, value: Int( 1, @@ -905,9 +1038,11 @@ Module( op: Add, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 329..334, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 329..330, value: Int( 2, @@ -917,6 +1052,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 333..334, value: Int( 3, @@ -930,6 +1066,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 338..339, value: Int( 4, @@ -942,15 +1079,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 340..359, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 340..359, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 340..345, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 340..341, value: Int( 1, @@ -960,6 +1101,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 344..345, value: Int( 2, @@ -971,12 +1113,15 @@ Module( op: Add, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 349..358, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 349..354, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 349..350, value: Int( 3, @@ -986,6 +1131,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 353..354, value: Int( 4, @@ -997,6 +1143,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 357..358, value: Int( 5, @@ -1011,12 +1158,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 390..396, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 390..396, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 390..391, id: Name("x"), ctx: Load, @@ -1025,10 +1175,12 @@ Module( op: Add, right: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 393..396, op: UAdd, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 395..396, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__bool_op.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__bool_op.py.snap index 53f4b05b7a..7805f521fb 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__bool_op.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__bool_op.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/bool_op.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..142, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..7, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 0..7, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("a"), ctx: Load, @@ -27,6 +30,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("b"), ctx: Load, @@ -39,14 +43,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 8..21, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 8..21, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("a"), ctx: Load, @@ -54,6 +61,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("b"), ctx: Load, @@ -61,6 +69,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("c"), ctx: Load, @@ -73,14 +82,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..28, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 22..28, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("a"), ctx: Load, @@ -88,6 +100,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..28, id: Name("b"), ctx: Load, @@ -100,14 +113,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..40, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 29..40, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("a"), ctx: Load, @@ -115,6 +131,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("b"), ctx: Load, @@ -122,6 +139,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("c"), ctx: Load, @@ -134,19 +152,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 41..53, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 41..53, op: Or, values: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 41..48, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("a"), ctx: Load, @@ -154,6 +176,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("b"), ctx: Load, @@ -164,6 +187,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..53, id: Name("c"), ctx: Load, @@ -176,19 +200,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..88, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 54..88, op: Or, values: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 54..67, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..55, id: Name("a"), ctx: Load, @@ -196,6 +224,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("b"), ctx: Load, @@ -203,6 +232,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("c"), ctx: Load, @@ -213,6 +243,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..72, id: Name("d"), ctx: Load, @@ -220,11 +251,13 @@ Module( ), BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 76..83, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..77, id: Name("e"), ctx: Load, @@ -232,6 +265,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("f"), ctx: Load, @@ -242,6 +276,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..88, id: Name("g"), ctx: Load, @@ -254,19 +289,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 89..105, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 89..105, op: Or, values: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 89..100, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..90, id: Name("a"), ctx: Load, @@ -274,10 +313,12 @@ Module( ), UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 95..100, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("b"), ctx: Load, @@ -290,6 +331,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..105, id: Name("c"), ctx: Load, @@ -302,23 +344,28 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 106..124, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 106..124, value: Some( BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 112..124, op: Or, values: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 112..119, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 112..113, id: Name("a"), ctx: Load, @@ -326,6 +373,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 118..119, id: Name("b"), ctx: Load, @@ -336,6 +384,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 123..124, id: Name("c"), ctx: Load, @@ -351,23 +400,28 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 125..141, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 125..141, op: Or, values: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 125..136, op: And, values: [ UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 125..130, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("a"), ctx: Load, @@ -377,6 +431,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 135..136, id: Name("b"), ctx: Load, @@ -387,6 +442,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 140..141, id: Name("c"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__call.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__call.py.snap index a83f377442..7a33b5db76 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__call.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__call.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/call.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..349, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 114..120, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 114..120, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..118, id: Name("call"), ctx: Load, @@ -25,6 +28,7 @@ Module( ), arguments: Arguments { range: 118..120, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -34,15 +38,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 121..132, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 121..132, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 121..130, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 121..125, id: Name("attr"), ctx: Load, @@ -51,12 +59,14 @@ Module( attr: Identifier { id: Name("expr"), range: 126..130, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 130..132, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -66,15 +76,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..150, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 133..150, func: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 133..148, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 133..142, id: Name("subscript"), ctx: Load, @@ -82,10 +96,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 143..147, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 143..144, value: Int( 1, @@ -94,6 +110,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 146..147, value: Int( 2, @@ -110,6 +127,7 @@ Module( ), arguments: Arguments { range: 148..150, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -119,15 +137,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 151..162, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 151..162, func: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 151..160, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 151..156, id: Name("slice"), ctx: Load, @@ -135,11 +157,13 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 157..159, lower: None, upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 158..159, value: Int( 1, @@ -155,6 +179,7 @@ Module( ), arguments: Arguments { range: 160..162, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -164,16 +189,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 163..174, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 163..174, func: List( ExprList { + node_index: AtomicNodeIndex(..), range: 163..172, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 164..165, value: Int( 1, @@ -182,6 +211,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 167..168, value: Int( 2, @@ -190,6 +220,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 170..171, value: Int( 3, @@ -202,6 +233,7 @@ Module( ), arguments: Arguments { range: 172..174, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -211,16 +243,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 175..186, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 175..186, func: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 175..184, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 176..177, value: Int( 1, @@ -229,6 +265,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 179..180, value: Int( 2, @@ -237,6 +274,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 182..183, value: Int( 3, @@ -250,6 +288,7 @@ Module( ), arguments: Arguments { range: 184..186, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -259,15 +298,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 187..206, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 187..206, func: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 187..204, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 188..189, id: Name("x"), ctx: Load, @@ -276,8 +319,10 @@ Module( generators: [ Comprehension { range: 190..203, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 194..195, id: Name("x"), ctx: Store, @@ -285,6 +330,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..203, id: Name("iter"), ctx: Load, @@ -299,6 +345,7 @@ Module( ), arguments: Arguments { range: 204..206, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -308,16 +355,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 207..218, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 207..218, func: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 207..216, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 208..209, value: Int( 1, @@ -326,6 +377,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 211..212, value: Int( 2, @@ -334,6 +386,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 214..215, value: Int( 3, @@ -345,6 +398,7 @@ Module( ), arguments: Arguments { range: 216..218, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -354,18 +408,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 219..233, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 219..233, func: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 219..231, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 220..221, value: Int( 1, @@ -375,6 +433,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 223..224, value: Int( 2, @@ -386,6 +445,7 @@ Module( key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 226..227, value: Int( 3, @@ -395,6 +455,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 229..230, value: Int( 4, @@ -407,6 +468,7 @@ Module( ), arguments: Arguments { range: 231..233, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -416,16 +478,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 234..245, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 234..245, func: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 235..242, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 241..242, id: Name("x"), ctx: Load, @@ -436,6 +502,7 @@ Module( ), arguments: Arguments { range: 243..245, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -445,18 +512,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 306..312, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 306..312, func: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 306..310, value: true, }, ), arguments: Arguments { range: 310..312, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -466,18 +537,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 313..320, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 313..320, func: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 313..318, value: false, }, ), arguments: Arguments { range: 318..320, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -487,17 +562,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 321..327, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 321..327, func: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 321..325, }, ), arguments: Arguments { range: 325..327, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -507,17 +586,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 328..338, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 328..338, func: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 328..336, value: StringLiteralValue { inner: Single( StringLiteral { range: 328..336, + node_index: AtomicNodeIndex(..), value: "string", flags: StringLiteralFlags { quote_style: Double, @@ -531,6 +614,7 @@ Module( ), arguments: Arguments { range: 336..338, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -540,12 +624,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 339..342, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 339..342, func: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 339..340, value: Int( 1, @@ -554,6 +641,7 @@ Module( ), arguments: Arguments { range: 340..342, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -563,12 +651,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 343..348, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 343..348, func: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 343..346, value: Float( 1.0, @@ -577,6 +668,7 @@ Module( ), arguments: Arguments { range: 346..348, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__compare.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__compare.py.snap index ec86643e38..e2bd2b568c 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__compare.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__compare.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/compare.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..542, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..15, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 9..15, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("a"), ctx: Load, @@ -29,6 +32,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("b"), ctx: Load, @@ -41,12 +45,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..21, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 16..21, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("b"), ctx: Load, @@ -58,6 +65,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("a"), ctx: Load, @@ -70,12 +78,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..27, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 22..27, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("b"), ctx: Load, @@ -87,6 +98,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("a"), ctx: Load, @@ -99,12 +111,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..34, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 28..34, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("a"), ctx: Load, @@ -116,6 +131,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..34, id: Name("b"), ctx: Load, @@ -128,12 +144,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 35..41, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 35..41, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("a"), ctx: Load, @@ -145,6 +164,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("b"), ctx: Load, @@ -157,12 +177,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 42..48, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 42..48, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 42..43, id: Name("a"), ctx: Load, @@ -174,6 +197,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("b"), ctx: Load, @@ -186,12 +210,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..55, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 49..55, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("a"), ctx: Load, @@ -203,6 +230,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..55, id: Name("c"), ctx: Load, @@ -215,12 +243,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 56..62, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 56..62, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("a"), ctx: Load, @@ -232,6 +263,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 61..62, id: Name("b"), ctx: Load, @@ -244,12 +276,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 63..73, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 63..73, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..64, id: Name("a"), ctx: Load, @@ -261,6 +296,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("c"), ctx: Load, @@ -273,12 +309,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 74..84, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 74..84, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..75, id: Name("a"), ctx: Load, @@ -290,6 +329,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("b"), ctx: Load, @@ -302,12 +342,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 110..156, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 110..156, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 110..111, id: Name("a"), ctx: Load, @@ -323,6 +366,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 119..120, id: Name("b"), ctx: Load, @@ -330,6 +374,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("c"), ctx: Load, @@ -337,6 +382,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 137..138, id: Name("d"), ctx: Load, @@ -344,6 +390,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("e"), ctx: Load, @@ -351,6 +398,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 155..156, id: Name("f"), ctx: Load, @@ -363,15 +411,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 177..203, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 177..203, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 177..182, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 177..178, id: Name("a"), ctx: Load, @@ -380,6 +432,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 181..182, id: Name("b"), ctx: Load, @@ -394,9 +447,11 @@ Module( comparators: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 185..190, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 185..186, id: Name("c"), ctx: Load, @@ -405,6 +460,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("d"), ctx: Load, @@ -414,9 +470,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 198..203, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 198..199, id: Name("e"), ctx: Load, @@ -425,6 +483,7 @@ Module( op: BitAnd, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 202..203, id: Name("f"), ctx: Load, @@ -439,16 +498,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 379..393, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 379..393, op: Not, operand: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 383..393, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 383..384, id: Name("x"), ctx: Load, @@ -460,6 +523,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 392..393, id: Name("y"), ctx: Load, @@ -474,14 +538,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 395..416, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 395..416, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 395..396, id: Name("x"), ctx: Load, @@ -489,14 +556,17 @@ Module( ), BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 400..416, op: And, values: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 400..410, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 400..401, id: Name("y"), ctx: Load, @@ -508,6 +578,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 409..410, id: Name("z"), ctx: Load, @@ -518,6 +589,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 415..416, id: Name("a"), ctx: Load, @@ -533,12 +605,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 417..429, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 417..429, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 417..418, id: Name("x"), ctx: Load, @@ -550,9 +625,11 @@ Module( comparators: [ Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 422..429, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 428..429, id: Name("y"), ctx: Load, @@ -567,12 +644,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 430..446, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 430..446, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 430..431, id: Name("x"), ctx: Load, @@ -584,9 +664,11 @@ Module( comparators: [ Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 439..446, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 445..446, id: Name("y"), ctx: Load, @@ -601,12 +683,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 489..541, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 489..541, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 489..490, id: Name("a"), ctx: Load, @@ -626,6 +711,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 493..494, id: Name("b"), ctx: Load, @@ -633,6 +719,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 498..499, id: Name("c"), ctx: Load, @@ -640,6 +727,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 502..503, id: Name("d"), ctx: Load, @@ -647,6 +735,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 507..508, id: Name("e"), ctx: Load, @@ -654,6 +743,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 516..517, id: Name("f"), ctx: Load, @@ -661,6 +751,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 525..526, id: Name("g"), ctx: Load, @@ -668,6 +759,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 530..531, id: Name("h"), ctx: Load, @@ -675,6 +767,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 535..536, id: Name("i"), ctx: Load, @@ -682,6 +775,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 540..541, id: Name("j"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__dictionary.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__dictionary.py.snap index 705faf5d2c..d368b8654b 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__dictionary.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__dictionary.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/dictionary.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..622, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..11, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 9..11, items: [], }, @@ -23,15 +25,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..18, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 12..18, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 1, @@ -41,6 +46,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 16..17, value: Int( 2, @@ -55,15 +61,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..43, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 19..43, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 20..21, value: Int( 1, @@ -73,6 +82,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 23..24, value: Int( 2, @@ -84,6 +94,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("a"), ctx: Load, @@ -92,6 +103,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 29..30, value: Int( 1, @@ -103,6 +115,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("b"), ctx: Load, @@ -111,11 +124,13 @@ Module( ), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 35..42, value: StringLiteralValue { inner: Single( StringLiteral { range: 35..42, + node_index: AtomicNodeIndex(..), value: "hello", flags: StringLiteralFlags { quote_style: Single, @@ -135,9 +150,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 66..69, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 66..69, items: [], }, @@ -146,15 +163,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 70..100, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 70..100, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 76..77, value: Int( 1, @@ -164,6 +184,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 2, @@ -175,6 +196,7 @@ Module( key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 90..91, value: Int( 3, @@ -184,6 +206,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 97..98, value: Int( 4, @@ -198,21 +221,25 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 111..132, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 111..132, items: [ DictItem { key: Some( Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 112..118, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 113..114, value: Int( 1, @@ -222,6 +249,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 116..117, value: Int( 2, @@ -235,12 +263,14 @@ Module( ), value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 120..131, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 121..122, value: Int( 3, @@ -250,12 +280,14 @@ Module( ), value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 124..130, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 125..126, value: Int( 4, @@ -265,6 +297,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 128..129, value: Int( 5, @@ -287,28 +320,37 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 155..171, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 155..171, items: [ DictItem { key: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 156..167, parameters: Some( Parameters { range: 163..164, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 163..164, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 163..164, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 163..164, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -322,6 +364,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..167, id: Name("x"), ctx: Load, @@ -332,6 +375,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 169..170, value: Int( 1, @@ -346,20 +390,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 172..202, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 172..202, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 173..176, value: StringLiteralValue { inner: Single( StringLiteral { range: 173..176, + node_index: AtomicNodeIndex(..), value: "A", flags: StringLiteralFlags { quote_style: Single, @@ -374,19 +422,26 @@ Module( ), value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 178..192, parameters: Some( Parameters { range: 185..186, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 185..186, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 185..186, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("p"), range: 185..186, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -400,6 +455,7 @@ Module( ), body: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 188..192, }, ), @@ -410,11 +466,13 @@ Module( key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 194..197, value: StringLiteralValue { inner: Single( StringLiteral { range: 194..197, + node_index: AtomicNodeIndex(..), value: "B", flags: StringLiteralFlags { quote_style: Single, @@ -429,6 +487,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 199..200, id: Name("C"), ctx: Load, @@ -442,18 +501,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 224..237, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 224..237, items: [ DictItem { key: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 226..232, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 226..227, id: Name("x"), ctx: Store, @@ -461,6 +524,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 231..232, value: Int( 1, @@ -472,6 +536,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 235..236, id: Name("y"), ctx: Load, @@ -485,18 +550,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 238..258, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 238..258, items: [ DictItem { key: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 240..246, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 240..241, id: Name("x"), ctx: Store, @@ -504,6 +573,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 245..246, value: Int( 1, @@ -515,9 +585,11 @@ Module( ), value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 250..256, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 250..251, id: Name("y"), ctx: Store, @@ -525,6 +597,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 255..256, value: Int( 2, @@ -541,15 +614,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 284..289, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 284..289, items: [ DictItem { key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 287..288, id: Name("d"), ctx: Load, @@ -563,15 +639,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 290..301, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 290..301, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 291..292, id: Name("a"), ctx: Load, @@ -580,6 +659,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 294..295, id: Name("b"), ctx: Load, @@ -590,6 +670,7 @@ Module( key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 299..300, id: Name("d"), ctx: Load, @@ -603,15 +684,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 302..312, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 302..312, items: [ DictItem { key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 305..306, id: Name("a"), ctx: Load, @@ -622,6 +706,7 @@ Module( key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 310..311, id: Name("b"), ctx: Load, @@ -635,20 +720,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 313..338, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 313..338, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 314..317, value: StringLiteralValue { inner: Single( StringLiteral { range: 314..317, + node_index: AtomicNodeIndex(..), value: "a", flags: StringLiteralFlags { quote_style: Double, @@ -663,11 +752,13 @@ Module( ), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 319..322, value: StringLiteralValue { inner: Single( StringLiteral { range: 319..322, + node_index: AtomicNodeIndex(..), value: "b", flags: StringLiteralFlags { quote_style: Double, @@ -684,6 +775,7 @@ Module( key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 326..327, id: Name("c"), ctx: Load, @@ -694,11 +786,13 @@ Module( key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 329..332, value: StringLiteralValue { inner: Single( StringLiteral { range: 329..332, + node_index: AtomicNodeIndex(..), value: "d", flags: StringLiteralFlags { quote_style: Double, @@ -713,11 +807,13 @@ Module( ), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 334..337, value: StringLiteralValue { inner: Single( StringLiteral { range: 334..337, + node_index: AtomicNodeIndex(..), value: "e", flags: StringLiteralFlags { quote_style: Double, @@ -737,15 +833,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 339..367, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 339..367, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 340..341, value: Int( 1, @@ -755,6 +854,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 343..344, value: Int( 2, @@ -766,17 +866,20 @@ Module( key: None, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 348..366, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 349..357, value: StringLiteralValue { inner: Single( StringLiteral { range: 349..357, + node_index: AtomicNodeIndex(..), value: "nested", flags: StringLiteralFlags { quote_style: Single, @@ -791,11 +894,13 @@ Module( ), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 359..365, value: StringLiteralValue { inner: Single( StringLiteral { range: 359..365, + node_index: AtomicNodeIndex(..), value: "dict", flags: StringLiteralFlags { quote_style: Single, @@ -819,18 +924,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 368..393, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 368..393, items: [ DictItem { key: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 369..374, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 369..370, id: Name("x"), ctx: Load, @@ -839,6 +948,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 373..374, value: Int( 1, @@ -850,9 +960,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 376..382, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 376..377, id: Name("y"), ctx: Load, @@ -861,6 +973,7 @@ Module( op: Pow, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 381..382, value: Int( 2, @@ -874,9 +987,11 @@ Module( key: None, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 386..392, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 386..390, id: Name("call"), ctx: Load, @@ -884,6 +999,7 @@ Module( ), arguments: Arguments { range: 390..392, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -897,19 +1013,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 460..471, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 460..471, items: [ DictItem { key: None, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 464..469, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 468..469, id: Name("x"), ctx: Load, @@ -925,15 +1045,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 494..515, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 494..515, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 495..496, value: Int( 1, @@ -943,15 +1066,18 @@ Module( ), value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 498..514, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 503..507, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 498..499, id: Name("x"), ctx: Load, @@ -959,6 +1085,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 513..514, id: Name("y"), ctx: Load, @@ -974,21 +1101,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 516..575, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 516..575, key: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 517..533, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 522..526, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 517..518, id: Name("x"), ctx: Load, @@ -996,6 +1128,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 532..533, id: Name("y"), ctx: Load, @@ -1005,6 +1138,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 535..536, id: Name("y"), ctx: Load, @@ -1013,8 +1147,10 @@ Module( generators: [ Comprehension { range: 537..555, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 541..542, id: Name("x"), ctx: Store, @@ -1022,9 +1158,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 546..555, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 546..551, id: Name("range"), ctx: Load, @@ -1032,9 +1170,11 @@ Module( ), arguments: Arguments { range: 551..555, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 552..554, value: Int( 10, @@ -1051,8 +1191,10 @@ Module( }, Comprehension { range: 556..574, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 560..561, id: Name("y"), ctx: Store, @@ -1060,9 +1202,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 565..574, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 565..570, id: Name("range"), ctx: Load, @@ -1070,9 +1214,11 @@ Module( ), arguments: Arguments { range: 570..574, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 571..573, value: Int( 10, @@ -1094,19 +1240,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 576..600, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 576..600, items: [ DictItem { key: Some( Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 577..583, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 578..579, value: Int( 1, @@ -1115,6 +1265,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 581..582, value: Int( 2, @@ -1127,6 +1278,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 585..586, value: Int( 3, @@ -1138,6 +1290,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 588..589, id: Name("x"), ctx: Load, @@ -1146,12 +1299,14 @@ Module( ), value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 591..598, items: [ DictItem { key: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 592..593, value: Int( 1, @@ -1161,6 +1316,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 595..596, value: Int( 2, @@ -1179,15 +1335,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 601..621, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 601..621, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 603..604, id: Name("x"), ctx: Load, @@ -1196,6 +1355,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 608..609, id: Name("y"), ctx: Load, @@ -1206,6 +1366,7 @@ Module( key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 613..614, id: Name("z"), ctx: Load, @@ -1214,6 +1375,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 618..619, id: Name("a"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__dictionary_comprehension.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__dictionary_comprehension.py.snap index ea7d3324bc..d54aceae23 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__dictionary_comprehension.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__dictionary_comprehension.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/dictionary_comprehension.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..589, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 0..22, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("y"), ctx: Load, @@ -26,8 +29,10 @@ Module( generators: [ Comprehension { range: 3..21, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("y"), ctx: Store, @@ -35,10 +40,12 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 12..21, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 1, @@ -47,6 +54,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 16..17, value: Int( 2, @@ -55,6 +63,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 19..20, value: Int( 3, @@ -76,12 +85,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..42, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 23..42, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..26, id: Name("x1"), ctx: Load, @@ -89,6 +101,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..30, id: Name("x2"), ctx: Load, @@ -97,8 +110,10 @@ Module( generators: [ Comprehension { range: 31..41, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("y"), ctx: Store, @@ -106,6 +121,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("z"), ctx: Load, @@ -121,15 +137,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..73, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 43..73, key: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 44..49, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("x"), ctx: Load, @@ -138,6 +158,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 48..49, value: Int( 1, @@ -148,11 +169,13 @@ Module( ), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 51..54, value: StringLiteralValue { inner: Single( StringLiteral { range: 51..54, + node_index: AtomicNodeIndex(..), value: "x", flags: StringLiteralFlags { quote_style: Single, @@ -167,8 +190,10 @@ Module( generators: [ Comprehension { range: 55..72, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("i"), ctx: Store, @@ -176,9 +201,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 64..72, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 64..69, id: Name("range"), ctx: Load, @@ -186,9 +213,11 @@ Module( ), arguments: Arguments { range: 69..72, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 70..71, value: Int( 5, @@ -210,12 +239,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 74..122, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 74..122, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("b"), ctx: Load, @@ -223,9 +255,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 78..83, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..79, id: Name("c"), ctx: Load, @@ -234,6 +268,7 @@ Module( op: Mult, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 2, @@ -245,8 +280,10 @@ Module( generators: [ Comprehension { range: 84..121, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..89, id: Name("c"), ctx: Store, @@ -254,6 +291,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("d"), ctx: Load, @@ -262,9 +300,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 98..104, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("x"), ctx: Load, @@ -276,6 +316,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 103..104, id: Name("w"), ctx: Load, @@ -286,11 +327,13 @@ Module( ), BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 108..116, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..109, id: Name("y"), ctx: Load, @@ -298,6 +341,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..116, id: Name("yy"), ctx: Load, @@ -308,6 +352,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..121, id: Name("z"), ctx: Load, @@ -323,12 +368,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 123..176, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 123..176, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 124..125, id: Name("a"), ctx: Load, @@ -336,9 +384,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 127..133, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("a"), ctx: Load, @@ -347,6 +397,7 @@ Module( op: Pow, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 132..133, value: Int( 2, @@ -358,8 +409,10 @@ Module( generators: [ Comprehension { range: 134..155, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 138..139, id: Name("b"), ctx: Store, @@ -367,6 +420,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 143..144, id: Name("c"), ctx: Load, @@ -375,11 +429,13 @@ Module( ifs: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 148..155, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 148..149, id: Name("d"), ctx: Load, @@ -387,6 +443,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 154..155, id: Name("e"), ctx: Load, @@ -400,8 +457,10 @@ Module( }, Comprehension { range: 156..175, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..161, id: Name("f"), ctx: Store, @@ -409,6 +468,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 165..166, id: Name("j"), ctx: Load, @@ -417,9 +477,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 170..175, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..171, id: Name("k"), ctx: Load, @@ -431,6 +493,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 174..175, id: Name("h"), ctx: Load, @@ -449,12 +512,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 177..231, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 177..231, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 178..179, id: Name("a"), ctx: Load, @@ -462,6 +528,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 181..182, id: Name("b"), ctx: Load, @@ -470,8 +537,10 @@ Module( generators: [ Comprehension { range: 183..204, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 187..188, id: Name("b"), ctx: Store, @@ -479,6 +548,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 192..193, id: Name("c"), ctx: Load, @@ -487,11 +557,13 @@ Module( ifs: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 197..204, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 197..198, id: Name("d"), ctx: Load, @@ -499,6 +571,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 203..204, id: Name("e"), ctx: Load, @@ -512,8 +585,10 @@ Module( }, Comprehension { range: 205..230, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 215..216, id: Name("f"), ctx: Store, @@ -521,6 +596,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 220..221, id: Name("j"), ctx: Load, @@ -529,9 +605,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 225..230, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 225..226, id: Name("k"), ctx: Load, @@ -543,6 +621,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 229..230, id: Name("h"), ctx: Load, @@ -561,12 +640,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 232..252, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 232..252, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 233..234, id: Name("a"), ctx: Load, @@ -574,6 +656,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..237, id: Name("a"), ctx: Load, @@ -582,12 +665,15 @@ Module( generators: [ Comprehension { range: 238..251, + node_index: AtomicNodeIndex(..), target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 242..246, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 242..243, id: Name("b"), ctx: Store, @@ -595,6 +681,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..246, id: Name("c"), ctx: Store, @@ -607,6 +694,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 250..251, id: Name("d"), ctx: Load, @@ -622,12 +710,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 391..416, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 391..416, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 392..393, id: Name("x"), ctx: Load, @@ -635,6 +726,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 395..396, id: Name("y"), ctx: Load, @@ -643,8 +735,10 @@ Module( generators: [ Comprehension { range: 397..415, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 401..402, id: Name("x"), ctx: Store, @@ -652,10 +746,12 @@ Module( ), iter: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 407..414, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 413..414, id: Name("y"), ctx: Load, @@ -674,12 +770,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 417..447, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 417..447, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 418..419, id: Name("x"), ctx: Load, @@ -687,6 +786,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 421..422, id: Name("y"), ctx: Load, @@ -695,8 +795,10 @@ Module( generators: [ Comprehension { range: 423..446, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 427..428, id: Name("x"), ctx: Store, @@ -704,9 +806,11 @@ Module( ), iter: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 433..445, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 444..445, id: Name("y"), ctx: Load, @@ -724,12 +828,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 448..477, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 448..477, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 449..450, id: Name("x"), ctx: Load, @@ -737,6 +844,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 452..453, id: Name("y"), ctx: Load, @@ -745,8 +853,10 @@ Module( generators: [ Comprehension { range: 454..476, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 458..459, id: Name("x"), ctx: Store, @@ -754,19 +864,26 @@ Module( ), iter: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 464..475, parameters: Some( Parameters { range: 471..472, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 471..472, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 471..472, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 471..472, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -780,6 +897,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 474..475, id: Name("y"), ctx: Load, @@ -797,12 +915,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 478..511, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 478..511, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 479..480, id: Name("x"), ctx: Load, @@ -810,6 +931,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 482..483, id: Name("y"), ctx: Load, @@ -818,8 +940,10 @@ Module( generators: [ Comprehension { range: 484..510, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 488..489, id: Name("x"), ctx: Store, @@ -827,6 +951,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 493..497, id: Name("data"), ctx: Load, @@ -835,10 +960,12 @@ Module( ifs: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 502..509, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 508..509, id: Name("y"), ctx: Load, @@ -857,12 +984,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 512..550, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 512..550, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 513..514, id: Name("x"), ctx: Load, @@ -870,6 +1000,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 516..517, id: Name("y"), ctx: Load, @@ -878,8 +1009,10 @@ Module( generators: [ Comprehension { range: 518..549, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 522..523, id: Name("x"), ctx: Store, @@ -887,6 +1020,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 527..531, id: Name("data"), ctx: Load, @@ -895,9 +1029,11 @@ Module( ifs: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 536..548, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 547..548, id: Name("y"), ctx: Load, @@ -915,12 +1051,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 551..588, value: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 551..588, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 552..553, id: Name("x"), ctx: Load, @@ -928,6 +1067,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 555..556, id: Name("y"), ctx: Load, @@ -936,8 +1076,10 @@ Module( generators: [ Comprehension { range: 557..587, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 561..562, id: Name("x"), ctx: Store, @@ -945,6 +1087,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 566..570, id: Name("data"), ctx: Load, @@ -953,19 +1096,26 @@ Module( ifs: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 575..586, parameters: Some( Parameters { range: 582..583, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 582..583, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 582..583, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 582..583, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -979,6 +1129,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 585..586, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__f_string.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__f_string.py.snap index 99067deeda..1fe9ef6fa7 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__f_string.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__f_string.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/valid/expressions/f_string.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..979, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..21, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 18..21, value: FStringValue { inner: Single( FString( FString { range: 18..21, + node_index: AtomicNodeIndex(..), elements: [], flags: FStringFlags { quote_style: Double, @@ -36,15 +40,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..25, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 22..25, value: FStringValue { inner: Single( FString( FString { range: 22..25, + node_index: AtomicNodeIndex(..), elements: [], flags: FStringFlags { quote_style: Double, @@ -61,15 +68,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..29, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 26..29, value: FStringValue { inner: Single( FString( FString { range: 26..29, + node_index: AtomicNodeIndex(..), elements: [], flags: FStringFlags { quote_style: Single, @@ -86,15 +96,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..37, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 30..37, value: FStringValue { inner: Single( FString( FString { range: 30..37, + node_index: AtomicNodeIndex(..), elements: [], flags: FStringFlags { quote_style: Double, @@ -111,15 +124,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 38..45, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 38..45, value: FStringValue { inner: Single( FString( FString { range: 38..45, + node_index: AtomicNodeIndex(..), elements: [], flags: FStringFlags { quote_style: Single, @@ -136,26 +152,32 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 47..56, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 47..56, value: FStringValue { inner: Single( FString( FString { range: 47..56, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 49..55, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 50..54, value: StringLiteralValue { inner: Single( StringLiteral { range: 50..54, + node_index: AtomicNodeIndex(..), value: " f", flags: StringLiteralFlags { quote_style: Double, @@ -188,21 +210,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..67, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 57..67, value: FStringValue { inner: Single( FString( FString { range: 57..67, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 59..66, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..63, id: Name("foo"), ctx: Load, @@ -229,25 +256,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..75, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 68..75, value: FStringValue { inner: Single( FString( FString { range: 68..75, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 70..74, + node_index: AtomicNodeIndex(..), expression: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 71..73, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 71..72, value: Int( 3, @@ -280,24 +313,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 76..86, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 76..86, value: FStringValue { inner: Single( FString( FString { range: 76..86, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 78..85, + node_index: AtomicNodeIndex(..), expression: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 79..83, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 3, @@ -310,6 +349,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 4, @@ -324,6 +364,7 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 84..84, + node_index: AtomicNodeIndex(..), elements: [], }, ), @@ -345,21 +386,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 87..102, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 87..102, value: FStringValue { inner: Single( FString( FString { range: 87..102, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 89..101, + node_index: AtomicNodeIndex(..), expression: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 90..91, value: Int( 3, @@ -371,17 +417,21 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 92..100, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 92..97, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 93..96, value: StringLiteralValue { inner: Single( StringLiteral { range: 93..96, + node_index: AtomicNodeIndex(..), value: "}", flags: StringLiteralFlags { quote_style: Double, @@ -401,6 +451,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 97..100, + node_index: AtomicNodeIndex(..), value: ">10", }, ), @@ -425,21 +476,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 103..118, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 103..118, value: FStringValue { inner: Single( FString( FString { range: 103..118, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 105..117, + node_index: AtomicNodeIndex(..), expression: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 106..107, value: Int( 3, @@ -451,17 +507,21 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 108..116, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 108..113, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 109..112, value: StringLiteralValue { inner: Single( StringLiteral { range: 109..112, + node_index: AtomicNodeIndex(..), value: "{", flags: StringLiteralFlags { quote_style: Double, @@ -481,6 +541,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 113..116, + node_index: AtomicNodeIndex(..), value: ">10", }, ), @@ -505,21 +566,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 119..133, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 119..133, value: FStringValue { inner: Single( FString( FString { range: 119..133, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 121..132, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 124..127, id: Name("foo"), ctx: Load, @@ -551,21 +617,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 134..154, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 134..154, value: FStringValue { inner: Single( FString( FString { range: 134..154, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 136..153, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..142, id: Name("foo"), ctx: Load, @@ -581,10 +652,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 147..152, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 147..152, + node_index: AtomicNodeIndex(..), value: ".3f ", }, ), @@ -609,21 +682,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 155..173, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 155..173, value: FStringValue { inner: Single( FString( FString { range: 155..173, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 157..172, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..163, id: Name("foo"), ctx: Load, @@ -655,25 +733,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 174..190, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 174..190, value: FStringValue { inner: Single( FString( FString { range: 174..190, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 176..189, + node_index: AtomicNodeIndex(..), expression: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 179..183, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 179..180, value: Int( 1, @@ -682,6 +766,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 182..183, value: Int( 2, @@ -719,33 +804,41 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 191..217, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 191..217, value: FStringValue { inner: Single( FString( FString { range: 191..217, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 193..216, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 194..210, value: FStringValue { inner: Single( FString( FString { range: 194..210, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 196..209, + node_index: AtomicNodeIndex(..), expression: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 197..203, value: Float( 3.1415, @@ -762,10 +855,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 205..208, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 205..208, + node_index: AtomicNodeIndex(..), value: ".1f", }, ), @@ -791,10 +886,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 211..215, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 211..215, + node_index: AtomicNodeIndex(..), value: "*^20", }, ), @@ -819,15 +916,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 219..253, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 219..253, items: [ DictItem { key: Some( FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 220..248, value: FStringValue { inner: Concatenated( @@ -835,6 +935,7 @@ Module( Literal( StringLiteral { range: 220..226, + node_index: AtomicNodeIndex(..), value: "foo ", flags: StringLiteralFlags { quote_style: Double, @@ -846,21 +947,26 @@ Module( FString( FString { range: 227..242, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 229..233, + node_index: AtomicNodeIndex(..), value: "bar ", }, ), Interpolation( InterpolatedElement { range: 233..240, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 234..239, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 234..235, id: Name("x"), ctx: Load, @@ -869,6 +975,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 238..239, id: Name("y"), ctx: Load, @@ -884,6 +991,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 240..241, + node_index: AtomicNodeIndex(..), value: " ", }, ), @@ -898,6 +1006,7 @@ Module( Literal( StringLiteral { range: 243..248, + node_index: AtomicNodeIndex(..), value: "baz", flags: StringLiteralFlags { quote_style: Double, @@ -914,6 +1023,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 250..252, value: Int( 10, @@ -928,9 +1038,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 254..345, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 260..263, id: Name("foo"), ctx: Load, @@ -939,16 +1051,20 @@ Module( cases: [ MatchCase { range: 269..293, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 274..279, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 274..279, value: StringLiteralValue { inner: Single( StringLiteral { range: 274..279, + node_index: AtomicNodeIndex(..), value: "one", flags: StringLiteralFlags { quote_style: Double, @@ -966,6 +1082,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 289..293, }, ), @@ -973,11 +1090,14 @@ Module( }, MatchCase { range: 298..345, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 303..331, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 303..331, value: StringLiteralValue { inner: Concatenated( @@ -985,6 +1105,7 @@ Module( strings: [ StringLiteral { range: 303..316, + node_index: AtomicNodeIndex(..), value: "implicitly ", flags: StringLiteralFlags { quote_style: Double, @@ -994,6 +1115,7 @@ Module( }, StringLiteral { range: 317..331, + node_index: AtomicNodeIndex(..), value: "concatenated", flags: StringLiteralFlags { quote_style: Double, @@ -1014,6 +1136,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 341..345, }, ), @@ -1024,27 +1147,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 347..364, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 347..364, value: FStringValue { inner: Single( FString( FString { range: 347..364, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 349..350, + node_index: AtomicNodeIndex(..), value: "\\", }, ), Interpolation( InterpolatedElement { range: 350..355, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 351..354, id: Name("foo"), ctx: Load, @@ -1058,14 +1187,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 355..356, + node_index: AtomicNodeIndex(..), value: "\\", }, ), Interpolation( InterpolatedElement { range: 356..363, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 357..360, id: Name("bar"), ctx: Load, @@ -1076,10 +1208,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 361..362, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 361..362, + node_index: AtomicNodeIndex(..), value: "\\", }, ), @@ -1104,19 +1238,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 365..379, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 365..379, value: FStringValue { inner: Single( FString( FString { range: 365..379, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 367..378, + node_index: AtomicNodeIndex(..), value: "\\{foo\\}", }, ), @@ -1136,21 +1274,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 380..420, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 380..420, value: FStringValue { inner: Single( FString( FString { range: 380..420, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 384..417, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 390..393, id: Name("foo"), ctx: Load, @@ -1161,10 +1304,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 394..416, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 394..416, + node_index: AtomicNodeIndex(..), value: "x\n y\n z\n", }, ), @@ -1189,21 +1334,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 421..439, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 421..439, value: FStringValue { inner: Single( FString( FString { range: 421..439, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 423..438, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 428..431, id: Name("foo"), ctx: Load, @@ -1235,27 +1385,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 441..486, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 441..486, value: FStringValue { inner: Single( FString( FString { range: 441..486, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 443..450, + node_index: AtomicNodeIndex(..), value: "normal ", }, ), Interpolation( InterpolatedElement { range: 450..455, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 451..454, id: Name("foo"), ctx: Load, @@ -1269,14 +1425,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 455..468, + node_index: AtomicNodeIndex(..), value: " {another} ", }, ), Interpolation( InterpolatedElement { range: 468..473, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 469..472, id: Name("bar"), ctx: Load, @@ -1290,14 +1449,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 473..476, + node_index: AtomicNodeIndex(..), value: " {", }, ), Interpolation( InterpolatedElement { range: 476..483, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 477..482, id: Name("three"), ctx: Load, @@ -1311,6 +1473,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 483..485, + node_index: AtomicNodeIndex(..), value: "}", }, ), @@ -1330,27 +1493,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 487..529, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 487..529, value: FStringValue { inner: Single( FString( FString { range: 487..529, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 489..496, + node_index: AtomicNodeIndex(..), value: "normal ", }, ), Interpolation( InterpolatedElement { range: 496..503, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 497..500, id: Name("foo"), ctx: Load, @@ -1364,14 +1533,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 503..504, + node_index: AtomicNodeIndex(..), value: " ", }, ), Interpolation( InterpolatedElement { range: 504..511, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 505..508, id: Name("bar"), ctx: Load, @@ -1385,14 +1557,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 511..512, + node_index: AtomicNodeIndex(..), value: " ", }, ), Interpolation( InterpolatedElement { range: 512..519, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 513..516, id: Name("baz"), ctx: Load, @@ -1406,14 +1581,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 519..520, + node_index: AtomicNodeIndex(..), value: " ", }, ), Interpolation( InterpolatedElement { range: 520..528, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 521..527, id: Name("foobar"), ctx: Load, @@ -1440,27 +1618,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 530..549, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 530..549, value: FStringValue { inner: Single( FString( FString { range: 530..549, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 532..539, + node_index: AtomicNodeIndex(..), value: "normal ", }, ), Interpolation( InterpolatedElement { range: 539..548, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 540..541, id: Name("x"), ctx: Load, @@ -1471,10 +1655,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 542..547, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 542..547, + node_index: AtomicNodeIndex(..), value: "y + 2", }, ), @@ -1499,21 +1685,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 550..568, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 550..568, value: FStringValue { inner: Single( FString( FString { range: 550..568, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 552..567, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 553..554, id: Name("x"), ctx: Load, @@ -1524,22 +1715,28 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 555..566, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 555..566, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 556..565, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 556..563, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 556..559, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 557..558, value: Int( 1, @@ -1552,12 +1749,14 @@ Module( attr: Identifier { id: Name("pop"), range: 560..563, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 563..565, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1589,34 +1788,45 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 569..588, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 569..588, value: FStringValue { inner: Single( FString( FString { range: 569..588, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 571..587, + node_index: AtomicNodeIndex(..), expression: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 573..585, parameters: Some( Parameters { range: 580..581, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 580..581, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 580..581, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 580..581, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1630,10 +1840,12 @@ Module( ), body: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 582..585, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 583..584, id: Name("x"), ctx: Load, @@ -1665,21 +1877,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 589..597, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 589..597, value: FStringValue { inner: Single( FString( FString { range: 589..597, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 591..596, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 592..593, id: Name("x"), ctx: Load, @@ -1711,21 +1928,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 598..611, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 598..611, value: FStringValue { inner: Single( FString( FString { range: 598..611, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 600..610, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 605..606, id: Name("x"), ctx: Load, @@ -1757,21 +1979,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 612..621, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 612..621, value: FStringValue { inner: Single( FString( FString { range: 612..621, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 614..620, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 615..616, id: Name("x"), ctx: Load, @@ -1803,21 +2030,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 622..636, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 622..636, value: FStringValue { inner: Single( FString( FString { range: 622..636, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 624..635, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 625..626, id: Name("x"), ctx: Load, @@ -1828,10 +2060,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 627..634, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 627..634, + node_index: AtomicNodeIndex(..), value: ".3f!r =", }, ), @@ -1856,21 +2090,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 637..653, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 637..653, value: FStringValue { inner: Single( FString( FString { range: 637..653, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 639..652, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 640..641, id: Name("x"), ctx: Load, @@ -1886,10 +2125,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 648..651, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 648..651, + node_index: AtomicNodeIndex(..), value: ".3f", }, ), @@ -1914,21 +2155,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 654..667, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 654..667, value: FStringValue { inner: Single( FString( FString { range: 654..667, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 656..666, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 657..658, id: Name("x"), ctx: Load, @@ -1939,10 +2185,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 659..665, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 659..665, + node_index: AtomicNodeIndex(..), value: ".3f=!r", }, ), @@ -1967,9 +2215,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 668..682, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 668..682, value: FStringValue { inner: Concatenated( @@ -1977,6 +2227,7 @@ Module( Literal( StringLiteral { range: 668..675, + node_index: AtomicNodeIndex(..), value: "hello", flags: StringLiteralFlags { quote_style: Double, @@ -1988,12 +2239,15 @@ Module( FString( FString { range: 676..682, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 678..681, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 679..680, id: Name("x"), ctx: Load, @@ -2021,9 +2275,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 683..696, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 683..696, value: FStringValue { inner: Concatenated( @@ -2031,12 +2287,15 @@ Module( FString( FString { range: 683..689, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 685..688, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 686..687, id: Name("x"), ctx: Load, @@ -2058,12 +2317,15 @@ Module( FString( FString { range: 690..696, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 692..695, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 693..694, id: Name("y"), ctx: Load, @@ -2091,9 +2353,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 697..711, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 697..711, value: FStringValue { inner: Concatenated( @@ -2101,12 +2365,15 @@ Module( FString( FString { range: 697..703, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 699..702, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 700..701, id: Name("x"), ctx: Load, @@ -2128,6 +2395,7 @@ Module( Literal( StringLiteral { range: 704..711, + node_index: AtomicNodeIndex(..), value: "world", flags: StringLiteralFlags { quote_style: Double, @@ -2145,31 +2413,38 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 712..756, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 712..756, value: FStringValue { inner: Single( FString( FString { range: 712..756, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 714..739, + node_index: AtomicNodeIndex(..), value: "Invalid args in command: ", }, ), Interpolation( InterpolatedElement { range: 739..755, + node_index: AtomicNodeIndex(..), expression: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 740..754, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 740..747, id: Name("command"), ctx: Load, @@ -2177,9 +2452,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 749..754, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 750..754, id: Name("args"), ctx: Load, @@ -2214,9 +2491,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 757..775, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 757..775, value: FStringValue { inner: Concatenated( @@ -2224,6 +2503,7 @@ Module( Literal( StringLiteral { range: 757..762, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2235,12 +2515,15 @@ Module( FString( FString { range: 763..769, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 765..768, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 766..767, id: Name("x"), ctx: Load, @@ -2262,6 +2545,7 @@ Module( Literal( StringLiteral { range: 770..775, + node_index: AtomicNodeIndex(..), value: "bar", flags: StringLiteralFlags { quote_style: Double, @@ -2279,9 +2563,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 776..825, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 782..823, value: FStringValue { inner: Concatenated( @@ -2289,10 +2575,12 @@ Module( FString( FString { range: 782..786, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 784..785, + node_index: AtomicNodeIndex(..), value: "a", }, ), @@ -2307,10 +2595,12 @@ Module( FString( FString { range: 791..795, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 793..794, + node_index: AtomicNodeIndex(..), value: "b", }, ), @@ -2325,6 +2615,7 @@ Module( Literal( StringLiteral { range: 800..803, + node_index: AtomicNodeIndex(..), value: "c", flags: StringLiteralFlags { quote_style: Double, @@ -2336,10 +2627,12 @@ Module( FString( FString { range: 808..813, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 811..812, + node_index: AtomicNodeIndex(..), value: "d", }, ), @@ -2356,10 +2649,12 @@ Module( FString( FString { range: 818..823, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 821..822, + node_index: AtomicNodeIndex(..), value: "e", }, ), @@ -2382,9 +2677,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 850..879, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 850..879, value: FStringValue { inner: Concatenated( @@ -2392,6 +2689,7 @@ Module( Literal( StringLiteral { range: 850..856, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2403,12 +2701,15 @@ Module( FString( FString { range: 857..865, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 859..864, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 860..863, id: Name("bar"), ctx: Load, @@ -2430,6 +2731,7 @@ Module( Literal( StringLiteral { range: 866..871, + node_index: AtomicNodeIndex(..), value: "baz", flags: StringLiteralFlags { quote_style: Double, @@ -2441,6 +2743,7 @@ Module( Literal( StringLiteral { range: 872..879, + node_index: AtomicNodeIndex(..), value: " some", flags: StringLiteralFlags { quote_style: Double, @@ -2458,9 +2761,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 880..909, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 880..909, value: FStringValue { inner: Concatenated( @@ -2468,6 +2773,7 @@ Module( Literal( StringLiteral { range: 880..885, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2479,12 +2785,15 @@ Module( FString( FString { range: 886..894, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 888..893, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 889..892, id: Name("bar"), ctx: Load, @@ -2506,6 +2815,7 @@ Module( Literal( StringLiteral { range: 895..901, + node_index: AtomicNodeIndex(..), value: "baz", flags: StringLiteralFlags { quote_style: Double, @@ -2517,6 +2827,7 @@ Module( Literal( StringLiteral { range: 902..909, + node_index: AtomicNodeIndex(..), value: " some", flags: StringLiteralFlags { quote_style: Double, @@ -2534,9 +2845,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 910..939, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 910..939, value: FStringValue { inner: Concatenated( @@ -2544,6 +2857,7 @@ Module( Literal( StringLiteral { range: 910..915, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2555,12 +2869,15 @@ Module( FString( FString { range: 916..924, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 918..923, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 919..922, id: Name("bar"), ctx: Load, @@ -2582,6 +2899,7 @@ Module( Literal( StringLiteral { range: 925..930, + node_index: AtomicNodeIndex(..), value: "baz", flags: StringLiteralFlags { quote_style: Double, @@ -2593,6 +2911,7 @@ Module( Literal( StringLiteral { range: 931..939, + node_index: AtomicNodeIndex(..), value: " some", flags: StringLiteralFlags { quote_style: Double, @@ -2610,9 +2929,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 940..978, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 940..978, value: FStringValue { inner: Concatenated( @@ -2620,6 +2941,7 @@ Module( Literal( StringLiteral { range: 940..946, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2631,18 +2953,22 @@ Module( FString( FString { range: 947..966, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 949..953, + node_index: AtomicNodeIndex(..), value: "bar ", }, ), Interpolation( InterpolatedElement { range: 953..958, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 954..957, id: Name("baz"), ctx: Load, @@ -2656,6 +2982,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 958..965, + node_index: AtomicNodeIndex(..), value: " really", }, ), @@ -2670,6 +2997,7 @@ Module( Literal( StringLiteral { range: 967..973, + node_index: AtomicNodeIndex(..), value: "bar", flags: StringLiteralFlags { quote_style: Double, @@ -2681,6 +3009,7 @@ Module( Literal( StringLiteral { range: 974..978, + node_index: AtomicNodeIndex(..), value: "no", flags: StringLiteralFlags { quote_style: Double, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__generator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__generator.py.snap index d93aef523a..80e25b5146 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__generator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__generator.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/generator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..482, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..22, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 0..22, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("x"), ctx: Load, @@ -26,8 +29,10 @@ Module( generators: [ Comprehension { range: 3..21, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..13, id: Name("target"), ctx: Store, @@ -35,6 +40,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..21, id: Name("iter"), ctx: Load, @@ -51,12 +57,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..51, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 23..51, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("x"), ctx: Load, @@ -65,8 +74,10 @@ Module( generators: [ Comprehension { range: 26..50, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..42, id: Name("target"), ctx: Store, @@ -74,6 +85,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..50, id: Name("iter"), ctx: Load, @@ -90,12 +102,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 52..100, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 52..100, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("x"), ctx: Load, @@ -104,8 +119,10 @@ Module( generators: [ Comprehension { range: 55..99, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..65, id: Name("target"), ctx: Store, @@ -113,6 +130,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..73, id: Name("iter"), ctx: Load, @@ -121,9 +139,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 77..83, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("x"), ctx: Load, @@ -135,6 +155,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("y"), ctx: Load, @@ -145,11 +166,13 @@ Module( ), BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 87..94, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..88, id: Name("a"), ctx: Load, @@ -157,6 +180,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("b"), ctx: Load, @@ -167,6 +191,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("c"), ctx: Load, @@ -183,12 +208,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 101..166, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 101..166, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..103, id: Name("x"), ctx: Load, @@ -197,8 +225,10 @@ Module( generators: [ Comprehension { range: 104..135, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..115, id: Name("target1"), ctx: Store, @@ -206,6 +236,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 119..124, id: Name("iter1"), ctx: Load, @@ -214,11 +245,13 @@ Module( ifs: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 128..135, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("x"), ctx: Load, @@ -226,6 +259,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 134..135, id: Name("y"), ctx: Load, @@ -239,8 +273,10 @@ Module( }, Comprehension { range: 136..165, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 140..147, id: Name("target2"), ctx: Store, @@ -248,6 +284,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 151..156, id: Name("iter2"), ctx: Load, @@ -256,9 +293,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 160..165, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..161, id: Name("a"), ctx: Load, @@ -270,6 +309,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 164..165, id: Name("b"), ctx: Load, @@ -289,12 +329,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 167..238, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 167..238, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 168..169, id: Name("x"), ctx: Load, @@ -303,8 +346,10 @@ Module( generators: [ Comprehension { range: 170..201, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 174..181, id: Name("target1"), ctx: Store, @@ -312,6 +357,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 185..190, id: Name("iter1"), ctx: Load, @@ -320,11 +366,13 @@ Module( ifs: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 194..201, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 194..195, id: Name("x"), ctx: Load, @@ -332,6 +380,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 200..201, id: Name("y"), ctx: Load, @@ -345,8 +394,10 @@ Module( }, Comprehension { range: 202..237, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 212..219, id: Name("target2"), ctx: Store, @@ -354,6 +405,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 223..228, id: Name("iter2"), ctx: Load, @@ -362,9 +414,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 232..237, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 232..233, id: Name("a"), ctx: Load, @@ -376,6 +430,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..237, id: Name("b"), ctx: Load, @@ -395,15 +450,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 259..282, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 259..282, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 260..270, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 260..261, id: Name("x"), ctx: Store, @@ -411,9 +470,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 265..270, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 265..266, id: Name("y"), ctx: Load, @@ -422,6 +483,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 269..270, value: Int( 1, @@ -435,8 +497,10 @@ Module( generators: [ Comprehension { range: 271..281, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 275..276, id: Name("y"), ctx: Store, @@ -444,6 +508,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 280..281, id: Name("z"), ctx: Load, @@ -460,15 +525,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 300..326, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 300..326, elt: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 301..314, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 306..307, id: Name("y"), ctx: Load, @@ -476,6 +545,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 301..302, id: Name("x"), ctx: Load, @@ -483,6 +553,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 313..314, id: Name("y"), ctx: Load, @@ -493,8 +564,10 @@ Module( generators: [ Comprehension { range: 315..325, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 319..320, id: Name("y"), ctx: Store, @@ -502,6 +575,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 324..325, id: Name("z"), ctx: Load, @@ -518,20 +592,25 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 340..481, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 340..481, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 340..348, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 340..343, value: StringLiteralValue { inner: Single( StringLiteral { range: 340..343, + node_index: AtomicNodeIndex(..), value: " ", flags: StringLiteralFlags { quote_style: Double, @@ -546,18 +625,22 @@ Module( attr: Identifier { id: Name("join"), range: 344..348, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 348..481, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 354..479, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 354..357, id: Name("sql"), ctx: Load, @@ -566,8 +649,10 @@ Module( generators: [ Comprehension { range: 362..479, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 366..369, id: Name("sql"), ctx: Store, @@ -575,13 +660,16 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 373..479, elts: [ If( ExprIf { + node_index: AtomicNodeIndex(..), range: 383..420, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 405..410, id: Name("limit"), ctx: Load, @@ -589,14 +677,17 @@ Module( ), body: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 383..401, left: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 383..393, value: StringLiteralValue { inner: Single( StringLiteral { range: 383..393, + node_index: AtomicNodeIndex(..), value: "LIMIT %d", flags: StringLiteralFlags { quote_style: Double, @@ -611,6 +702,7 @@ Module( op: Mod, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 396..401, id: Name("limit"), ctx: Load, @@ -620,6 +712,7 @@ Module( ), orelse: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 416..420, }, ), @@ -627,9 +720,11 @@ Module( ), If( ExprIf { + node_index: AtomicNodeIndex(..), range: 430..472, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 456..462, id: Name("offset"), ctx: Load, @@ -637,14 +732,17 @@ Module( ), body: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 431..451, left: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 431..442, value: StringLiteralValue { inner: Single( StringLiteral { range: 431..442, + node_index: AtomicNodeIndex(..), value: "OFFSET %d", flags: StringLiteralFlags { quote_style: Double, @@ -659,6 +757,7 @@ Module( op: Mod, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 445..451, id: Name("offset"), ctx: Load, @@ -668,6 +767,7 @@ Module( ), orelse: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 468..472, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__if.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__if.py.snap index 5cca4b3a1b..f21914594f 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__if.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__if.py.snap @@ -1,29 +1,33 @@ --- 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 { + node_index: AtomicNodeIndex(..), range: 0..423, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..16, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 0..16, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 5..9, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("a"), ctx: Load, @@ -31,6 +35,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..16, id: Name("b"), ctx: Load, @@ -42,12 +47,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..35, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 17..35, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("x"), ctx: Load, @@ -55,9 +63,11 @@ Module( ), body: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 17..20, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("f"), ctx: Load, @@ -65,6 +75,7 @@ Module( ), arguments: Arguments { range: 18..20, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -72,6 +83,7 @@ Module( ), orelse: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 31..35, }, ), @@ -81,12 +93,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 36..61, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 36..61, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("b"), ctx: Load, @@ -94,6 +109,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("a"), ctx: Load, @@ -101,9 +117,11 @@ Module( ), orelse: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 48..61, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("d"), ctx: Load, @@ -111,6 +129,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..49, id: Name("c"), ctx: Load, @@ -118,6 +137,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("e"), ctx: Load, @@ -131,15 +151,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 62..84, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 62..84, test: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 71..76, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 71..72, value: Int( 1, @@ -152,6 +176,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 75..76, value: Int( 0, @@ -163,9 +188,11 @@ Module( ), body: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 62..67, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 62..63, value: Int( 1, @@ -175,6 +202,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("x"), ctx: Load, @@ -184,10 +212,12 @@ Module( ), orelse: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 82..84, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 1, @@ -202,12 +232,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 85..108, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 85..108, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..97, id: Name("x"), ctx: Load, @@ -215,11 +248,13 @@ Module( ), body: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 85..92, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..86, id: Name("a"), ctx: Load, @@ -227,6 +262,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..92, id: Name("b"), ctx: Load, @@ -237,6 +273,7 @@ Module( ), orelse: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 103..108, value: false, }, @@ -247,12 +284,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 109..127, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 109..127, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 119..120, id: Name("y"), ctx: Load, @@ -260,9 +300,11 @@ Module( ), body: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 109..115, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 109..110, id: Name("x"), ctx: Load, @@ -274,6 +316,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..115, id: Name("y"), ctx: Load, @@ -284,6 +327,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 126..127, id: Name("x"), ctx: Load, @@ -295,17 +339,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 128..154, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 128..154, test: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 136..143, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..137, id: Name("a"), ctx: Load, @@ -313,6 +361,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..143, id: Name("b"), ctx: Load, @@ -323,12 +372,14 @@ Module( ), body: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 128..132, value: true, }, ), orelse: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 149..154, value: false, }, @@ -339,13 +390,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 155..171, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 155..171, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 155..156, value: Int( 1, @@ -354,9 +408,11 @@ Module( ), If( ExprIf { + node_index: AtomicNodeIndex(..), range: 158..171, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 163..164, id: Name("a"), ctx: Load, @@ -364,6 +420,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 158..159, value: Int( 1, @@ -372,6 +429,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..171, id: Name("c"), ctx: Load, @@ -388,18 +446,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 214..240, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 214..240, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 219..223, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 214..215, id: Name("x"), ctx: Load, @@ -407,19 +469,26 @@ Module( ), orelse: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 229..240, parameters: Some( Parameters { range: 236..237, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 236..237, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 236..237, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 236..237, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -433,6 +502,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 239..240, id: Name("y"), ctx: Load, @@ -446,16 +516,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 302..323, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 302..323, test: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 308..315, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 314..315, id: Name("x"), ctx: Load, @@ -466,6 +540,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 302..303, id: Name("x"), ctx: Load, @@ -473,6 +548,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 322..323, id: Name("y"), ctx: Load, @@ -484,15 +560,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 324..350, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 324..350, test: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 330..342, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 341..342, id: Name("x"), ctx: Load, @@ -502,6 +582,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 324..325, id: Name("x"), ctx: Load, @@ -509,6 +590,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 349..350, id: Name("y"), ctx: Load, @@ -520,25 +602,34 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 351..376, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 351..376, test: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 357..368, parameters: Some( Parameters { range: 364..365, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 364..365, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 364..365, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 364..365, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -552,6 +643,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 367..368, id: Name("x"), ctx: Load, @@ -561,6 +653,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 351..352, id: Name("x"), ctx: Load, @@ -568,6 +661,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 375..376, id: Name("y"), ctx: Load, @@ -579,12 +673,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 408..423, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 409..422, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 414..415, id: Name("y"), ctx: Load, @@ -592,6 +689,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 409..410, id: Name("x"), ctx: Load, @@ -599,6 +697,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 421..422, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__lambda.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__lambda.py.snap index a21cc82b8a..9e614f6c7e 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__lambda.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__lambda.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/lambda.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..530, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 0..9, parameters: None, body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("a"), ctx: Load, @@ -30,13 +33,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 10..19, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 10..19, parameters: None, body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 1, @@ -49,22 +55,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..31, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 20..31, parameters: Some( Parameters { range: 27..28, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 27..28, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 27..28, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 27..28, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -78,6 +92,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 30..31, value: Int( 1, @@ -90,22 +105,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 32..48, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 32..48, parameters: Some( Parameters { range: 39..43, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 39..40, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 39..40, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 39..40, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -113,11 +136,14 @@ Module( }, ParameterWithDefault { range: 42..43, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 42..43, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 42..43, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -131,6 +157,7 @@ Module( ), body: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 45..48, }, ), @@ -140,22 +167,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..66, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 49..66, parameters: Some( Parameters { range: 56..63, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 56..57, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 56..57, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 56..57, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -163,11 +198,14 @@ Module( }, ParameterWithDefault { range: 59..60, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 59..60, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 59..60, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -175,11 +213,14 @@ Module( }, ParameterWithDefault { range: 62..63, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 62..63, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 62..63, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -193,6 +234,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 65..66, value: Int( 1, @@ -205,22 +247,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 67..90, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 67..90, parameters: Some( Parameters { range: 74..87, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 74..75, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 74..75, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 74..75, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -228,17 +278,21 @@ Module( }, ParameterWithDefault { range: 77..81, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 77..78, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 77..78, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..81, value: Int( 20, @@ -249,17 +303,21 @@ Module( }, ParameterWithDefault { range: 83..87, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 83..84, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 83..84, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 85..87, value: Int( 30, @@ -276,6 +334,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 1, @@ -288,22 +347,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 91..109, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 91..109, parameters: Some( Parameters { range: 98..102, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 98..99, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 98..99, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 98..99, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -311,11 +378,14 @@ Module( }, ParameterWithDefault { range: 101..102, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 101..102, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 101..102, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -329,9 +399,11 @@ Module( ), body: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 104..109, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..105, id: Name("x"), ctx: Load, @@ -340,6 +412,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..109, id: Name("y"), ctx: Load, @@ -353,22 +426,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 110..130, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 110..130, parameters: Some( Parameters { range: 117..123, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 117..118, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 117..118, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 117..118, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -376,17 +457,21 @@ Module( }, ParameterWithDefault { range: 120..123, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 120..121, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("z"), range: 120..121, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 122..123, value: Int( 1, @@ -403,9 +488,11 @@ Module( ), body: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 125..130, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 125..126, id: Name("z"), ctx: Load, @@ -414,6 +501,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("y"), ctx: Load, @@ -427,21 +515,28 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 131..143, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 131..143, parameters: Some( Parameters { range: 138..140, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 138..140, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 139..140, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -452,6 +547,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..143, id: Name("a"), ctx: Load, @@ -463,21 +559,28 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 144..166, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 144..166, parameters: Some( Parameters { range: 151..161, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 151..153, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 152..153, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -485,11 +588,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 155..156, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 155..156, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("z"), range: 155..156, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -497,17 +603,21 @@ Module( }, ParameterWithDefault { range: 158..161, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 158..159, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 158..159, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 160..161, value: Int( 0, @@ -522,6 +632,7 @@ Module( ), body: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 163..166, }, ), @@ -531,24 +642,32 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 167..187, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 167..187, parameters: Some( Parameters { range: 174..184, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, kwonlyargs: [ ParameterWithDefault { range: 177..178, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 177..178, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 177..178, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -556,11 +675,14 @@ Module( }, ParameterWithDefault { range: 180..181, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 180..181, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 180..181, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -568,11 +690,14 @@ Module( }, ParameterWithDefault { range: 183..184, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 183..184, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 183..184, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -584,6 +709,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 186..187, value: Int( 1, @@ -596,24 +722,32 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 188..214, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 188..214, parameters: Some( Parameters { range: 195..211, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, kwonlyargs: [ ParameterWithDefault { range: 198..199, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 198..199, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 198..199, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -621,17 +755,21 @@ Module( }, ParameterWithDefault { range: 201..205, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 201..202, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 201..202, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 203..205, value: Int( 20, @@ -642,17 +780,21 @@ Module( }, ParameterWithDefault { range: 207..211, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 207..208, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 207..208, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 209..211, value: Int( 30, @@ -667,6 +809,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 213..214, value: Int( 1, @@ -679,22 +822,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 215..241, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 215..241, parameters: Some( Parameters { range: 222..238, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 222..223, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 222..223, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 222..223, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -702,11 +853,14 @@ Module( }, ParameterWithDefault { range: 225..226, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 225..226, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 225..226, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -714,11 +868,14 @@ Module( }, ParameterWithDefault { range: 228..229, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 228..229, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 228..229, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -729,11 +886,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 234..235, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 234..235, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 234..235, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -741,11 +901,14 @@ Module( }, ParameterWithDefault { range: 237..238, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 237..238, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 237..238, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -757,6 +920,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 240..241, value: Int( 0, @@ -769,13 +933,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 242..262, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 242..262, parameters: Some( Parameters { range: 249..257, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -783,9 +952,11 @@ Module( kwarg: Some( Parameter { range: 249..257, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 251..257, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -794,9 +965,11 @@ Module( ), body: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 259..262, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 259..260, id: Name("f"), ctx: Load, @@ -804,6 +977,7 @@ Module( ), arguments: Arguments { range: 260..262, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -815,21 +989,28 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 263..294, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 263..294, parameters: Some( Parameters { range: 270..285, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 270..275, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 271..275, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -838,9 +1019,11 @@ Module( kwarg: Some( Parameter { range: 277..285, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 279..285, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -849,12 +1032,15 @@ Module( ), body: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 287..294, left: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 287..290, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 287..288, id: Name("f"), ctx: Load, @@ -862,6 +1048,7 @@ Module( ), arguments: Arguments { range: 288..290, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -870,6 +1057,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 293..294, value: Int( 1, @@ -884,21 +1072,28 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 295..334, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 295..334, parameters: Some( Parameters { range: 302..325, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 302..307, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 303..307, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -906,11 +1101,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 309..310, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 309..310, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 309..310, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -918,17 +1116,21 @@ Module( }, ParameterWithDefault { range: 312..315, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 312..313, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 312..313, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 314..315, value: Int( 1, @@ -941,9 +1143,11 @@ Module( kwarg: Some( Parameter { range: 317..325, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 319..325, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -952,12 +1156,15 @@ Module( ), body: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 327..334, left: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 327..330, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 327..328, id: Name("f"), ctx: Load, @@ -965,6 +1172,7 @@ Module( ), arguments: Arguments { range: 328..330, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -973,6 +1181,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 333..334, value: Int( 1, @@ -987,21 +1196,29 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 335..351, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 335..351, parameters: Some( Parameters { range: 342..346, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 342..343, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 342..343, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 342..343, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1016,6 +1233,7 @@ Module( ), body: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 348..351, }, ), @@ -1025,21 +1243,29 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 352..371, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 352..371, parameters: Some( Parameters { range: 359..366, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 359..360, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 359..360, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 359..360, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1049,11 +1275,14 @@ Module( args: [ ParameterWithDefault { range: 365..366, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 365..366, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 365..366, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1067,6 +1296,7 @@ Module( ), body: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 368..371, }, ), @@ -1076,27 +1306,36 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 372..391, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 372..391, parameters: Some( Parameters { range: 379..386, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 379..382, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 379..380, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 379..380, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 381..382, value: Int( 1, @@ -1114,6 +1353,7 @@ Module( ), body: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 388..391, }, ), @@ -1123,21 +1363,29 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 392..417, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 392..417, parameters: Some( Parameters { range: 399..412, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 399..400, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 399..400, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 399..400, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1145,11 +1393,14 @@ Module( }, ParameterWithDefault { range: 402..403, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 402..403, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 402..403, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1161,11 +1412,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 411..412, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 411..412, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 411..412, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1177,6 +1431,7 @@ Module( ), body: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 414..417, }, ), @@ -1186,28 +1441,37 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 418..440, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 418..440, parameters: Some( Parameters { range: 425..435, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 425..429, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 425..427, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kw"), range: 425..427, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 428..429, value: Int( 1, @@ -1221,11 +1485,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 434..435, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 434..435, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 434..435, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1237,6 +1504,7 @@ Module( ), body: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 437..440, }, ), @@ -1246,21 +1514,29 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 441..467, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 441..467, parameters: Some( Parameters { range: 448..464, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 448..449, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 448..449, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 448..449, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1268,17 +1544,21 @@ Module( }, ParameterWithDefault { range: 451..455, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 451..452, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 451..452, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 453..455, value: Int( 20, @@ -1291,17 +1571,21 @@ Module( args: [ ParameterWithDefault { range: 460..464, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 460..461, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 460..461, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 462..464, value: Int( 30, @@ -1318,6 +1602,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 466..467, value: Int( 1, @@ -1330,21 +1615,29 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 468..497, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 468..497, parameters: Some( Parameters { range: 475..494, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 475..476, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 475..476, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 475..476, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1352,11 +1645,14 @@ Module( }, ParameterWithDefault { range: 478..479, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 478..479, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 478..479, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1366,11 +1662,14 @@ Module( args: [ ParameterWithDefault { range: 484..485, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 484..485, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 484..485, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1381,11 +1680,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 490..491, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 490..491, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 490..491, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1393,11 +1695,14 @@ Module( }, ParameterWithDefault { range: 493..494, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 493..494, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 493..494, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1409,6 +1714,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 496..497, value: Int( 0, @@ -1421,21 +1727,29 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 498..530, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 498..530, parameters: Some( Parameters { range: 505..527, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 505..506, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 505..506, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 505..506, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1443,11 +1757,14 @@ Module( }, ParameterWithDefault { range: 508..509, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 508..509, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 508..509, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1457,11 +1774,14 @@ Module( args: [ ParameterWithDefault { range: 514..515, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 514..515, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 514..515, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1471,9 +1791,11 @@ Module( vararg: Some( Parameter { range: 517..519, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 518..519, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1481,11 +1803,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 521..522, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 521..522, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 521..522, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1495,9 +1820,11 @@ Module( kwarg: Some( Parameter { range: 524..527, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 526..527, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1506,6 +1833,7 @@ Module( ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 529..530, value: Int( 0, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__list.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__list.py.snap index ae3fc6d22c..dec8d0d279 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__list.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__list.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/list.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..384, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..17, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 15..17, elts: [], ctx: Load, @@ -24,13 +26,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..21, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 18..21, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 19..20, value: Int( 1, @@ -45,13 +50,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..26, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 22..26, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 23..24, value: Int( 1, @@ -66,13 +74,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 27..36, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 27..36, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 28..29, value: Int( 1, @@ -81,6 +92,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 31..32, value: Int( 2, @@ -89,6 +101,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 34..35, value: Int( 3, @@ -103,13 +116,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 37..47, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 37..47, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 38..39, value: Int( 1, @@ -118,6 +134,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 41..42, value: Int( 2, @@ -126,6 +143,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 44..45, value: Int( 3, @@ -140,9 +158,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 75..78, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 75..78, elts: [], ctx: Load, @@ -152,13 +172,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 79..92, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 79..92, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 1, @@ -173,13 +196,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 93..114, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 93..114, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 99..100, value: Int( 1, @@ -188,6 +214,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 110..111, value: Int( 2, @@ -202,21 +229,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 125..132, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 125..132, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 126..131, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 127..130, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 128..129, value: Int( 1, @@ -239,17 +271,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..149, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 133..149, elts: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 134..140, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 135..136, value: Int( 1, @@ -258,6 +294,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 138..139, value: Int( 2, @@ -270,10 +307,12 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 142..148, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 143..144, value: Int( 3, @@ -282,6 +321,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 146..147, value: Int( 4, @@ -300,16 +340,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 170..178, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 170..178, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 171..177, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..172, id: Name("x"), ctx: Store, @@ -317,6 +361,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 176..177, value: Int( 2, @@ -333,16 +378,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 179..188, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 179..188, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 180..186, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 180..181, id: Name("x"), ctx: Store, @@ -350,6 +399,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 185..186, value: Int( 2, @@ -366,13 +416,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 189..203, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 189..203, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 190..191, value: Int( 1, @@ -381,9 +434,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 193..199, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..194, id: Name("x"), ctx: Store, @@ -391,6 +446,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 198..199, value: Int( 2, @@ -401,6 +457,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 201..202, value: Int( 3, @@ -415,13 +472,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 223..233, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 223..233, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 224..225, value: Int( 1, @@ -430,9 +490,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 227..229, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 228..229, id: Name("x"), ctx: Load, @@ -443,6 +505,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 231..232, value: Int( 3, @@ -457,13 +520,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 234..248, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 234..248, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 235..236, value: Int( 1, @@ -472,12 +538,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 238..244, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 239..244, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 239..240, id: Name("x"), ctx: Load, @@ -486,6 +555,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 243..244, id: Name("y"), ctx: Load, @@ -498,6 +568,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 246..247, value: Int( 3, @@ -512,16 +583,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 271..334, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 271..334, elts: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 272..277, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 272..273, value: Int( 1, @@ -531,6 +606,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 276..277, value: Int( 2, @@ -541,10 +617,12 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 279..291, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 280..281, value: Int( 1, @@ -553,6 +631,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 283..284, value: Int( 2, @@ -561,6 +640,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 286..287, value: Int( 3, @@ -569,6 +649,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 289..290, value: Int( 4, @@ -581,10 +662,12 @@ Module( ), Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 293..306, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 294..295, id: Name("a"), ctx: Load, @@ -592,9 +675,11 @@ Module( ), BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 297..302, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 297..298, id: Name("b"), ctx: Load, @@ -603,6 +688,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 301..302, id: Name("c"), ctx: Load, @@ -612,6 +698,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 304..305, id: Name("d"), ctx: Load, @@ -624,10 +711,12 @@ Module( ), Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 308..317, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 309..310, id: Name("a"), ctx: Load, @@ -635,6 +724,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 312..313, id: Name("b"), ctx: Load, @@ -642,6 +732,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 315..316, id: Name("c"), ctx: Load, @@ -652,12 +743,14 @@ Module( ), Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 319..325, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 320..321, id: Name("a"), ctx: Load, @@ -666,6 +759,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 323..324, value: Int( 1, @@ -678,9 +772,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 327..333, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 327..328, id: Name("x"), ctx: Store, @@ -688,6 +784,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 332..333, value: Int( 2, @@ -704,16 +801,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 335..383, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 335..383, elts: [ Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 336..382, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 336..341, id: Name("call1"), ctx: Load, @@ -721,15 +822,19 @@ Module( ), arguments: Arguments { range: 341..382, + node_index: AtomicNodeIndex(..), args: [ Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 342..381, elt: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 342..361, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 342..347, id: Name("call2"), ctx: Load, @@ -737,15 +842,19 @@ Module( ), arguments: Arguments { range: 347..361, + node_index: AtomicNodeIndex(..), args: [ Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 348..360, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 348..358, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 348..353, id: Name("value"), ctx: Load, @@ -754,12 +863,14 @@ Module( attr: Identifier { id: Name("attr"), range: 354..358, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 358..360, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -773,8 +884,10 @@ Module( generators: [ Comprehension { range: 362..381, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 366..373, id: Name("element"), ctx: Store, @@ -782,6 +895,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 377..381, id: Name("iter"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__list_comprehension.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__list_comprehension.py.snap index b81ae4169e..de7a7eb783 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__list_comprehension.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__list_comprehension.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/list_comprehension.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..776, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..26, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -24,9 +26,11 @@ Module( ], value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 4..26, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("y"), ctx: Load, @@ -35,8 +39,10 @@ Module( generators: [ Comprehension { range: 7..25, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("y"), ctx: Store, @@ -44,10 +50,12 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 16..25, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 17..18, value: Int( 1, @@ -56,6 +64,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 20..21, value: Int( 2, @@ -64,6 +73,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 23..24, value: Int( 3, @@ -85,12 +95,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..49, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 28..49, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Load, @@ -99,8 +112,10 @@ Module( generators: [ Comprehension { range: 31..48, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("i"), ctx: Store, @@ -108,9 +123,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 40..48, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..45, id: Name("range"), ctx: Load, @@ -118,9 +135,11 @@ Module( ), arguments: Arguments { range: 45..48, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 46..47, value: Int( 5, @@ -142,12 +161,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 50..91, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 50..91, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("b"), ctx: Load, @@ -156,8 +178,10 @@ Module( generators: [ Comprehension { range: 53..90, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..58, id: Name("c"), ctx: Store, @@ -165,6 +189,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("d"), ctx: Load, @@ -173,9 +198,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 67..73, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..68, id: Name("x"), ctx: Load, @@ -187,6 +214,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("w"), ctx: Load, @@ -197,11 +225,13 @@ Module( ), BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 77..85, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("y"), ctx: Load, @@ -209,6 +239,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..85, id: Name("yy"), ctx: Load, @@ -219,6 +250,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..90, id: Name("z"), ctx: Load, @@ -234,12 +266,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..137, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 92..137, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("a"), ctx: Load, @@ -248,8 +283,10 @@ Module( generators: [ Comprehension { range: 95..116, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("b"), ctx: Store, @@ -257,6 +294,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..105, id: Name("c"), ctx: Load, @@ -265,11 +303,13 @@ Module( ifs: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 109..116, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 109..110, id: Name("d"), ctx: Load, @@ -277,6 +317,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 115..116, id: Name("e"), ctx: Load, @@ -290,8 +331,10 @@ Module( }, Comprehension { range: 117..136, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 121..122, id: Name("f"), ctx: Store, @@ -299,6 +342,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 126..127, id: Name("j"), ctx: Load, @@ -307,9 +351,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 131..136, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..132, id: Name("k"), ctx: Load, @@ -321,6 +367,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 135..136, id: Name("h"), ctx: Load, @@ -339,12 +386,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 138..189, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 138..189, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..140, id: Name("a"), ctx: Load, @@ -353,8 +403,10 @@ Module( generators: [ Comprehension { range: 141..162, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 145..146, id: Name("b"), ctx: Store, @@ -362,6 +414,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..151, id: Name("c"), ctx: Load, @@ -370,11 +423,13 @@ Module( ifs: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 155..162, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 155..156, id: Name("d"), ctx: Load, @@ -382,6 +437,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 161..162, id: Name("e"), ctx: Load, @@ -395,8 +451,10 @@ Module( }, Comprehension { range: 163..188, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 173..174, id: Name("f"), ctx: Store, @@ -404,6 +462,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 178..179, id: Name("j"), ctx: Load, @@ -412,9 +471,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 183..188, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 183..184, id: Name("k"), ctx: Load, @@ -426,6 +487,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 187..188, id: Name("h"), ctx: Load, @@ -444,12 +506,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 190..209, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 190..209, elt: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 191..192, value: Int( 1, @@ -459,8 +524,10 @@ Module( generators: [ Comprehension { range: 193..208, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 197..198, id: Name("i"), ctx: Store, @@ -468,9 +535,11 @@ Module( ), iter: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 202..208, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 202..203, id: Name("x"), ctx: Load, @@ -482,6 +551,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 207..208, id: Name("a"), ctx: Load, @@ -500,12 +570,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 210..227, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 210..227, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 211..212, id: Name("a"), ctx: Load, @@ -514,12 +587,15 @@ Module( generators: [ Comprehension { range: 213..226, + node_index: AtomicNodeIndex(..), target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 217..221, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 217..218, id: Name("a"), ctx: Store, @@ -527,6 +603,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 220..221, id: Name("b"), ctx: Store, @@ -539,6 +616,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 225..226, id: Name("G"), ctx: Load, @@ -554,15 +632,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 228..257, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 228..257, elt: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 234..241, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 240..241, id: Name("x"), ctx: Load, @@ -573,12 +655,15 @@ Module( generators: [ Comprehension { range: 242..255, + node_index: AtomicNodeIndex(..), target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 246..250, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 246..247, id: Name("a"), ctx: Store, @@ -586,6 +671,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 249..250, id: Name("b"), ctx: Store, @@ -598,6 +684,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 254..255, id: Name("C"), ctx: Load, @@ -613,12 +700,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 258..300, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 258..300, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 259..260, id: Name("i"), ctx: Load, @@ -627,8 +717,10 @@ Module( generators: [ Comprehension { range: 261..299, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 265..266, id: Name("i"), ctx: Store, @@ -636,9 +728,11 @@ Module( ), iter: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 270..277, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 276..277, id: Name("x"), ctx: Load, @@ -649,9 +743,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 281..299, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 281..287, id: Name("entity"), ctx: Load, @@ -663,6 +759,7 @@ Module( comparators: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 295..299, }, ), @@ -679,12 +776,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 301..337, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 301..337, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 302..303, id: Name("x"), ctx: Load, @@ -693,8 +793,10 @@ Module( generators: [ Comprehension { range: 304..336, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 308..309, id: Name("x"), ctx: Store, @@ -702,15 +804,18 @@ Module( ), iter: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 314..330, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 319..323, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 314..315, id: Name("l"), ctx: Load, @@ -718,6 +823,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 329..330, id: Name("L"), ctx: Load, @@ -728,6 +834,7 @@ Module( ifs: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 335..336, id: Name("T"), ctx: Load, @@ -743,12 +850,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 338..380, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 338..380, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 339..340, id: Name("i"), ctx: Load, @@ -757,8 +867,10 @@ Module( generators: [ Comprehension { range: 341..379, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 345..346, id: Name("i"), ctx: Store, @@ -766,18 +878,22 @@ Module( ), iter: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 351..373, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 362..366, value: true, }, ), body: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 351..358, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 357..358, id: Name("x"), ctx: Load, @@ -787,6 +903,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 372..373, id: Name("X"), ctx: Load, @@ -797,6 +914,7 @@ Module( ifs: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 378..379, id: Name("F"), ctx: Load, @@ -812,12 +930,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 381..423, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 381..423, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 382..383, id: Name("i"), ctx: Load, @@ -826,8 +947,10 @@ Module( generators: [ Comprehension { range: 384..422, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 388..389, id: Name("i"), ctx: Store, @@ -835,18 +958,22 @@ Module( ), iter: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 393..417, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 400..416, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 405..409, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 400..401, id: Name("x"), ctx: Load, @@ -854,6 +981,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 415..416, id: Name("X"), ctx: Load, @@ -866,6 +994,7 @@ Module( ifs: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 421..422, id: Name("F"), ctx: Load, @@ -881,12 +1010,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 424..457, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 424..457, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 425..426, id: Name("f"), ctx: Load, @@ -895,8 +1027,10 @@ Module( generators: [ Comprehension { range: 427..456, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 431..432, id: Name("f"), ctx: Store, @@ -904,9 +1038,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 436..456, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 436..437, id: Name("c"), ctx: Load, @@ -914,18 +1050,22 @@ Module( ), arguments: Arguments { range: 437..456, + node_index: AtomicNodeIndex(..), args: [ If( ExprIf { + node_index: AtomicNodeIndex(..), range: 438..455, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 443..447, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 438..439, id: Name("x"), ctx: Load, @@ -933,6 +1073,7 @@ Module( ), orelse: List( ExprList { + node_index: AtomicNodeIndex(..), range: 453..455, elts: [], ctx: Load, @@ -955,12 +1096,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 596..618, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 596..618, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 597..598, id: Name("x"), ctx: Load, @@ -969,8 +1113,10 @@ Module( generators: [ Comprehension { range: 599..617, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 603..604, id: Name("x"), ctx: Store, @@ -978,10 +1124,12 @@ Module( ), iter: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 609..616, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 615..616, id: Name("y"), ctx: Load, @@ -1000,12 +1148,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 619..646, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 619..646, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 620..621, id: Name("x"), ctx: Load, @@ -1014,8 +1165,10 @@ Module( generators: [ Comprehension { range: 622..645, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 626..627, id: Name("x"), ctx: Store, @@ -1023,9 +1176,11 @@ Module( ), iter: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 632..644, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 643..644, id: Name("y"), ctx: Load, @@ -1043,12 +1198,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 647..673, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 647..673, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 648..649, id: Name("x"), ctx: Load, @@ -1057,8 +1215,10 @@ Module( generators: [ Comprehension { range: 650..672, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 654..655, id: Name("x"), ctx: Store, @@ -1066,19 +1226,26 @@ Module( ), iter: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 660..671, parameters: Some( Parameters { range: 667..668, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 667..668, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 667..668, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 667..668, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1092,6 +1259,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 670..671, id: Name("y"), ctx: Load, @@ -1109,12 +1277,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 674..704, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 674..704, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 675..676, id: Name("x"), ctx: Load, @@ -1123,8 +1294,10 @@ Module( generators: [ Comprehension { range: 677..703, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 681..682, id: Name("x"), ctx: Store, @@ -1132,6 +1305,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 686..690, id: Name("data"), ctx: Load, @@ -1140,10 +1314,12 @@ Module( ifs: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 695..702, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 701..702, id: Name("y"), ctx: Load, @@ -1162,12 +1338,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 705..740, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 705..740, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 706..707, id: Name("x"), ctx: Load, @@ -1176,8 +1355,10 @@ Module( generators: [ Comprehension { range: 708..739, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 712..713, id: Name("x"), ctx: Store, @@ -1185,6 +1366,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 717..721, id: Name("data"), ctx: Load, @@ -1193,9 +1375,11 @@ Module( ifs: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 726..738, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 737..738, id: Name("y"), ctx: Load, @@ -1213,12 +1397,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 741..775, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 741..775, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 742..743, id: Name("x"), ctx: Load, @@ -1227,8 +1414,10 @@ Module( generators: [ Comprehension { range: 744..774, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 748..749, id: Name("x"), ctx: Store, @@ -1236,6 +1425,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 753..757, id: Name("data"), ctx: Load, @@ -1244,19 +1434,26 @@ Module( ifs: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 762..773, parameters: Some( Parameters { range: 769..770, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 769..770, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 769..770, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 769..770, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1270,6 +1467,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 772..773, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__name.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__name.py.snap index dd9d18e848..506ee52722 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__name.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__name.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/name.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..76, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..1, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("_"), ctx: Load, @@ -24,9 +26,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2..5, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..4, id: Name("_"), ctx: Load, @@ -36,9 +40,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 6..8, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..8, id: Name("__"), ctx: Load, @@ -48,9 +54,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..17, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..17, id: Name("__init__"), ctx: Load, @@ -60,9 +68,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..22, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..22, id: Name("name"), ctx: Load, @@ -72,9 +82,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..29, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..28, id: Name("name"), ctx: Load, @@ -84,9 +96,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 60..65, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..65, id: Name("match"), ctx: Load, @@ -96,9 +110,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 66..70, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..70, id: Name("case"), ctx: Load, @@ -108,9 +124,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 71..75, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..75, id: Name("type"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__named.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__named.py.snap index 098a337277..1ac703b53b 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__named.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__named.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/named.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..157, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1..10, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..5, id: Name("name"), ctx: Store, @@ -25,6 +28,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 0, @@ -37,12 +41,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..29, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 13..28, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..17, id: Name("name"), ctx: Store, @@ -50,9 +57,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 22..27, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -61,6 +70,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("y"), ctx: Load, @@ -74,12 +84,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..45, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 31..44, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 31..35, id: Name("name"), ctx: Store, @@ -87,9 +100,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 39..44, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 39..40, value: Int( 1, @@ -99,6 +114,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 43..44, value: Int( 1, @@ -113,12 +129,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 46..63, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 47..62, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..51, id: Name("name"), ctx: Store, @@ -126,13 +145,16 @@ Module( ), value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 55..62, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 56..58, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..58, id: Name("x"), ctx: Load, @@ -143,6 +165,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("y"), ctx: Load, @@ -159,12 +182,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 64..90, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 65..89, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..69, id: Name("name"), ctx: Store, @@ -172,15 +198,18 @@ Module( ), value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 73..89, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 78..82, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..74, id: Name("x"), ctx: Load, @@ -188,6 +217,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..89, id: Name("y"), ctx: Load, @@ -201,12 +231,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 91..112, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 92..111, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..96, id: Name("name"), ctx: Store, @@ -214,19 +247,26 @@ Module( ), value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 100..111, parameters: Some( Parameters { range: 107..108, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 107..108, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 107..108, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 107..108, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -240,6 +280,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 110..111, id: Name("x"), ctx: Load, @@ -253,12 +294,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 113..132, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 114..131, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..118, id: Name("name"), ctx: Store, @@ -266,10 +310,12 @@ Module( ), value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 123..130, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("x"), ctx: Load, @@ -284,12 +330,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..157, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 134..156, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 134..138, id: Name("name"), ctx: Store, @@ -297,9 +346,11 @@ Module( ), value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 143..155, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 154..155, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__number_literal.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__number_literal.py.snap index 64d1e63f40..46dac564f0 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__number_literal.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__number_literal.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/number_literal.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..700, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..13, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -24,6 +26,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4..13, value: Int( 123456789, @@ -34,10 +37,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 14..24, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("x"), ctx: Store, @@ -46,6 +51,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..24, value: Int( 123456, @@ -56,10 +62,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 25..31, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("x"), ctx: Store, @@ -68,6 +76,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 29..31, value: Float( 0.1, @@ -78,10 +87,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 32..38, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("x"), ctx: Store, @@ -90,6 +101,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 36..38, value: Float( 1.0, @@ -100,10 +112,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 39..47, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("x"), ctx: Store, @@ -112,6 +126,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 43..47, value: Float( 10.0, @@ -122,10 +137,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 48..56, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..49, id: Name("x"), ctx: Store, @@ -134,6 +151,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 52..56, value: Float( 0.1, @@ -144,10 +162,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 57..73, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..58, id: Name("x"), ctx: Store, @@ -156,6 +176,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 61..73, value: Float( 1.00000001, @@ -166,10 +187,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 74..97, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..75, id: Name("x"), ctx: Store, @@ -178,6 +201,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..97, value: Float( 123456789.12345679, @@ -188,10 +212,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 98..131, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("x"), ctx: Store, @@ -200,6 +226,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 102..131, value: Float( inf, @@ -210,10 +237,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 132..155, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..133, id: Name("x"), ctx: Store, @@ -222,6 +251,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 136..155, value: Float( inf, @@ -232,10 +262,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 156..170, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 156..157, id: Name("x"), ctx: Store, @@ -244,6 +276,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 160..170, value: Complex { real: 0.0, @@ -255,10 +288,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 171..195, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..172, id: Name("x"), ctx: Store, @@ -267,6 +302,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 175..195, value: Complex { real: 0.0, @@ -278,10 +314,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 196..207, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 196..197, id: Name("x"), ctx: Store, @@ -290,6 +328,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 200..207, value: Int( 727756, @@ -300,10 +339,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 208..218, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 208..209, id: Name("x"), ctx: Store, @@ -312,6 +353,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 212..218, value: Int( 11, @@ -322,10 +364,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 219..228, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 219..220, id: Name("x"), ctx: Store, @@ -334,6 +378,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 223..228, value: Int( 511, @@ -344,10 +389,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 229..244, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 229..230, id: Name("x"), ctx: Store, @@ -356,6 +403,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 233..244, value: Float( 6e-9, @@ -366,10 +414,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 245..254, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..246, id: Name("x"), ctx: Store, @@ -378,6 +428,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 249..254, value: Int( 10000, @@ -388,10 +439,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 255..265, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 255..256, id: Name("x"), ctx: Store, @@ -400,6 +453,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 259..265, value: Int( 133333, @@ -410,10 +464,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 286..298, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 286..287, id: Name("x"), ctx: Store, @@ -422,9 +478,11 @@ Module( ], value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 290..298, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 290..292, value: Float( 1.0, @@ -434,6 +492,7 @@ Module( attr: Identifier { id: Name("imag"), range: 294..298, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -442,10 +501,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 299..312, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 299..300, id: Name("x"), ctx: Store, @@ -454,9 +515,11 @@ Module( ], value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 303..312, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 303..307, value: Float( 10.0, @@ -466,6 +529,7 @@ Module( attr: Identifier { id: Name("imag"), range: 308..312, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -474,10 +538,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 313..326, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 313..314, id: Name("x"), ctx: Store, @@ -486,9 +552,11 @@ Module( ], value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 317..326, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 317..321, value: Float( 0.1, @@ -498,6 +566,7 @@ Module( attr: Identifier { id: Name("real"), range: 322..326, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -506,10 +575,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 327..356, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 327..328, id: Name("x"), ctx: Store, @@ -518,12 +589,15 @@ Module( ], value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 331..356, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 331..354, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 331..350, value: Float( 123456789.12345679, @@ -533,12 +607,14 @@ Module( attr: Identifier { id: Name("hex"), range: 351..354, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 354..356, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -548,10 +624,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 357..396, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 357..358, id: Name("x"), ctx: Store, @@ -560,9 +638,11 @@ Module( ], value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 361..396, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 361..390, value: Float( inf, @@ -572,6 +652,7 @@ Module( attr: Identifier { id: Name("real"), range: 392..396, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -580,10 +661,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 397..433, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 397..398, id: Name("x"), ctx: Store, @@ -592,12 +675,15 @@ Module( ], value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 401..433, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 401..431, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 401..420, value: Float( inf, @@ -607,12 +693,14 @@ Module( attr: Identifier { id: Name("conjugate"), range: 422..431, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 431..433, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -622,10 +710,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 434..453, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 434..435, id: Name("x"), ctx: Store, @@ -634,9 +724,11 @@ Module( ], value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 438..453, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 438..448, value: Complex { real: 0.0, @@ -647,6 +739,7 @@ Module( attr: Identifier { id: Name("real"), range: 449..453, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -655,10 +748,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 454..507, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 454..455, id: Name("x"), ctx: Store, @@ -667,12 +762,15 @@ Module( ], value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 458..507, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 458..486, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 458..478, value: Complex { real: 0.0, @@ -683,21 +781,26 @@ Module( attr: Identifier { id: Name("__add__"), range: 479..486, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 486..507, + node_index: AtomicNodeIndex(..), args: [ Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 487..506, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 487..504, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 487..493, value: Int( 11, @@ -707,12 +810,14 @@ Module( attr: Identifier { id: Name("bit_length"), range: 494..504, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 504..506, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -727,10 +832,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 508..531, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 508..509, id: Name("x"), ctx: Store, @@ -739,12 +846,15 @@ Module( ], value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 512..531, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 512..529, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 512..519, value: Int( 727756, @@ -754,12 +864,14 @@ Module( attr: Identifier { id: Name("conjugate"), range: 520..529, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 529..531, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -769,10 +881,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 532..555, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 532..533, id: Name("x"), ctx: Store, @@ -781,12 +895,15 @@ Module( ], value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 536..555, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 536..553, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 536..542, value: Int( 11, @@ -796,12 +913,14 @@ Module( attr: Identifier { id: Name("conjugate"), range: 544..553, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 553..555, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -811,10 +930,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 556..571, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 556..557, id: Name("x"), ctx: Store, @@ -823,9 +944,11 @@ Module( ], value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 560..571, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 560..565, value: Int( 511, @@ -835,6 +958,7 @@ Module( attr: Identifier { id: Name("real"), range: 567..571, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -843,10 +967,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 572..595, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 572..573, id: Name("x"), ctx: Store, @@ -855,12 +981,15 @@ Module( ], value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 576..595, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 576..593, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 576..587, value: Float( 6e-9, @@ -870,12 +999,14 @@ Module( attr: Identifier { id: Name("hex"), range: 590..593, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 593..595, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -885,10 +1016,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 596..610, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 596..597, id: Name("x"), ctx: Store, @@ -897,10 +1030,12 @@ Module( ], value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 600..610, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 601..610, value: Complex { real: 0.0, @@ -914,12 +1049,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 612..632, test: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 615..623, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 615..617, value: Int( 10, @@ -929,6 +1067,7 @@ Module( attr: Identifier { id: Name("real"), range: 619..623, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -936,9 +1075,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 629..632, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 629..632, }, ), @@ -950,10 +1091,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 677..688, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 677..678, id: Name("y"), ctx: Store, @@ -962,9 +1105,11 @@ Module( ], value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 681..688, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 681..684, value: Int( 100, @@ -973,6 +1118,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 685..687, id: Name("no"), ctx: Load, @@ -985,10 +1131,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 689..700, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 689..690, id: Name("y"), ctx: Store, @@ -997,9 +1145,11 @@ Module( ], value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 693..700, func: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 693..696, value: Int( 100, @@ -1008,9 +1158,11 @@ Module( ), arguments: Arguments { range: 696..700, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 697..699, id: Name("no"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__parenthesized.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__parenthesized.py.snap index f5a6858f1d..747ed8ee3d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__parenthesized.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__parenthesized.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/parenthesized.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..92, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..6, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..5, id: Name("expr"), ctx: Load, @@ -24,12 +26,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 7..15, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 7..15, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..12, id: Name("expr"), ctx: Load, @@ -37,6 +42,7 @@ Module( ), arguments: Arguments { range: 13..15, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -46,18 +52,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..28, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 16..28, func: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 16..26, func: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 16..24, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..21, id: Name("expr"), ctx: Load, @@ -65,6 +76,7 @@ Module( ), arguments: Arguments { range: 22..24, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -72,6 +84,7 @@ Module( ), arguments: Arguments { range: 24..26, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -79,6 +92,7 @@ Module( ), arguments: Arguments { range: 26..28, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -88,19 +102,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..44, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 31..43, op: Or, values: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 31..38, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 31..32, id: Name("a"), ctx: Load, @@ -108,6 +126,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..38, id: Name("b"), ctx: Load, @@ -118,6 +137,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 42..43, id: Name("c"), ctx: Load, @@ -130,22 +150,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 45..58, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 46..57, parameters: Some( Parameters { range: 53..54, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 53..54, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 53..54, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 53..54, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -159,6 +187,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Load, @@ -170,12 +199,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 59..67, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 60..66, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("x"), ctx: Store, @@ -183,6 +215,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 65..66, value: Int( 2, @@ -195,13 +228,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..77, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 69..76, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("x"), ctx: Load, @@ -214,12 +250,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 78..92, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 79..91, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__set.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__set.py.snap index f8ed36c227..eb99b5e4d0 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__set.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__set.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/set.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..313, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 14..16, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 14..16, items: [], }, @@ -23,13 +25,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..20, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 17..20, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 1, @@ -43,13 +48,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..25, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 21..25, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 22..23, value: Int( 1, @@ -63,13 +71,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..35, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 26..35, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 27..28, value: Int( 1, @@ -78,6 +89,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 30..31, value: Int( 2, @@ -86,6 +98,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 33..34, value: Int( 3, @@ -99,13 +112,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 36..46, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 36..46, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 37..38, value: Int( 1, @@ -114,6 +130,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 40..41, value: Int( 2, @@ -122,6 +139,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 43..44, value: Int( 3, @@ -135,9 +153,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 74..77, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 74..77, items: [], }, @@ -146,13 +166,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 78..91, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 78..91, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 88..89, value: Int( 1, @@ -166,13 +189,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..113, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 92..113, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 98..99, value: Int( 1, @@ -181,6 +207,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 109..110, value: Int( 2, @@ -194,17 +221,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 124..129, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 124..129, elts: [ Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 125..128, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 126..127, value: Int( 1, @@ -221,17 +252,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 130..146, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 130..146, elts: [ Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 131..137, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 132..133, value: Int( 1, @@ -240,6 +275,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 135..136, value: Int( 2, @@ -251,10 +287,12 @@ Module( ), Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 139..145, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 140..141, value: Int( 3, @@ -263,6 +301,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 143..144, value: Int( 4, @@ -279,16 +318,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 167..175, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 167..175, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 168..174, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 168..169, id: Name("x"), ctx: Store, @@ -296,6 +339,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 173..174, value: Int( 2, @@ -311,13 +355,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 176..190, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 176..190, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 177..178, value: Int( 1, @@ -326,9 +373,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 180..186, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 180..181, id: Name("x"), ctx: Store, @@ -336,6 +385,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 185..186, value: Int( 2, @@ -346,6 +396,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 188..189, value: Int( 3, @@ -359,13 +410,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 191..205, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 191..205, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 192..193, value: Int( 1, @@ -374,9 +428,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 196..202, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 196..197, id: Name("x"), ctx: Store, @@ -384,6 +440,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 201..202, value: Int( 2, @@ -399,13 +456,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 225..235, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 225..235, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 226..227, value: Int( 1, @@ -414,9 +474,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 229..231, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 230..231, id: Name("x"), ctx: Load, @@ -427,6 +489,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 233..234, value: Int( 3, @@ -440,13 +503,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 236..250, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 236..250, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 237..238, value: Int( 1, @@ -455,12 +521,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 240..246, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 241..246, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 241..242, id: Name("x"), ctx: Load, @@ -469,6 +538,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..246, id: Name("y"), ctx: Load, @@ -481,6 +551,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 248..249, value: Int( 3, @@ -494,16 +565,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 273..312, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 273..312, elts: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 274..279, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 274..275, value: Int( 1, @@ -513,6 +588,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 278..279, value: Int( 2, @@ -523,10 +599,12 @@ Module( ), Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 281..287, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 282..283, id: Name("a"), ctx: Load, @@ -534,6 +612,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 285..286, id: Name("b"), ctx: Load, @@ -546,10 +625,12 @@ Module( ), Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 289..298, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 290..291, value: Int( 1, @@ -558,6 +639,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 293..294, value: Int( 2, @@ -566,6 +648,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 296..297, value: Int( 3, @@ -577,12 +660,14 @@ Module( ), Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 300..311, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 301..302, id: Name("a"), ctx: Load, @@ -591,6 +676,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 304..305, id: Name("b"), ctx: Load, @@ -601,6 +687,7 @@ Module( key: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 309..310, id: Name("d"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__set_comprehension.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__set_comprehension.py.snap index 5365de4ac2..8ead74d20d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__set_comprehension.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__set_comprehension.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/set_comprehension.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..492, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..15, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 0..15, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("x"), ctx: Load, @@ -26,8 +29,10 @@ Module( generators: [ Comprehension { range: 3..14, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("i"), ctx: Store, @@ -35,6 +40,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..14, id: Name("ll"), ctx: Load, @@ -50,12 +56,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..57, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 16..57, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("b"), ctx: Load, @@ -64,8 +73,10 @@ Module( generators: [ Comprehension { range: 19..56, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("c"), ctx: Store, @@ -73,6 +84,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("d"), ctx: Load, @@ -81,9 +93,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 33..39, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..34, id: Name("x"), ctx: Load, @@ -95,6 +109,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("w"), ctx: Load, @@ -105,11 +120,13 @@ Module( ), BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 43..51, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("y"), ctx: Load, @@ -117,6 +134,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..51, id: Name("yy"), ctx: Load, @@ -127,6 +145,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..56, id: Name("z"), ctx: Load, @@ -142,12 +161,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..103, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 58..103, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("a"), ctx: Load, @@ -156,8 +178,10 @@ Module( generators: [ Comprehension { range: 61..82, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("b"), ctx: Store, @@ -165,6 +189,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("c"), ctx: Load, @@ -173,11 +198,13 @@ Module( ifs: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 75..82, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("d"), ctx: Load, @@ -185,6 +212,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..82, id: Name("e"), ctx: Load, @@ -198,8 +226,10 @@ Module( }, Comprehension { range: 83..102, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..88, id: Name("f"), ctx: Store, @@ -207,6 +237,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..93, id: Name("j"), ctx: Load, @@ -215,9 +246,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 97..102, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 97..98, id: Name("k"), ctx: Load, @@ -229,6 +262,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 101..102, id: Name("h"), ctx: Load, @@ -247,12 +281,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 104..155, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 104..155, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..106, id: Name("a"), ctx: Load, @@ -261,8 +298,10 @@ Module( generators: [ Comprehension { range: 107..128, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 111..112, id: Name("b"), ctx: Store, @@ -270,6 +309,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..117, id: Name("c"), ctx: Load, @@ -278,11 +318,13 @@ Module( ifs: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 121..128, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 121..122, id: Name("d"), ctx: Load, @@ -290,6 +332,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("e"), ctx: Load, @@ -303,8 +346,10 @@ Module( }, Comprehension { range: 129..154, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..140, id: Name("f"), ctx: Store, @@ -312,6 +357,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 144..145, id: Name("j"), ctx: Load, @@ -320,9 +366,11 @@ Module( ifs: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 149..154, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 149..150, id: Name("k"), ctx: Load, @@ -334,6 +382,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 153..154, id: Name("h"), ctx: Load, @@ -352,12 +401,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 156..173, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 156..173, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 157..158, id: Name("a"), ctx: Load, @@ -366,12 +418,15 @@ Module( generators: [ Comprehension { range: 159..172, + node_index: AtomicNodeIndex(..), target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 163..167, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 163..164, id: Name("a"), ctx: Store, @@ -379,6 +434,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..167, id: Name("b"), ctx: Store, @@ -391,6 +447,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..172, id: Name("G"), ctx: Load, @@ -406,12 +463,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 312..334, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 312..334, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 313..314, id: Name("x"), ctx: Load, @@ -420,8 +480,10 @@ Module( generators: [ Comprehension { range: 315..333, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 319..320, id: Name("x"), ctx: Store, @@ -429,10 +491,12 @@ Module( ), iter: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 325..332, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 331..332, id: Name("y"), ctx: Load, @@ -451,12 +515,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 335..362, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 335..362, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 336..337, id: Name("x"), ctx: Load, @@ -465,8 +532,10 @@ Module( generators: [ Comprehension { range: 338..361, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 342..343, id: Name("x"), ctx: Store, @@ -474,9 +543,11 @@ Module( ), iter: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 348..360, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 359..360, id: Name("y"), ctx: Load, @@ -494,12 +565,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 363..389, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 363..389, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 364..365, id: Name("x"), ctx: Load, @@ -508,8 +582,10 @@ Module( generators: [ Comprehension { range: 366..388, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 370..371, id: Name("x"), ctx: Store, @@ -517,19 +593,26 @@ Module( ), iter: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 376..387, parameters: Some( Parameters { range: 383..384, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 383..384, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 383..384, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 383..384, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -543,6 +626,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 386..387, id: Name("y"), ctx: Load, @@ -560,12 +644,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 390..420, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 390..420, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 391..392, id: Name("x"), ctx: Load, @@ -574,8 +661,10 @@ Module( generators: [ Comprehension { range: 393..419, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 397..398, id: Name("x"), ctx: Store, @@ -583,6 +672,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 402..406, id: Name("data"), ctx: Load, @@ -591,10 +681,12 @@ Module( ifs: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 411..418, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 417..418, id: Name("y"), ctx: Load, @@ -613,12 +705,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 421..456, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 421..456, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 422..423, id: Name("x"), ctx: Load, @@ -627,8 +722,10 @@ Module( generators: [ Comprehension { range: 424..455, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 428..429, id: Name("x"), ctx: Store, @@ -636,6 +733,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 433..437, id: Name("data"), ctx: Load, @@ -644,9 +742,11 @@ Module( ifs: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 442..454, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 453..454, id: Name("y"), ctx: Load, @@ -664,12 +764,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 457..491, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 457..491, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 458..459, id: Name("x"), ctx: Load, @@ -678,8 +781,10 @@ Module( generators: [ Comprehension { range: 460..490, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 464..465, id: Name("x"), ctx: Store, @@ -687,6 +792,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 469..473, id: Name("data"), ctx: Load, @@ -695,19 +801,26 @@ Module( ifs: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 478..489, parameters: Some( Parameters { range: 485..486, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 485..486, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 485..486, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 485..486, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -721,6 +834,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 488..489, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__slice.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__slice.py.snap index 2f33310702..c04177fae7 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__slice.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__slice.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/slice.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..211, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..27, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 23..27, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("x"), ctx: Load, @@ -25,6 +28,7 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 25..26, lower: None, upper: None, @@ -38,12 +42,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..33, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 28..33, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("x"), ctx: Load, @@ -51,10 +58,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 30..32, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 30..31, value: Int( 1, @@ -73,12 +82,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 34..39, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 34..39, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("x"), ctx: Load, @@ -86,11 +98,13 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 36..38, lower: None, upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 37..38, value: Int( 2, @@ -108,12 +122,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 40..46, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 40..46, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("x"), ctx: Load, @@ -121,10 +138,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 42..45, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 42..43, value: Int( 1, @@ -135,6 +154,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 44..45, value: Int( 2, @@ -152,12 +172,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 47..52, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 47..52, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Load, @@ -165,6 +188,7 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 49..51, lower: None, upper: None, @@ -178,12 +202,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..59, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 53..59, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("x"), ctx: Load, @@ -191,10 +218,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 55..58, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 55..56, value: Int( 1, @@ -213,12 +242,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 60..66, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 60..66, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("x"), ctx: Load, @@ -226,11 +258,13 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 62..65, lower: None, upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 63..64, value: Int( 2, @@ -248,12 +282,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 67..74, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 67..74, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..68, id: Name("x"), ctx: Load, @@ -261,10 +298,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 69..73, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 69..70, value: Int( 1, @@ -275,6 +314,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 71..72, value: Int( 2, @@ -292,12 +332,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 75..81, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 75..81, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("x"), ctx: Load, @@ -305,12 +348,14 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 77..80, lower: None, upper: None, step: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 3, @@ -327,12 +372,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 82..89, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 82..89, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("x"), ctx: Load, @@ -340,10 +388,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 84..88, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 84..85, value: Int( 1, @@ -355,6 +405,7 @@ Module( step: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 87..88, value: Int( 3, @@ -371,12 +422,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 90..97, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 90..97, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("x"), ctx: Load, @@ -384,11 +438,13 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 92..96, lower: None, upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 93..94, value: Int( 2, @@ -399,6 +455,7 @@ Module( step: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 95..96, value: Int( 3, @@ -415,12 +472,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 98..106, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 98..106, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("x"), ctx: Load, @@ -428,10 +488,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 100..105, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 100..101, value: Int( 1, @@ -442,6 +504,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 102..103, value: Int( 2, @@ -452,6 +515,7 @@ Module( step: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 104..105, value: Int( 3, @@ -468,12 +532,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 127..136, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 127..136, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("x"), ctx: Load, @@ -481,9 +548,11 @@ Module( ), slice: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 129..135, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("y"), ctx: Store, @@ -491,6 +560,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 134..135, value: Int( 2, @@ -506,12 +576,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 137..149, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 137..149, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 137..138, id: Name("x"), ctx: Load, @@ -519,13 +592,16 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 139..148, lower: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 140..146, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 140..141, id: Name("y"), ctx: Store, @@ -533,6 +609,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 145..146, value: Int( 2, @@ -553,12 +630,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 150..160, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 150..160, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..151, id: Name("x"), ctx: Load, @@ -566,13 +646,16 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 152..159, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 152..158, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 152..153, id: Name("y"), ctx: Store, @@ -580,6 +663,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 157..158, value: Int( 2, @@ -600,12 +684,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 202..210, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 202..210, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 202..203, id: Name("x"), ctx: Load, @@ -613,10 +700,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 204..209, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 204..205, value: Int( 1, @@ -625,11 +714,13 @@ Module( ), Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 206..208, lower: None, upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 207..208, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__starred.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__starred.py.snap index 3d1f786a8c..a4fe4f78b4 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__starred.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__starred.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/starred.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..172, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..2, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 0..2, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("a"), ctx: Load, @@ -30,15 +33,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3..11, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 3..11, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5..10, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("a"), ctx: Load, @@ -47,6 +54,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 1, @@ -62,15 +70,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..19, value: Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 12..19, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 13..19, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..14, id: Name("x"), ctx: Load, @@ -79,6 +91,7 @@ Module( attr: Identifier { id: Name("attr"), range: 15..19, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -90,10 +103,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 21..57, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..32, id: Name("array_slice"), ctx: Store, @@ -102,9 +117,11 @@ Module( ], value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 35..57, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..40, id: Name("array"), ctx: Load, @@ -112,10 +129,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 41..56, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 41..42, value: Int( 0, @@ -124,9 +143,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 44..52, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..52, id: Name("indexes"), ctx: Load, @@ -137,10 +158,12 @@ Module( ), UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 54..56, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 55..56, value: Int( 1, @@ -161,13 +184,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 58..94, targets: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 58..80, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..63, id: Name("array"), ctx: Load, @@ -175,10 +201,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 64..79, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 64..65, value: Int( 0, @@ -187,9 +215,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 67..75, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..75, id: Name("indexes"), ctx: Load, @@ -200,10 +230,12 @@ Module( ), UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 77..79, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..79, value: Int( 1, @@ -223,6 +255,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..94, id: Name("array_slice"), ctx: Load, @@ -232,12 +265,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 95..140, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 95..140, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..100, id: Name("array"), ctx: Load, @@ -245,13 +281,16 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 101..139, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 101..119, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..119, id: Name("indexes_to_select"), ctx: Load, @@ -262,9 +301,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 121..139, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 122..139, id: Name("indexes_to_select"), ctx: Load, @@ -285,12 +326,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 141..171, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 141..171, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 141..146, id: Name("array"), ctx: Load, @@ -298,14 +342,17 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 147..170, elts: [ Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 147..150, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 147..148, value: Int( 3, @@ -316,6 +363,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 149..150, value: Int( 5, @@ -328,9 +376,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 152..170, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 153..170, id: Name("indexes_to_select"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__string.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__string.py.snap index 6cddb01399..f9480bed42 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__string.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__string.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/string.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..163, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..13, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 0..13, value: StringLiteralValue { inner: Single( StringLiteral { range: 0..13, + node_index: AtomicNodeIndex(..), value: "Hello World", flags: StringLiteralFlags { quote_style: Single, @@ -35,14 +38,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 14..20, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 14..20, value: StringLiteralValue { inner: Single( StringLiteral { range: 14..20, + node_index: AtomicNodeIndex(..), value: "😎", flags: StringLiteralFlags { quote_style: Double, @@ -58,9 +64,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..32, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 21..32, value: StringLiteralValue { inner: Concatenated( @@ -68,6 +76,7 @@ Module( strings: [ StringLiteral { range: 21..26, + node_index: AtomicNodeIndex(..), value: "Foo", flags: StringLiteralFlags { quote_style: Single, @@ -77,6 +86,7 @@ Module( }, StringLiteral { range: 27..32, + node_index: AtomicNodeIndex(..), value: "Bar", flags: StringLiteralFlags { quote_style: Single, @@ -95,9 +105,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 33..60, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 39..58, value: StringLiteralValue { inner: Concatenated( @@ -105,6 +117,7 @@ Module( strings: [ StringLiteral { range: 39..42, + node_index: AtomicNodeIndex(..), value: "A", flags: StringLiteralFlags { quote_style: Single, @@ -114,6 +127,7 @@ Module( }, StringLiteral { range: 47..50, + node_index: AtomicNodeIndex(..), value: "B", flags: StringLiteralFlags { quote_style: Single, @@ -123,6 +137,7 @@ Module( }, StringLiteral { range: 55..58, + node_index: AtomicNodeIndex(..), value: "C", flags: StringLiteralFlags { quote_style: Single, @@ -141,14 +156,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 61..79, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 61..79, value: StringLiteralValue { inner: Single( StringLiteral { range: 61..79, + node_index: AtomicNodeIndex(..), value: "Olá, Mundo!", flags: StringLiteralFlags { quote_style: Single, @@ -164,14 +182,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 80..91, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 80..91, value: StringLiteralValue { inner: Single( StringLiteral { range: 80..91, + node_index: AtomicNodeIndex(..), value: "ABCDE", flags: StringLiteralFlags { quote_style: Double, @@ -187,9 +208,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..121, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 98..119, value: StringLiteralValue { inner: Concatenated( @@ -197,6 +220,7 @@ Module( strings: [ StringLiteral { range: 98..106, + node_index: AtomicNodeIndex(..), value: "aB", flags: StringLiteralFlags { quote_style: Single, @@ -206,6 +230,7 @@ Module( }, StringLiteral { range: 111..119, + node_index: AtomicNodeIndex(..), value: "cD", flags: StringLiteralFlags { quote_style: Single, @@ -224,14 +249,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 122..136, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 122..136, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 122..136, + node_index: AtomicNodeIndex(..), value: [ 104, 101, @@ -259,15 +287,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 137..161, value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 137..161, value: BytesLiteralValue { inner: Concatenated( [ BytesLiteral { range: 137..145, + node_index: AtomicNodeIndex(..), value: [ 98, 121, @@ -283,6 +314,7 @@ Module( }, BytesLiteral { range: 146..161, + node_index: AtomicNodeIndex(..), value: [ 99, 111, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__subscript.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__subscript.py.snap index 23d49419b2..f90b4a3033 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__subscript.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__subscript.py.snap @@ -1,26 +1,30 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/subscript.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..266, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..10, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 0..10, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 0..7, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..4, id: Name("data"), ctx: Load, @@ -28,6 +32,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 0, @@ -39,6 +44,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 0, @@ -52,12 +58,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 11..21, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 11..21, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..15, id: Name("data"), ctx: Load, @@ -65,10 +74,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 16..20, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 16..17, value: Int( 0, @@ -77,6 +88,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 19..20, value: Int( 1, @@ -95,12 +107,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..31, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 22..31, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..26, id: Name("data"), ctx: Load, @@ -108,14 +123,17 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 27..30, elts: [ Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 27..29, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 27..28, value: Int( 0, @@ -139,12 +157,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 32..43, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 32..43, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..36, id: Name("data"), ctx: Load, @@ -152,14 +173,17 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 37..42, elts: [ Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 37..39, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 37..38, value: Int( 0, @@ -173,6 +197,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 41..42, value: Int( 1, @@ -191,12 +216,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..56, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 44..56, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..48, id: Name("data"), ctx: Load, @@ -204,14 +232,17 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 49..55, elts: [ Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 49..52, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 49..50, value: Int( 0, @@ -222,6 +253,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 1, @@ -234,6 +266,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 2, @@ -252,12 +285,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..80, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 57..80, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..61, id: Name("data"), ctx: Load, @@ -265,14 +301,17 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 62..79, elts: [ Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 62..67, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 62..63, value: Int( 0, @@ -283,6 +322,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 64..65, value: Int( 1, @@ -293,6 +333,7 @@ Module( step: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 66..67, value: Int( 2, @@ -304,6 +345,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 69..70, value: Int( 3, @@ -312,10 +354,12 @@ Module( ), Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 72..79, lower: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("a"), ctx: Load, @@ -325,9 +369,11 @@ Module( upper: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 74..79, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..75, id: Name("b"), ctx: Load, @@ -336,6 +382,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..79, value: Int( 1, @@ -360,12 +407,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..93, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 81..93, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..85, id: Name("data"), ctx: Load, @@ -373,9 +423,11 @@ Module( ), slice: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 86..92, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..87, id: Name("a"), ctx: Store, @@ -383,6 +435,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..92, id: Name("b"), ctx: Load, @@ -397,12 +450,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 94..106, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 94..106, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 94..98, id: Name("data"), ctx: Load, @@ -410,10 +466,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 99..105, elts: [ Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 99..100, lower: None, upper: None, @@ -422,11 +480,13 @@ Module( ), Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 102..105, lower: None, upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 103..105, value: Int( 11, @@ -449,12 +509,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 107..120, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 107..120, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 107..111, id: Name("data"), ctx: Load, @@ -462,10 +525,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 112..119, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 112..113, value: Int( 1, @@ -474,6 +539,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 115..116, value: Int( 2, @@ -482,6 +548,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 118..119, value: Int( 3, @@ -500,12 +567,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 121..132, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 121..132, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 121..125, id: Name("data"), ctx: Load, @@ -513,10 +583,12 @@ Module( ), slice: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 126..131, op: Invert, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..131, id: Name("flag"), ctx: Load, @@ -531,12 +603,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..148, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 133..148, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 133..137, id: Name("data"), ctx: Load, @@ -544,13 +619,16 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 138..147, lower: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 139..145, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..140, id: Name("a"), ctx: Store, @@ -558,6 +636,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 144..145, value: Int( 0, @@ -578,12 +657,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 149..165, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 149..165, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 149..153, id: Name("data"), ctx: Load, @@ -591,13 +673,16 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 154..164, lower: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 155..161, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 155..156, id: Name("a"), ctx: Store, @@ -605,6 +690,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 160..161, value: Int( 0, @@ -617,6 +703,7 @@ Module( upper: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 163..164, id: Name("y"), ctx: Load, @@ -633,12 +720,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 226..234, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 226..234, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 226..230, id: Name("data"), ctx: Load, @@ -646,13 +736,16 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 231..233, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 231..233, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 232..233, id: Name("x"), ctx: Load, @@ -673,12 +766,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 235..249, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 235..249, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 235..239, id: Name("data"), ctx: Load, @@ -686,18 +782,22 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 240..248, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 240..248, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 241..248, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 241..242, id: Name("x"), ctx: Load, @@ -705,6 +805,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 247..248, id: Name("y"), ctx: Load, @@ -728,12 +829,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 250..265, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 250..265, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 250..254, id: Name("data"), ctx: Load, @@ -741,16 +845,20 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 255..264, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 255..264, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 257..263, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 257..258, id: Name("x"), ctx: Store, @@ -758,6 +866,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 262..263, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__t_string.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__t_string.py.snap index 99a7bcd3b9..b9d44898d1 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__t_string.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__t_string.py.snap @@ -7,19 +7,23 @@ input_file: crates/ruff_python_parser/resources/valid/expressions/t_string.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..1143, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..21, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 18..21, value: TStringValue { inner: Single( TString( TString { range: 18..21, + node_index: AtomicNodeIndex(..), elements: [], flags: TStringFlags { quote_style: Double, @@ -36,15 +40,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..25, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 22..25, value: TStringValue { inner: Single( TString( TString { range: 22..25, + node_index: AtomicNodeIndex(..), elements: [], flags: TStringFlags { quote_style: Double, @@ -61,15 +68,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..29, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 26..29, value: TStringValue { inner: Single( TString( TString { range: 26..29, + node_index: AtomicNodeIndex(..), elements: [], flags: TStringFlags { quote_style: Single, @@ -86,15 +96,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..37, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 30..37, value: TStringValue { inner: Single( TString( TString { range: 30..37, + node_index: AtomicNodeIndex(..), elements: [], flags: TStringFlags { quote_style: Double, @@ -111,15 +124,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 38..45, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 38..45, value: TStringValue { inner: Single( TString( TString { range: 38..45, + node_index: AtomicNodeIndex(..), elements: [], flags: TStringFlags { quote_style: Single, @@ -136,26 +152,32 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 47..56, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 47..56, value: TStringValue { inner: Single( TString( TString { range: 47..56, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 49..55, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 50..54, value: StringLiteralValue { inner: Single( StringLiteral { range: 50..54, + node_index: AtomicNodeIndex(..), value: " t", flags: StringLiteralFlags { quote_style: Double, @@ -188,21 +210,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..67, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 57..67, value: TStringValue { inner: Single( TString( TString { range: 57..67, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 59..66, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..63, id: Name("foo"), ctx: Load, @@ -229,25 +256,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..75, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 68..75, value: TStringValue { inner: Single( TString( TString { range: 68..75, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 70..74, + node_index: AtomicNodeIndex(..), expression: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 71..73, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 71..72, value: Int( 3, @@ -280,24 +313,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 76..86, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 76..86, value: TStringValue { inner: Single( TString( TString { range: 76..86, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 78..85, + node_index: AtomicNodeIndex(..), expression: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 79..83, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 3, @@ -310,6 +349,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 4, @@ -324,6 +364,7 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 84..84, + node_index: AtomicNodeIndex(..), elements: [], }, ), @@ -345,21 +386,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 87..102, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 87..102, value: TStringValue { inner: Single( TString( TString { range: 87..102, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 89..101, + node_index: AtomicNodeIndex(..), expression: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 90..91, value: Int( 3, @@ -371,17 +417,21 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 92..100, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 92..97, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 93..96, value: StringLiteralValue { inner: Single( StringLiteral { range: 93..96, + node_index: AtomicNodeIndex(..), value: "}", flags: StringLiteralFlags { quote_style: Double, @@ -401,6 +451,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 97..100, + node_index: AtomicNodeIndex(..), value: ">10", }, ), @@ -425,21 +476,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 103..118, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 103..118, value: TStringValue { inner: Single( TString( TString { range: 103..118, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 105..117, + node_index: AtomicNodeIndex(..), expression: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 106..107, value: Int( 3, @@ -451,17 +507,21 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 108..116, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 108..113, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 109..112, value: StringLiteralValue { inner: Single( StringLiteral { range: 109..112, + node_index: AtomicNodeIndex(..), value: "{", flags: StringLiteralFlags { quote_style: Double, @@ -481,6 +541,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 113..116, + node_index: AtomicNodeIndex(..), value: ">10", }, ), @@ -505,21 +566,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 119..133, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 119..133, value: TStringValue { inner: Single( TString( TString { range: 119..133, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 121..132, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 124..127, id: Name("foo"), ctx: Load, @@ -551,21 +617,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 134..154, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 134..154, value: TStringValue { inner: Single( TString( TString { range: 134..154, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 136..153, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..142, id: Name("foo"), ctx: Load, @@ -581,10 +652,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 147..152, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 147..152, + node_index: AtomicNodeIndex(..), value: ".3f ", }, ), @@ -609,21 +682,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 155..173, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 155..173, value: TStringValue { inner: Single( TString( TString { range: 155..173, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 157..172, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..163, id: Name("foo"), ctx: Load, @@ -655,25 +733,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 174..190, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 174..190, value: TStringValue { inner: Single( TString( TString { range: 174..190, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 176..189, + node_index: AtomicNodeIndex(..), expression: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 179..183, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 179..180, value: Int( 1, @@ -682,6 +766,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 182..183, value: Int( 2, @@ -719,33 +804,41 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 191..217, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 191..217, value: TStringValue { inner: Single( TString( TString { range: 191..217, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 193..216, + node_index: AtomicNodeIndex(..), expression: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 194..210, value: TStringValue { inner: Single( TString( TString { range: 194..210, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 196..209, + node_index: AtomicNodeIndex(..), expression: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 197..203, value: Float( 3.1415, @@ -762,10 +855,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 205..208, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 205..208, + node_index: AtomicNodeIndex(..), value: ".1f", }, ), @@ -791,10 +886,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 211..215, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 211..215, + node_index: AtomicNodeIndex(..), value: "*^20", }, ), @@ -819,15 +916,18 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 219..253, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 219..253, items: [ DictItem { key: Some( TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 220..248, value: TStringValue { inner: Concatenated( @@ -835,6 +935,7 @@ Module( Literal( StringLiteral { range: 220..226, + node_index: AtomicNodeIndex(..), value: "foo ", flags: StringLiteralFlags { quote_style: Double, @@ -846,21 +947,26 @@ Module( TString( TString { range: 227..242, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 229..233, + node_index: AtomicNodeIndex(..), value: "bar ", }, ), Interpolation( InterpolatedElement { range: 233..240, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 234..239, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 234..235, id: Name("x"), ctx: Load, @@ -869,6 +975,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 238..239, id: Name("y"), ctx: Load, @@ -884,6 +991,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 240..241, + node_index: AtomicNodeIndex(..), value: " ", }, ), @@ -898,6 +1006,7 @@ Module( Literal( StringLiteral { range: 243..248, + node_index: AtomicNodeIndex(..), value: "baz", flags: StringLiteralFlags { quote_style: Double, @@ -914,6 +1023,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 250..252, value: Int( 10, @@ -928,9 +1038,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 254..345, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 260..263, id: Name("foo"), ctx: Load, @@ -939,16 +1051,20 @@ Module( cases: [ MatchCase { range: 269..293, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 274..279, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 274..279, value: StringLiteralValue { inner: Single( StringLiteral { range: 274..279, + node_index: AtomicNodeIndex(..), value: "one", flags: StringLiteralFlags { quote_style: Double, @@ -966,6 +1082,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 289..293, }, ), @@ -973,11 +1090,14 @@ Module( }, MatchCase { range: 298..345, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 303..331, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 303..331, value: StringLiteralValue { inner: Concatenated( @@ -985,6 +1105,7 @@ Module( strings: [ StringLiteral { range: 303..316, + node_index: AtomicNodeIndex(..), value: "implicitly ", flags: StringLiteralFlags { quote_style: Double, @@ -994,6 +1115,7 @@ Module( }, StringLiteral { range: 317..331, + node_index: AtomicNodeIndex(..), value: "concatenated", flags: StringLiteralFlags { quote_style: Double, @@ -1014,6 +1136,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 341..345, }, ), @@ -1024,27 +1147,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 347..364, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 347..364, value: TStringValue { inner: Single( TString( TString { range: 347..364, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 349..350, + node_index: AtomicNodeIndex(..), value: "\\", }, ), Interpolation( InterpolatedElement { range: 350..355, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 351..354, id: Name("foo"), ctx: Load, @@ -1058,14 +1187,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 355..356, + node_index: AtomicNodeIndex(..), value: "\\", }, ), Interpolation( InterpolatedElement { range: 356..363, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 357..360, id: Name("bar"), ctx: Load, @@ -1076,10 +1208,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 361..362, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 361..362, + node_index: AtomicNodeIndex(..), value: "\\", }, ), @@ -1104,19 +1238,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 365..379, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 365..379, value: TStringValue { inner: Single( TString( TString { range: 365..379, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 367..378, + node_index: AtomicNodeIndex(..), value: "\\{foo\\}", }, ), @@ -1136,21 +1274,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 380..420, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 380..420, value: TStringValue { inner: Single( TString( TString { range: 380..420, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 384..417, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 390..393, id: Name("foo"), ctx: Load, @@ -1161,10 +1304,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 394..416, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 394..416, + node_index: AtomicNodeIndex(..), value: "x\n y\n z\n", }, ), @@ -1189,21 +1334,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 421..439, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 421..439, value: TStringValue { inner: Single( TString( TString { range: 421..439, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 423..438, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 428..431, id: Name("foo"), ctx: Load, @@ -1235,27 +1385,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 441..486, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 441..486, value: TStringValue { inner: Single( TString( TString { range: 441..486, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 443..450, + node_index: AtomicNodeIndex(..), value: "normal ", }, ), Interpolation( InterpolatedElement { range: 450..455, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 451..454, id: Name("foo"), ctx: Load, @@ -1269,14 +1425,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 455..468, + node_index: AtomicNodeIndex(..), value: " {another} ", }, ), Interpolation( InterpolatedElement { range: 468..473, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 469..472, id: Name("bar"), ctx: Load, @@ -1290,14 +1449,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 473..476, + node_index: AtomicNodeIndex(..), value: " {", }, ), Interpolation( InterpolatedElement { range: 476..483, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 477..482, id: Name("three"), ctx: Load, @@ -1311,6 +1473,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 483..485, + node_index: AtomicNodeIndex(..), value: "}", }, ), @@ -1330,27 +1493,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 487..529, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 487..529, value: TStringValue { inner: Single( TString( TString { range: 487..529, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 489..496, + node_index: AtomicNodeIndex(..), value: "normal ", }, ), Interpolation( InterpolatedElement { range: 496..503, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 497..500, id: Name("foo"), ctx: Load, @@ -1364,14 +1533,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 503..504, + node_index: AtomicNodeIndex(..), value: " ", }, ), Interpolation( InterpolatedElement { range: 504..511, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 505..508, id: Name("bar"), ctx: Load, @@ -1385,14 +1557,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 511..512, + node_index: AtomicNodeIndex(..), value: " ", }, ), Interpolation( InterpolatedElement { range: 512..519, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 513..516, id: Name("baz"), ctx: Load, @@ -1406,14 +1581,17 @@ Module( Literal( InterpolatedStringLiteralElement { range: 519..520, + node_index: AtomicNodeIndex(..), value: " ", }, ), Interpolation( InterpolatedElement { range: 520..528, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 521..527, id: Name("foobar"), ctx: Load, @@ -1440,27 +1618,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 530..549, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 530..549, value: TStringValue { inner: Single( TString( TString { range: 530..549, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 532..539, + node_index: AtomicNodeIndex(..), value: "normal ", }, ), Interpolation( InterpolatedElement { range: 539..548, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 540..541, id: Name("x"), ctx: Load, @@ -1471,10 +1655,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 542..547, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 542..547, + node_index: AtomicNodeIndex(..), value: "y + 2", }, ), @@ -1499,21 +1685,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 550..568, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 550..568, value: TStringValue { inner: Single( TString( TString { range: 550..568, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 552..567, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 553..554, id: Name("x"), ctx: Load, @@ -1524,22 +1715,28 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 555..566, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 555..566, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 556..565, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 556..563, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 556..559, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 557..558, value: Int( 1, @@ -1552,12 +1749,14 @@ Module( attr: Identifier { id: Name("pop"), range: 560..563, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 563..565, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1589,34 +1788,45 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 569..588, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 569..588, value: TStringValue { inner: Single( TString( TString { range: 569..588, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 571..587, + node_index: AtomicNodeIndex(..), expression: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 573..585, parameters: Some( Parameters { range: 580..581, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 580..581, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 580..581, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 580..581, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1630,10 +1840,12 @@ Module( ), body: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 582..585, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 583..584, id: Name("x"), ctx: Load, @@ -1665,21 +1877,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 589..597, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 589..597, value: TStringValue { inner: Single( TString( TString { range: 589..597, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 591..596, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 592..593, id: Name("x"), ctx: Load, @@ -1711,21 +1928,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 598..611, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 598..611, value: TStringValue { inner: Single( TString( TString { range: 598..611, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 600..610, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 605..606, id: Name("x"), ctx: Load, @@ -1757,21 +1979,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 612..621, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 612..621, value: TStringValue { inner: Single( TString( TString { range: 612..621, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 614..620, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 615..616, id: Name("x"), ctx: Load, @@ -1803,21 +2030,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 622..636, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 622..636, value: TStringValue { inner: Single( TString( TString { range: 622..636, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 624..635, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 625..626, id: Name("x"), ctx: Load, @@ -1828,10 +2060,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 627..634, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 627..634, + node_index: AtomicNodeIndex(..), value: ".3f!r =", }, ), @@ -1856,21 +2090,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 637..653, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 637..653, value: TStringValue { inner: Single( TString( TString { range: 637..653, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 639..652, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 640..641, id: Name("x"), ctx: Load, @@ -1886,10 +2125,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 648..651, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 648..651, + node_index: AtomicNodeIndex(..), value: ".3f", }, ), @@ -1914,21 +2155,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 654..667, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 654..667, value: TStringValue { inner: Single( TString( TString { range: 654..667, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 656..666, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 657..658, id: Name("x"), ctx: Load, @@ -1939,10 +2185,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 659..665, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 659..665, + node_index: AtomicNodeIndex(..), value: ".3f=!r", }, ), @@ -1967,9 +2215,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 668..682, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 668..682, value: TStringValue { inner: Concatenated( @@ -1977,6 +2227,7 @@ Module( Literal( StringLiteral { range: 668..675, + node_index: AtomicNodeIndex(..), value: "hello", flags: StringLiteralFlags { quote_style: Double, @@ -1988,12 +2239,15 @@ Module( TString( TString { range: 676..682, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 678..681, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 679..680, id: Name("x"), ctx: Load, @@ -2021,9 +2275,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 683..696, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 683..696, value: TStringValue { inner: Concatenated( @@ -2031,12 +2287,15 @@ Module( TString( TString { range: 683..689, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 685..688, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 686..687, id: Name("x"), ctx: Load, @@ -2058,12 +2317,15 @@ Module( TString( TString { range: 690..696, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 692..695, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 693..694, id: Name("y"), ctx: Load, @@ -2091,9 +2353,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 697..711, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 697..711, value: TStringValue { inner: Concatenated( @@ -2101,12 +2365,15 @@ Module( TString( TString { range: 697..703, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 699..702, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 700..701, id: Name("x"), ctx: Load, @@ -2128,6 +2395,7 @@ Module( Literal( StringLiteral { range: 704..711, + node_index: AtomicNodeIndex(..), value: "world", flags: StringLiteralFlags { quote_style: Double, @@ -2145,31 +2413,38 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 712..756, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 712..756, value: TStringValue { inner: Single( TString( TString { range: 712..756, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 714..739, + node_index: AtomicNodeIndex(..), value: "Invalid args in command: ", }, ), Interpolation( InterpolatedElement { range: 739..755, + node_index: AtomicNodeIndex(..), expression: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 740..754, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 740..747, id: Name("command"), ctx: Load, @@ -2177,9 +2452,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 749..754, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 750..754, id: Name("args"), ctx: Load, @@ -2214,9 +2491,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 757..775, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 757..775, value: TStringValue { inner: Concatenated( @@ -2224,6 +2503,7 @@ Module( Literal( StringLiteral { range: 757..762, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2235,12 +2515,15 @@ Module( TString( TString { range: 763..769, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 765..768, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 766..767, id: Name("x"), ctx: Load, @@ -2262,6 +2545,7 @@ Module( Literal( StringLiteral { range: 770..775, + node_index: AtomicNodeIndex(..), value: "bar", flags: StringLiteralFlags { quote_style: Double, @@ -2279,9 +2563,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 776..825, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 782..823, value: TStringValue { inner: Concatenated( @@ -2289,10 +2575,12 @@ Module( TString( TString { range: 782..786, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 784..785, + node_index: AtomicNodeIndex(..), value: "a", }, ), @@ -2307,10 +2595,12 @@ Module( TString( TString { range: 791..795, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 793..794, + node_index: AtomicNodeIndex(..), value: "b", }, ), @@ -2325,6 +2615,7 @@ Module( Literal( StringLiteral { range: 800..803, + node_index: AtomicNodeIndex(..), value: "c", flags: StringLiteralFlags { quote_style: Double, @@ -2336,10 +2627,12 @@ Module( TString( TString { range: 808..813, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 811..812, + node_index: AtomicNodeIndex(..), value: "d", }, ), @@ -2356,10 +2649,12 @@ Module( FString( FString { range: 818..823, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 821..822, + node_index: AtomicNodeIndex(..), value: "e", }, ), @@ -2382,9 +2677,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 850..879, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 850..879, value: TStringValue { inner: Concatenated( @@ -2392,6 +2689,7 @@ Module( Literal( StringLiteral { range: 850..856, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2403,12 +2701,15 @@ Module( TString( TString { range: 857..865, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 859..864, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 860..863, id: Name("bar"), ctx: Load, @@ -2430,6 +2731,7 @@ Module( Literal( StringLiteral { range: 866..871, + node_index: AtomicNodeIndex(..), value: "baz", flags: StringLiteralFlags { quote_style: Double, @@ -2441,6 +2743,7 @@ Module( Literal( StringLiteral { range: 872..879, + node_index: AtomicNodeIndex(..), value: " some", flags: StringLiteralFlags { quote_style: Double, @@ -2458,9 +2761,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 880..909, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 880..909, value: TStringValue { inner: Concatenated( @@ -2468,6 +2773,7 @@ Module( Literal( StringLiteral { range: 880..885, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2479,12 +2785,15 @@ Module( TString( TString { range: 886..894, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 888..893, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 889..892, id: Name("bar"), ctx: Load, @@ -2506,6 +2815,7 @@ Module( Literal( StringLiteral { range: 895..901, + node_index: AtomicNodeIndex(..), value: "baz", flags: StringLiteralFlags { quote_style: Double, @@ -2517,6 +2827,7 @@ Module( Literal( StringLiteral { range: 902..909, + node_index: AtomicNodeIndex(..), value: " some", flags: StringLiteralFlags { quote_style: Double, @@ -2534,9 +2845,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 910..939, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 910..939, value: TStringValue { inner: Concatenated( @@ -2544,6 +2857,7 @@ Module( Literal( StringLiteral { range: 910..915, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2555,12 +2869,15 @@ Module( TString( TString { range: 916..924, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 918..923, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 919..922, id: Name("bar"), ctx: Load, @@ -2582,6 +2899,7 @@ Module( Literal( StringLiteral { range: 925..930, + node_index: AtomicNodeIndex(..), value: "baz", flags: StringLiteralFlags { quote_style: Double, @@ -2593,6 +2911,7 @@ Module( Literal( StringLiteral { range: 931..939, + node_index: AtomicNodeIndex(..), value: " some", flags: StringLiteralFlags { quote_style: Double, @@ -2610,9 +2929,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 940..978, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 940..978, value: TStringValue { inner: Concatenated( @@ -2620,6 +2941,7 @@ Module( Literal( StringLiteral { range: 940..946, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -2631,18 +2953,22 @@ Module( TString( TString { range: 947..966, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 949..953, + node_index: AtomicNodeIndex(..), value: "bar ", }, ), Interpolation( InterpolatedElement { range: 953..958, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 954..957, id: Name("baz"), ctx: Load, @@ -2656,6 +2982,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 958..965, + node_index: AtomicNodeIndex(..), value: " really", }, ), @@ -2670,6 +2997,7 @@ Module( Literal( StringLiteral { range: 967..973, + node_index: AtomicNodeIndex(..), value: "bar", flags: StringLiteralFlags { quote_style: Double, @@ -2681,6 +3009,7 @@ Module( Literal( StringLiteral { range: 974..978, + node_index: AtomicNodeIndex(..), value: "no", flags: StringLiteralFlags { quote_style: Double, @@ -2698,9 +3027,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 998..1017, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 998..1017, value: TStringValue { inner: Concatenated( @@ -2708,12 +3039,15 @@ Module( FString( FString { range: 998..1007, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1000..1006, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1001..1005, id: Name("this"), ctx: Load, @@ -2735,12 +3069,15 @@ Module( TString( TString { range: 1008..1017, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1010..1016, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1011..1015, id: Name("that"), ctx: Load, @@ -2768,9 +3105,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1018..1036, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 1018..1036, value: TStringValue { inner: Concatenated( @@ -2778,12 +3117,15 @@ Module( TString( TString { range: 1018..1027, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1020..1026, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1021..1025, id: Name("this"), ctx: Load, @@ -2805,12 +3147,15 @@ Module( FString( FString { range: 1027..1036, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1029..1035, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1030..1034, id: Name("that"), ctx: Load, @@ -2838,9 +3183,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1037..1064, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 1037..1064, value: TStringValue { inner: Concatenated( @@ -2848,12 +3195,15 @@ Module( TString( TString { range: 1037..1046, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1039..1045, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1040..1044, id: Name("this"), ctx: Load, @@ -2875,6 +3225,7 @@ Module( Literal( StringLiteral { range: 1047..1053, + node_index: AtomicNodeIndex(..), value: "that", flags: StringLiteralFlags { quote_style: Double, @@ -2886,12 +3237,15 @@ Module( FString( FString { range: 1054..1064, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1056..1063, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1057..1062, id: Name("other"), ctx: Load, @@ -2919,9 +3273,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1065..1111, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 1065..1111, value: TStringValue { inner: Concatenated( @@ -2929,18 +3285,22 @@ Module( FString( FString { range: 1065..1082, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 1067..1071, + node_index: AtomicNodeIndex(..), value: "one ", }, ), Interpolation( InterpolatedElement { range: 1071..1077, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1072..1076, id: Name("this"), ctx: Load, @@ -2954,6 +3314,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 1077..1081, + node_index: AtomicNodeIndex(..), value: " two", }, ), @@ -2968,6 +3329,7 @@ Module( Literal( StringLiteral { range: 1083..1089, + node_index: AtomicNodeIndex(..), value: "that", flags: StringLiteralFlags { quote_style: Double, @@ -2979,18 +3341,22 @@ Module( TString( TString { range: 1090..1111, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 1092..1098, + node_index: AtomicNodeIndex(..), value: "three ", }, ), Interpolation( InterpolatedElement { range: 1098..1105, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1099..1104, id: Name("other"), ctx: Load, @@ -3004,6 +3370,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 1105..1110, + node_index: AtomicNodeIndex(..), value: " four", }, ), @@ -3024,45 +3391,56 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1123..1142, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 1123..1142, value: TStringValue { inner: Single( TString( TString { range: 1123..1142, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1125..1141, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 1126..1140, value: FStringValue { inner: Single( FString( FString { range: 1126..1140, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1128..1139, + node_index: AtomicNodeIndex(..), expression: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 1129..1138, value: TStringValue { inner: Single( TString( TString { range: 1129..1138, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1131..1137, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1132..1136, id: Name("this"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__tuple.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__tuple.py.snap index e8a88a1b9d..4b019c8755 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__tuple.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__tuple.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/tuple.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..276, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..21, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 19..21, elts: [], ctx: Load, @@ -25,9 +27,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 22..26, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 23..25, elts: [], ctx: Load, @@ -38,13 +42,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 27..37, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 27..37, elts: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 29..31, elts: [], ctx: Load, @@ -53,6 +60,7 @@ Module( ), Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 34..36, elts: [], ctx: Load, @@ -68,13 +76,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 38..42, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 38..42, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("a"), ctx: Load, @@ -89,13 +100,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..49, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 43..49, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("a"), ctx: Load, @@ -103,6 +117,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("b"), ctx: Load, @@ -117,13 +132,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 50..57, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 50..57, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("a"), ctx: Load, @@ -131,6 +149,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..55, id: Name("b"), ctx: Load, @@ -145,13 +164,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..66, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 59..65, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..61, id: Name("a"), ctx: Load, @@ -159,6 +181,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..64, id: Name("b"), ctx: Load, @@ -173,13 +196,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 90..92, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 90..92, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("a"), ctx: Load, @@ -194,13 +220,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 93..97, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 93..97, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("a"), ctx: Load, @@ -208,6 +237,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 96..97, id: Name("b"), ctx: Load, @@ -222,13 +252,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 98..103, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 98..103, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("a"), ctx: Load, @@ -236,6 +269,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 101..102, id: Name("b"), ctx: Load, @@ -250,16 +284,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 126..129, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 126..129, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 126..128, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("a"), ctx: Load, @@ -277,13 +315,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 130..135, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 130..135, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 130..131, id: Name("a"), ctx: Load, @@ -291,9 +332,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 133..135, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 134..135, id: Name("b"), ctx: Load, @@ -311,19 +354,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 136..161, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 136..161, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 136..142, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 137..142, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 137..138, id: Name("a"), ctx: Load, @@ -332,6 +380,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 141..142, id: Name("b"), ctx: Load, @@ -344,12 +393,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 144..152, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 145..152, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 151..152, id: Name("x"), ctx: Load, @@ -362,6 +414,7 @@ Module( ), Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 154..156, elts: [], ctx: Load, @@ -370,9 +423,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 158..161, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 159..161, elts: [], ctx: Load, @@ -391,16 +446,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 162..167, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 162..167, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 163..165, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 164..165, id: Name("a"), ctx: Load, @@ -418,13 +477,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 168..175, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 168..175, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 169..170, id: Name("a"), ctx: Load, @@ -432,9 +494,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 172..174, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 173..174, id: Name("b"), ctx: Load, @@ -452,19 +516,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 176..203, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 176..203, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 177..183, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 178..183, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 178..179, id: Name("a"), ctx: Load, @@ -473,6 +542,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 182..183, id: Name("b"), ctx: Load, @@ -485,12 +555,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 185..193, value: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 186..193, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 192..193, id: Name("x"), ctx: Load, @@ -503,6 +576,7 @@ Module( ), Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 195..197, elts: [], ctx: Load, @@ -511,9 +585,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 199..202, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 200..202, elts: [], ctx: Load, @@ -532,16 +608,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 224..233, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 224..233, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 225..231, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 225..226, id: Name("x"), ctx: Store, @@ -549,6 +629,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 230..231, value: Int( 1, @@ -566,13 +647,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 234..245, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 234..245, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 235..236, id: Name("x"), ctx: Load, @@ -580,9 +664,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 238..244, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 238..239, id: Name("y"), ctx: Store, @@ -590,6 +676,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 243..244, value: Int( 2, @@ -607,13 +694,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 246..260, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 246..260, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 247..248, id: Name("x"), ctx: Load, @@ -621,9 +711,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 250..256, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 250..251, id: Name("y"), ctx: Store, @@ -631,6 +723,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 255..256, value: Int( 2, @@ -641,6 +734,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 258..259, id: Name("z"), ctx: Load, @@ -655,13 +749,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 261..275, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 261..275, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 261..262, id: Name("x"), ctx: Load, @@ -669,9 +766,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 265..271, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 265..266, id: Name("y"), ctx: Store, @@ -679,6 +778,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 270..271, value: Int( 2, @@ -689,6 +789,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 274..275, id: Name("z"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__unary_op.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__unary_op.py.snap index 6e164b817f..cf09c3dcf5 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__unary_op.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__unary_op.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/unary_op.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..276, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..11, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 9..11, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..11, value: Int( 1, @@ -31,13 +34,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..14, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 12..14, op: UAdd, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 13..14, value: Int( 1, @@ -50,13 +56,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..17, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 15..17, op: Invert, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 16..17, value: Int( 1, @@ -69,13 +78,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 18..23, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 18..23, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -87,21 +99,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 36..40, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 36..40, op: USub, operand: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 37..40, op: USub, operand: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 38..40, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 39..40, value: Int( 1, @@ -118,21 +135,26 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 41..45, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 41..45, op: USub, operand: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 42..45, op: UAdd, operand: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 43..45, op: Invert, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 44..45, value: Int( 1, @@ -149,25 +171,31 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 46..53, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 46..53, op: Not, operand: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 49..53, op: USub, operand: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 50..53, op: UAdd, operand: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 51..53, op: Invert, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 52..53, value: Int( 1, @@ -186,17 +214,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..63, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 54..63, op: Not, operand: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 58..63, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..63, id: Name("x"), ctx: Load, @@ -210,16 +242,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 84..93, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 84..93, op: USub, operand: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 86..93, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 92..93, value: Int( 1, @@ -234,19 +270,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 94..109, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 94..109, op: UAdd, operand: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 96..109, left: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 96..103, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 102..103, value: Int( 1, @@ -258,10 +299,12 @@ Module( op: Pow, right: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 107..109, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 108..109, value: Int( 2, @@ -278,17 +321,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 110..117, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 110..117, op: Invert, operand: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 111..117, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 112..113, value: Int( 1, @@ -297,6 +344,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 115..116, value: Int( 2, @@ -314,16 +362,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 118..124, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 118..124, left: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 118..120, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 119..120, value: Int( 1, @@ -335,6 +387,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 123..124, value: Int( 2, @@ -347,23 +400,28 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 212..246, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 212..246, op: Or, values: [ BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 212..223, op: And, values: [ UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 212..217, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 216..217, id: Name("a"), ctx: Load, @@ -373,6 +431,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 222..223, id: Name("b"), ctx: Load, @@ -383,18 +442,22 @@ Module( ), BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 227..246, op: And, values: [ UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 227..236, op: Not, operand: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 231..236, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 231..232, id: Name("c"), ctx: Load, @@ -403,6 +466,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 235..236, id: Name("d"), ctx: Load, @@ -414,10 +478,12 @@ Module( ), UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 241..246, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..246, id: Name("e"), ctx: Load, @@ -435,16 +501,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 247..259, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 247..259, op: Not, operand: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 252..258, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 252..253, id: Name("x"), ctx: Store, @@ -452,6 +522,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 257..258, value: Int( 1, @@ -466,16 +537,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 260..275, value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 260..275, op: Not, operand: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 264..275, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 264..265, id: Name("a"), ctx: Load, @@ -484,10 +559,12 @@ Module( op: BitOr, right: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 269..274, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 273..274, id: Name("b"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__yield.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__yield.py.snap index 063373e6a3..cafb60b460 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__yield.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__yield.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/valid/expressions/yield.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..166, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..5, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 0..5, value: None, }, @@ -22,13 +25,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 6..13, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 6..13, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..13, id: Name("x"), ctx: Load, @@ -41,16 +47,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 14..25, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 14..25, value: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 20..25, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("x"), ctx: Load, @@ -59,6 +69,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 24..25, value: Int( 1, @@ -74,18 +85,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..39, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 26..39, value: Some( BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 32..39, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("x"), ctx: Load, @@ -93,6 +108,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("y"), ctx: Load, @@ -108,16 +124,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 40..52, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 40..52, value: Some( Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 46..52, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..50, id: Name("call"), ctx: Load, @@ -125,6 +145,7 @@ Module( ), arguments: Arguments { range: 50..52, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -137,17 +158,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..65, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 53..65, value: Some( List( ExprList { + node_index: AtomicNodeIndex(..), range: 59..65, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 60..61, value: Int( 1, @@ -156,6 +181,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 63..64, value: Int( 2, @@ -173,17 +199,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 66..78, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 66..78, value: Some( Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 72..78, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 73..74, value: Int( 3, @@ -192,6 +222,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 76..77, value: Int( 4, @@ -208,19 +239,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 79..91, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 79..91, value: Some( Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 85..91, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..87, id: Name("x"), ctx: Load, @@ -229,6 +264,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 89..90, value: Int( 5, @@ -246,17 +282,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..102, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 92..102, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 98..102, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("x"), ctx: Load, @@ -264,6 +304,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 101..102, id: Name("y"), ctx: Load, @@ -281,17 +322,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 103..115, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 103..115, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 109..115, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 110..111, id: Name("x"), ctx: Load, @@ -299,6 +344,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..114, id: Name("y"), ctx: Load, @@ -316,16 +362,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 116..128, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 116..128, value: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 122..128, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 122..123, id: Name("x"), ctx: Load, @@ -337,6 +387,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 127..128, id: Name("y"), ctx: Load, @@ -352,16 +403,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 129..143, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 129..143, value: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 136..142, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..137, id: Name("x"), ctx: Store, @@ -369,6 +424,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 141..142, value: Int( 1, @@ -384,17 +440,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 144..155, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 144..155, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 150..155, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..151, id: Name("x"), ctx: Load, @@ -402,9 +462,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 153..155, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 154..155, id: Name("y"), ctx: Load, @@ -425,20 +487,25 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 156..165, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 156..165, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 162..165, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 162..164, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 163..164, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__yield_from.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__yield_from.py.snap index d35161d5fc..0d7bfe36e3 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__yield_from.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@expressions__yield_from.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/expressions/yield_from.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..199, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..12, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 0..12, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("x"), ctx: Load, @@ -29,15 +32,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..29, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 13..29, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 24..29, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("x"), ctx: Load, @@ -46,6 +53,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 28..29, value: Int( 1, @@ -60,17 +68,21 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..48, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 30..48, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 41..48, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("x"), ctx: Load, @@ -78,6 +90,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("y"), ctx: Load, @@ -92,15 +105,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..66, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 49..66, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 60..66, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..64, id: Name("call"), ctx: Load, @@ -108,6 +125,7 @@ Module( ), arguments: Arguments { range: 64..66, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -119,16 +137,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 67..84, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 67..84, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 78..84, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 1, @@ -137,6 +159,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 2, @@ -153,16 +176,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 85..102, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 85..102, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 96..102, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 97..98, value: Int( 3, @@ -171,6 +198,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 100..101, value: Int( 4, @@ -186,18 +214,22 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 103..120, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 103..120, value: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 114..120, items: [ DictItem { key: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 115..116, id: Name("x"), ctx: Load, @@ -206,6 +238,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 118..119, value: Int( 5, @@ -222,16 +255,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 121..138, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 121..138, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 132..138, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 133..134, id: Name("x"), ctx: Load, @@ -239,6 +276,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..137, id: Name("y"), ctx: Load, @@ -255,15 +293,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 139..156, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 139..156, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 150..156, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..151, id: Name("x"), ctx: Load, @@ -275,6 +317,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 155..156, id: Name("y"), ctx: Load, @@ -289,15 +332,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 157..176, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 157..176, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 169..175, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 169..170, id: Name("x"), ctx: Store, @@ -305,6 +352,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 174..175, value: Int( 1, @@ -319,16 +367,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 177..199, value: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 177..199, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 188..199, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("x"), ctx: Load, @@ -336,12 +388,15 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 192..198, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 193..198, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..194, id: Name("x"), ctx: Load, @@ -350,6 +405,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 197..198, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_in_target_valid_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_in_target_valid_expr.py.snap index 8226141396..8d3f2a8743 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_in_target_valid_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_in_target_valid_expr.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/for_in_target_valid_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..89, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..28, is_async: false, target: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 4..13, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("d"), ctx: Load, @@ -26,9 +29,11 @@ Module( ), slice: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 6..12, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -40,6 +45,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("y"), ctx: Load, @@ -53,6 +59,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..23, id: Name("target"), ctx: Load, @@ -61,9 +68,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -75,16 +84,20 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 29..57, is_async: false, target: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 33..44, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 34..40, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("x"), ctx: Load, @@ -96,6 +109,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("y"), ctx: Load, @@ -106,6 +120,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 42..43, value: Int( 0, @@ -117,6 +132,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..52, id: Name("iter"), ctx: Load, @@ -125,9 +141,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..57, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 54..57, }, ), @@ -139,16 +157,20 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 58..88, is_async: false, target: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 62..75, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 63..69, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..64, id: Name("x"), ctx: Load, @@ -160,6 +182,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("y"), ctx: Load, @@ -171,12 +194,14 @@ Module( attr: Identifier { id: Name("attr"), range: 71..75, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 79..83, id: Name("iter"), ctx: Load, @@ -185,9 +210,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 85..88, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 85..88, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_iter_unpack_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_iter_unpack_py38.py.snap index 892b22f86a..e981ecdd5d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_iter_unpack_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_iter_unpack_py38.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/for_iter_unpack_py38.p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..112, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 43..65, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -22,13 +25,16 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 52..60, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 53..55, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..55, id: Name("a"), ctx: Load, @@ -39,6 +45,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..59, id: Name("b"), ctx: Load, @@ -52,9 +59,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 62..65, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 62..65, }, ), @@ -66,10 +75,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 66..88, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("x"), ctx: Store, @@ -77,10 +88,12 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 75..83, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("a"), ctx: Load, @@ -88,9 +101,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 80..82, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..82, id: Name("b"), ctx: Load, @@ -107,9 +122,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 85..88, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 85..88, }, ), @@ -121,10 +138,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 89..111, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("x"), ctx: Store, @@ -132,13 +151,16 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 98..106, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 99..101, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("a"), ctx: Load, @@ -149,9 +171,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 103..105, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..105, id: Name("b"), ctx: Load, @@ -168,9 +192,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 108..111, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 108..111, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_iter_unpack_py39.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_iter_unpack_py39.py.snap index ac67500fd7..2579c5e35f 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_iter_unpack_py39.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@for_iter_unpack_py39.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/for_iter_unpack_py39.p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..106, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 43..63, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -22,13 +25,16 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 52..58, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 52..54, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("a"), ctx: Load, @@ -39,6 +45,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..58, id: Name("b"), ctx: Load, @@ -52,9 +59,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 60..63, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 60..63, }, ), @@ -66,10 +75,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 64..84, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Store, @@ -77,10 +88,12 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 74..79, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..75, id: Name("a"), ctx: Load, @@ -88,9 +101,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 77..79, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..79, id: Name("b"), ctx: Load, @@ -107,9 +122,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..84, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 81..84, }, ), @@ -121,10 +138,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 85..105, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..90, id: Name("x"), ctx: Store, @@ -132,13 +151,16 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 94..100, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 94..96, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..96, id: Name("a"), ctx: Load, @@ -149,9 +171,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 98..100, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("b"), ctx: Load, @@ -168,9 +192,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 102..105, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 102..105, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_no_space.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_no_space.py.snap index 52b37be22a..4e27abaf58 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_no_space.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_no_space.py.snap @@ -1,25 +1,28 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/from_import_no_space.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..30, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..13, module: None, names: [ Alias { range: 12..13, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 12..13, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -29,14 +32,17 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 14..29, module: None, names: [ Alias { range: 28..29, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 28..29, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_soft_keyword_module_name.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_soft_keyword_module_name.py.snap index 9b5dde8170..ffbf2fa38d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_soft_keyword_module_name.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_soft_keyword_module_name.py.snap @@ -1,30 +1,34 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/from_import_soft_keyword_module_name.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..104, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..25, module: Some( Identifier { id: Name("match"), range: 5..10, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 18..25, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("pattern"), range: 18..25, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -34,19 +38,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 26..46, module: Some( Identifier { id: Name("type"), range: 31..35, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 43..46, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("bar"), range: 43..46, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -56,19 +64,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 47..71, module: Some( Identifier { id: Name("case"), range: 52..56, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 64..71, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("pattern"), range: 64..71, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -78,19 +90,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 72..103, module: Some( Identifier { id: Name("match.type.case"), range: 77..92, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 100..103, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("foo"), range: 100..103, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_stmt_terminator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_stmt_terminator.py.snap index ec6c1d92dc..afc649c201 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_stmt_terminator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@from_import_stmt_terminator.py.snap @@ -1,38 +1,44 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/from_import_stmt_terminator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..97, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..20, module: Some( Identifier { id: Name("a"), range: 5..6, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 15..16, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 15..16, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 18..19, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 18..19, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -42,27 +48,33 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 21..41, module: Some( Identifier { id: Name("a"), range: 26..27, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 36..37, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 36..37, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 39..40, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 39..40, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -72,13 +84,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..47, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 43..47, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("x"), ctx: Load, @@ -86,6 +101,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("y"), ctx: Load, @@ -100,27 +116,33 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 48..66, module: Some( Identifier { id: Name("a"), range: 53..54, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 62..63, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 62..63, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 65..66, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 65..66, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -130,13 +152,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..72, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 68..72, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -144,6 +169,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..72, id: Name("y"), ctx: Load, @@ -158,27 +184,33 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 73..91, module: Some( Identifier { id: Name("a"), range: 78..79, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 87..88, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 87..88, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 90..91, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 90..91, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -188,13 +220,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 92..96, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 92..96, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..93, id: Name("x"), ctx: Load, @@ -202,6 +237,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..96, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@fstring_format_spec_terminator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@fstring_format_spec_terminator.py.snap index 34167d13a7..386e5a0f15 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@fstring_format_spec_terminator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@fstring_format_spec_terminator.py.snap @@ -7,31 +7,38 @@ input_file: crates/ruff_python_parser/resources/inline/ok/fstring_format_spec_te ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..43, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..19, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 0..19, value: FStringValue { inner: Single( FString( FString { range: 0..19, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 2..8, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 8..12, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..10, id: Name("x"), ctx: Load, @@ -42,6 +49,7 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 11..11, + node_index: AtomicNodeIndex(..), elements: [], }, ), @@ -50,6 +58,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 12..18, + node_index: AtomicNodeIndex(..), value: " world", }, ), @@ -69,27 +78,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..42, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 20..42, value: FStringValue { inner: Single( FString( FString { range: 20..42, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 22..28, + node_index: AtomicNodeIndex(..), value: "hello ", }, ), Interpolation( InterpolatedElement { range: 28..35, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Load, @@ -100,10 +115,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 31..34, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 31..34, + node_index: AtomicNodeIndex(..), value: ".3f", }, ), @@ -115,6 +132,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 35..41, + node_index: AtomicNodeIndex(..), value: " world", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_parameter_range.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_parameter_range.py.snap index 17d571227a..68a01e322f 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_parameter_range.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_parameter_range.py.snap @@ -1,40 +1,49 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/function_def_parameter_range.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..56, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..55, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..43, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 13..23, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 13..23, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("first"), range: 13..18, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..23, id: Name("int"), ctx: Load, @@ -46,15 +55,19 @@ Module( }, ParameterWithDefault { range: 29..40, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 29..40, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("second"), range: 29..35, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..40, id: Name("int"), ctx: Load, @@ -72,6 +85,7 @@ Module( returns: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..50, id: Name("int"), ctx: Load, @@ -81,9 +95,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 52..55, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 52..55, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_parenthesized_return_types.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_parenthesized_return_types.py.snap index 7076142333..2008c48ad0 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_parenthesized_return_types.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_parenthesized_return_types.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/function_def_parenthesized_return_types.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..54, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..24, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..9, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,10 +36,12 @@ Module( returns: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 13..19, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -49,9 +56,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..24, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 21..24, }, ), @@ -62,16 +71,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 25..53, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 29..32, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 32..34, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -81,10 +95,12 @@ Module( returns: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 38..48, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..42, id: Name("int"), ctx: Load, @@ -92,6 +108,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..47, id: Name("str"), ctx: Load, @@ -106,9 +123,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 50..53, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 50..53, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_valid_return_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_valid_return_expr.py.snap index f4bd699f74..f3762e02fd 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_valid_return_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_def_valid_return_expr.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/function_def_valid_ret ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..97, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..27, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..9, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -30,9 +36,11 @@ Module( returns: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 13..22, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..16, id: Name("int"), ctx: Load, @@ -41,6 +49,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..22, id: Name("str"), ctx: Load, @@ -52,9 +61,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..27, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 24..27, }, ), @@ -65,16 +76,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 28..57, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 32..35, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 35..37, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -84,19 +100,26 @@ Module( returns: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 41..52, parameters: Some( Parameters { range: 48..49, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 48..49, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 48..49, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 48..49, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -110,6 +133,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..52, id: Name("x"), ctx: Load, @@ -121,9 +145,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..57, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 54..57, }, ), @@ -134,16 +160,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 58..96, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 62..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -153,15 +184,18 @@ Module( returns: Some( If( ExprIf { + node_index: AtomicNodeIndex(..), range: 71..91, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 78..82, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..74, id: Name("int"), ctx: Load, @@ -169,6 +203,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..91, id: Name("str"), ctx: Load, @@ -180,9 +215,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 93..96, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 93..96, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_type_params_py312.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_type_params_py312.py.snap index ed6c0528a6..c4bcad7813 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_type_params_py312.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@function_type_params_py312.py.snap @@ -7,27 +7,33 @@ input_file: crates/ruff_python_parser/resources/inline/ok/function_type_params_p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..62, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..61, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 48..51, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 51..54, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 52..53, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 52..53, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -38,6 +44,9 @@ Module( ), parameters: Parameters { range: 54..56, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -48,9 +57,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..61, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@global_stmt.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@global_stmt.py.snap index 24c5d44be2..e5a51faf37 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@global_stmt.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@global_stmt.py.snap @@ -1,41 +1,47 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/global_stmt.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..24, body: [ Global( StmtGlobal { + node_index: AtomicNodeIndex(..), range: 0..8, names: [ Identifier { id: Name("x"), range: 7..8, + node_index: AtomicNodeIndex(..), }, ], }, ), Global( StmtGlobal { + node_index: AtomicNodeIndex(..), range: 9..23, names: [ Identifier { id: Name("x"), range: 16..17, + node_index: AtomicNodeIndex(..), }, Identifier { id: Name("y"), range: 19..20, + node_index: AtomicNodeIndex(..), }, Identifier { id: Name("z"), range: 22..23, + node_index: AtomicNodeIndex(..), }, ], }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@import_as_name_soft_keyword.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@import_as_name_soft_keyword.py.snap index f5e2f2da77..15b856b9bc 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@import_as_name_soft_keyword.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@import_as_name_soft_keyword.py.snap @@ -1,29 +1,33 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/import_as_name_soft_keyword.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..58, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..19, names: [ Alias { range: 7..19, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("foo"), range: 7..10, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("match"), range: 14..19, + node_index: AtomicNodeIndex(..), }, ), }, @@ -32,18 +36,22 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 20..38, names: [ Alias { range: 27..38, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("bar"), range: 27..30, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("case"), range: 34..38, + node_index: AtomicNodeIndex(..), }, ), }, @@ -52,18 +60,22 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 39..57, names: [ Alias { range: 46..57, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("baz"), range: 46..49, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("type"), range: 53..57, + node_index: AtomicNodeIndex(..), }, ), }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@import_stmt_terminator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@import_stmt_terminator.py.snap index 0d1775d267..507563d546 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@import_stmt_terminator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@import_stmt_terminator.py.snap @@ -1,32 +1,37 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/import_stmt_terminator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..42, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..11, names: [ Alias { range: 7..8, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 7..8, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 10..11, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 10..11, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -35,21 +40,26 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 13..24, names: [ Alias { range: 20..21, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 20..21, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 23..24, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 23..24, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -58,21 +68,26 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 25..36, names: [ Alias { range: 32..33, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 32..33, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 35..36, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 35..36, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -81,13 +96,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 37..41, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 37..41, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..38, id: Name("c"), ctx: Load, @@ -95,6 +113,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("d"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@irrefutable_case_pattern_at_end.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@irrefutable_case_pattern_at_end.py.snap index 0d818e98ea..4dc3301709 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@irrefutable_case_pattern_at_end.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@irrefutable_case_pattern_at_end.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/irrefutable_case_patte ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..176, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..42, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -22,11 +25,14 @@ Module( cases: [ MatchCase { range: 13..24, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 18..19, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 2, @@ -39,9 +45,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 21..24, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 21..24, }, ), @@ -51,14 +59,17 @@ Module( }, MatchCase { range: 29..42, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 34..37, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("var"), range: 34..37, + node_index: AtomicNodeIndex(..), }, ), }, @@ -67,9 +78,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 39..42, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 39..42, }, ), @@ -82,9 +95,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 43..83, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("x"), ctx: Load, @@ -93,11 +108,14 @@ Module( cases: [ MatchCase { range: 56..67, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 61..62, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 61..62, value: Int( 2, @@ -110,9 +128,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 64..67, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 64..67, }, ), @@ -122,9 +142,11 @@ Module( }, MatchCase { range: 72..83, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 77..78, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -133,9 +155,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 80..83, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 80..83, }, ), @@ -148,9 +172,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 84..175, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("x"), ctx: Load, @@ -159,14 +185,17 @@ Module( cases: [ MatchCase { range: 97..118, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 102..105, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("var"), range: 102..105, + node_index: AtomicNodeIndex(..), }, ), }, @@ -174,6 +203,7 @@ Module( guard: Some( BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 109..113, value: true, }, @@ -182,9 +212,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 115..118, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 115..118, }, ), @@ -194,11 +226,14 @@ Module( }, MatchCase { range: 164..175, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 169..170, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 169..170, value: Int( 2, @@ -211,9 +246,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 172..175, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 172..175, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_return_py37.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_return_py37.py.snap index a925e03d2e..470474aa7f 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_return_py37.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_return_py37.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/iter_unpack_return_py3 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..93, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 43..59, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..47, id: Name("rest"), ctx: Store, @@ -23,10 +26,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 50..59, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 4, @@ -35,6 +40,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 5, @@ -43,6 +49,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 6, @@ -58,16 +65,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 60..92, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 64..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -78,14 +90,17 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 69..92, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 76..92, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 77..78, value: Int( 1, @@ -94,6 +109,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 80..81, value: Int( 2, @@ -102,6 +118,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 3, @@ -110,9 +127,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 86..91, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..91, id: Name("rest"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_return_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_return_py38.py.snap index d1fbfcc158..e0f7c8ec22 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_return_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_return_py38.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/iter_unpack_return_py3 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..91, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 43..59, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..47, id: Name("rest"), ctx: Store, @@ -23,10 +26,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 50..59, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 4, @@ -35,6 +40,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 5, @@ -43,6 +49,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 6, @@ -58,16 +65,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 60..90, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 64..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -78,14 +90,17 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 69..90, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 76..90, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 76..77, value: Int( 1, @@ -94,6 +109,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 2, @@ -102,6 +118,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 3, @@ -110,9 +127,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 85..90, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..90, id: Name("rest"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_yield_py37.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_yield_py37.py.snap index e27bc0edc0..092f50c312 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_yield_py37.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_yield_py37.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/iter_unpack_yield_py37 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..92, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 43..59, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..47, id: Name("rest"), ctx: Store, @@ -23,10 +26,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 50..59, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 4, @@ -35,6 +40,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 5, @@ -43,6 +49,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 6, @@ -58,16 +65,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 60..91, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 64..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -78,17 +90,21 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 69..91, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 69..91, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 75..91, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 76..77, value: Int( 1, @@ -97,6 +113,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 79..80, value: Int( 2, @@ -105,6 +122,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 3, @@ -113,9 +131,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 85..90, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..90, id: Name("rest"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_yield_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_yield_py38.py.snap index 4aa3293a64..78df654105 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_yield_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@iter_unpack_yield_py38.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/inline/ok/iter_unpack_yield_py38 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..128, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 43..59, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..47, id: Name("rest"), ctx: Store, @@ -23,10 +26,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 50..59, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 4, @@ -35,6 +40,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 5, @@ -43,6 +49,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 6, @@ -58,16 +65,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 60..89, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 64..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -78,17 +90,21 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 69..89, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 69..89, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 75..89, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 75..76, value: Int( 1, @@ -97,6 +113,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..79, value: Int( 2, @@ -105,6 +122,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 81..82, value: Int( 3, @@ -113,9 +131,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 84..89, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..89, id: Name("rest"), ctx: Load, @@ -139,16 +159,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 90..127, is_async: false, decorator_list: [], name: Identifier { id: Name("h"), range: 94..95, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 95..97, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -159,17 +184,21 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 99..127, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 99..127, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 105..127, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 105..106, value: Int( 1, @@ -178,14 +207,17 @@ Module( ), Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 109..123, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 115..123, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 115..116, value: Int( 2, @@ -194,9 +226,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 118..123, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 119..123, id: Name("rest"), ctx: Load, @@ -215,6 +249,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 126..127, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@lambda_with_no_parameters.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@lambda_with_no_parameters.py.snap index 6ecfea43d1..7a76f5f14c 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@lambda_with_no_parameters.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@lambda_with_no_parameters.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/lambda_with_no_parameters.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..10, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..9, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 0..9, parameters: None, body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@lambda_with_valid_body.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@lambda_with_valid_body.py.snap index 61366ad154..c407279f9d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@lambda_with_valid_body.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@lambda_with_valid_body.py.snap @@ -1,33 +1,41 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/lambda_with_valid_body.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..152, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..11, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 0..11, parameters: Some( Parameters { range: 7..8, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 7..8, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 7..8, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 7..8, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -41,6 +49,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..11, id: Name("x"), ctx: Load, @@ -52,22 +61,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 12..38, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 12..38, parameters: Some( Parameters { range: 19..20, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 19..20, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 19..20, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 19..20, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -81,15 +98,18 @@ Module( ), body: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 22..38, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 27..31, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..23, id: Name("x"), ctx: Load, @@ -97,6 +117,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..38, id: Name("y"), ctx: Load, @@ -110,22 +131,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 39..56, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 39..56, parameters: Some( Parameters { range: 46..47, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 46..47, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 46..47, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 46..47, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -139,9 +168,11 @@ Module( ), body: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 49..56, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..56, id: Name("x"), ctx: Load, @@ -155,22 +186,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..82, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 57..82, parameters: Some( Parameters { range: 64..65, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 64..65, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 64..65, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 64..65, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -184,19 +223,26 @@ Module( ), body: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 67..82, parameters: Some( Parameters { range: 74..75, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 74..75, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 74..75, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 74..75, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -210,9 +256,11 @@ Module( ), body: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 77..82, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("x"), ctx: Load, @@ -221,6 +269,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..82, id: Name("y"), ctx: Load, @@ -236,22 +285,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..102, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 83..102, parameters: Some( Parameters { range: 90..91, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 90..91, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 90..91, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 90..91, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -265,10 +322,12 @@ Module( ), body: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 94..101, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("x"), ctx: Load, @@ -283,26 +342,35 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 136..151, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 136..151, elts: [ Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 136..147, parameters: Some( Parameters { range: 143..144, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 143..144, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 143..144, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 143..144, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -316,6 +384,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("x"), ctx: Load, @@ -325,9 +394,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 149..151, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..151, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_after_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_after_py310.py.snap index 7c12a5fce7..a4b1204457 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_after_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_after_py310.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/match_after_py310.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..80, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 46..79, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 52..53, value: Int( 2, @@ -23,11 +26,14 @@ Module( cases: [ MatchCase { range: 59..79, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 64..65, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 64..65, value: Int( 1, @@ -40,6 +46,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 75..79, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_as_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_as_pattern.py.snap index 8f967d7704..c300ac4843 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_as_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_as_pattern.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/match_as_pattern.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..60, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..32, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("foo"), ctx: Load, @@ -22,14 +25,17 @@ Module( cases: [ MatchCase { range: 15..32, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 20..27, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("foo_bar"), range: 20..27, + node_index: AtomicNodeIndex(..), }, ), }, @@ -38,9 +44,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 29..32, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 29..32, }, ), @@ -53,9 +61,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 33..59, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..42, id: Name("foo"), ctx: Load, @@ -64,9 +74,11 @@ Module( cases: [ MatchCase { range: 48..59, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 53..54, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -75,9 +87,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 56..59, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 56..59, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_as_pattern_soft_keyword.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_as_pattern_soft_keyword.py.snap index fd3c2f1ed1..6ca3b67057 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_as_pattern_soft_keyword.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_as_pattern_soft_keyword.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/match_as_pattern_soft_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..91, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..29, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("foo"), ctx: Load, @@ -22,14 +25,17 @@ Module( cases: [ MatchCase { range: 15..29, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 20..24, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("case"), range: 20..24, + node_index: AtomicNodeIndex(..), }, ), }, @@ -38,9 +44,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..29, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 26..29, }, ), @@ -53,9 +61,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 30..60, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..39, id: Name("foo"), ctx: Load, @@ -64,14 +74,17 @@ Module( cases: [ MatchCase { range: 45..60, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 50..55, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("match"), range: 50..55, + node_index: AtomicNodeIndex(..), }, ), }, @@ -80,9 +93,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..60, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 57..60, }, ), @@ -95,9 +110,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 61..90, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..70, id: Name("foo"), ctx: Load, @@ -106,14 +123,17 @@ Module( cases: [ MatchCase { range: 76..90, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 81..85, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("type"), range: 81..85, + node_index: AtomicNodeIndex(..), }, ), }, @@ -122,9 +142,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 87..90, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 87..90, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_attr_pattern_soft_keyword.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_attr_pattern_soft_keyword.py.snap index 833fa6d042..17a7f854b3 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_attr_pattern_soft_keyword.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_attr_pattern_soft_keyword.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/match_attr_pattern_soft_keyword.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..131, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..130, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("foo"), ctx: Load, @@ -23,14 +25,18 @@ Module( cases: [ MatchCase { range: 15..34, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 20..29, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 20..29, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..25, id: Name("match"), ctx: Load, @@ -39,6 +45,7 @@ Module( attr: Identifier { id: Name("bar"), range: 26..29, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -49,9 +56,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 31..34, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 31..34, }, ), @@ -61,14 +70,18 @@ Module( }, MatchCase { range: 39..57, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 44..52, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 44..52, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..48, id: Name("case"), ctx: Load, @@ -77,6 +90,7 @@ Module( attr: Identifier { id: Name("bar"), range: 49..52, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -87,9 +101,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 54..57, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 54..57, }, ), @@ -99,14 +115,18 @@ Module( }, MatchCase { range: 62..80, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 67..75, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 67..75, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..71, id: Name("type"), ctx: Load, @@ -115,6 +135,7 @@ Module( attr: Identifier { id: Name("bar"), range: 72..75, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -125,9 +146,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 77..80, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 77..80, }, ), @@ -137,29 +160,38 @@ Module( }, MatchCase { range: 85..130, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 90..125, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 90..125, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 90..119, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 90..114, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 90..109, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 90..105, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 90..100, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..95, id: Name("match"), ctx: Load, @@ -168,6 +200,7 @@ Module( attr: Identifier { id: Name("case"), range: 96..100, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -175,6 +208,7 @@ Module( attr: Identifier { id: Name("type"), range: 101..105, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -182,6 +216,7 @@ Module( attr: Identifier { id: Name("bar"), range: 106..109, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -189,6 +224,7 @@ Module( attr: Identifier { id: Name("type"), range: 110..114, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -196,6 +232,7 @@ Module( attr: Identifier { id: Name("case"), range: 115..119, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -203,6 +240,7 @@ Module( attr: Identifier { id: Name("match"), range: 120..125, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -213,9 +251,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 127..130, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 127..130, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_identifier_1.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_identifier_1.py.snap index 5e454f2909..7c7131c6e5 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_identifier_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_identifier_1.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/match_classify_as_identifier_1.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..18, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..17, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 0..17, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..5, id: Name("match"), ctx: Load, @@ -29,6 +32,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..17, id: Name("case"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_identifier_2.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_identifier_2.py.snap index f80bb85b57..e0c274a03d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_identifier_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_identifier_2.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/match_classify_as_identifier_2.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..149, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..5, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..5, id: Name("match"), ctx: Load, @@ -24,12 +26,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 6..18, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 6..18, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..11, id: Name("match"), ctx: Load, @@ -41,6 +46,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 15..18, id: Name("foo"), ctx: Load, @@ -53,13 +59,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..31, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 19..31, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..23, id: Name("foo"), ctx: Load, @@ -67,6 +76,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..30, id: Name("match"), ctx: Load, @@ -81,13 +91,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 32..44, value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 32..44, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 33..36, id: Name("foo"), ctx: Load, @@ -95,6 +108,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..43, id: Name("match"), ctx: Load, @@ -108,13 +122,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 45..57, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 45..57, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..49, id: Name("foo"), ctx: Load, @@ -122,6 +139,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..56, id: Name("match"), ctx: Load, @@ -134,9 +152,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..63, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..63, id: Name("match"), ctx: Load, @@ -146,9 +166,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 65..75, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..70, id: Name("match"), ctx: Store, @@ -156,6 +178,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..75, id: Name("int"), ctx: Load, @@ -167,13 +190,16 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 76..82, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 76..82, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..81, id: Name("match"), ctx: Load, @@ -188,12 +214,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..92, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 83..92, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..88, id: Name("match"), ctx: Load, @@ -202,6 +231,7 @@ Module( attr: Identifier { id: Name("foo"), range: 89..92, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -210,12 +240,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 93..104, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 93..104, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..98, id: Name("match"), ctx: Load, @@ -224,6 +257,7 @@ Module( op: Div, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 101..104, id: Name("foo"), ctx: Load, @@ -235,12 +269,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 105..117, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 105..117, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..110, id: Name("match"), ctx: Load, @@ -249,6 +286,7 @@ Module( op: LShift, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..117, id: Name("foo"), ctx: Load, @@ -260,14 +298,17 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 118..131, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 118..131, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 118..123, id: Name("match"), ctx: Load, @@ -275,6 +316,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..131, id: Name("foo"), ctx: Load, @@ -287,12 +329,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 132..148, value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 132..148, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..137, id: Name("match"), ctx: Load, @@ -304,6 +349,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 145..148, id: Name("foo"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_1.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_1.py.snap index 16fc4e36e3..2345dca249 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_1.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_1.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/match_classify_as_keyw ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..358, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..26, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..9, id: Name("foo"), ctx: Load, @@ -22,9 +25,11 @@ Module( cases: [ MatchCase { range: 15..26, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 20..21, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -33,9 +38,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 23..26, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 23..26, }, ), @@ -48,9 +55,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 27..51, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 33..34, value: Int( 1, @@ -60,9 +69,11 @@ Module( cases: [ MatchCase { range: 40..51, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 45..46, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -71,9 +82,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 48..51, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 48..51, }, ), @@ -86,9 +99,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 52..78, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, value: Float( 1.0, @@ -98,9 +113,11 @@ Module( cases: [ MatchCase { range: 67..78, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 72..73, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -109,9 +126,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 75..78, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 75..78, }, ), @@ -124,9 +143,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 79..104, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 85..87, value: Complex { real: 0.0, @@ -137,9 +158,11 @@ Module( cases: [ MatchCase { range: 93..104, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 98..99, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -148,9 +171,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 101..104, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 101..104, }, ), @@ -163,14 +188,17 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 105..133, subject: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 111..116, value: StringLiteralValue { inner: Single( StringLiteral { range: 111..116, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -185,9 +213,11 @@ Module( cases: [ MatchCase { range: 122..133, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 127..128, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -196,9 +226,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 130..133, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 130..133, }, ), @@ -211,27 +243,33 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 134..167, subject: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 140..150, value: FStringValue { inner: Single( FString( FString { range: 140..150, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 142..146, + node_index: AtomicNodeIndex(..), value: "foo ", }, ), Interpolation( InterpolatedElement { range: 146..149, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 147..148, id: Name("x"), ctx: Load, @@ -257,9 +295,11 @@ Module( cases: [ MatchCase { range: 156..167, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 161..162, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -268,9 +308,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 164..167, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 164..167, }, ), @@ -283,13 +325,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 168..197, subject: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 174..180, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 175..176, value: Int( 1, @@ -298,6 +343,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 178..179, value: Int( 2, @@ -310,9 +356,11 @@ Module( cases: [ MatchCase { range: 186..197, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 191..192, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -321,9 +369,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 194..197, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 194..197, }, ), @@ -336,13 +386,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 198..225, subject: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 204..208, op: Invert, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 205..208, id: Name("foo"), ctx: Load, @@ -353,9 +406,11 @@ Module( cases: [ MatchCase { range: 214..225, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 219..220, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -364,9 +419,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 222..225, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 222..225, }, ), @@ -379,18 +436,22 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 226..252, subject: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 232..235, }, ), cases: [ MatchCase { range: 241..252, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 246..247, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -399,9 +460,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 249..252, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 249..252, }, ), @@ -414,13 +477,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 253..283, subject: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 259..266, op: Not, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 263..266, id: Name("foo"), ctx: Load, @@ -431,9 +497,11 @@ Module( cases: [ MatchCase { range: 272..283, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 277..278, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -442,9 +510,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 280..283, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 280..283, }, ), @@ -457,15 +527,19 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 284..318, subject: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 290..301, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 296..301, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 296..299, id: Name("foo"), ctx: Load, @@ -473,6 +547,7 @@ Module( ), arguments: Arguments { range: 299..301, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -483,9 +558,11 @@ Module( cases: [ MatchCase { range: 307..318, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 312..313, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -494,9 +571,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 315..318, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 315..318, }, ), @@ -509,22 +588,30 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 319..357, subject: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 325..340, parameters: Some( Parameters { range: 332..335, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 332..335, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 332..335, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("foo"), range: 332..335, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -538,6 +625,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 337..340, id: Name("foo"), ctx: Load, @@ -548,9 +636,11 @@ Module( cases: [ MatchCase { range: 346..357, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 351..352, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -559,9 +649,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 354..357, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 354..357, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_2.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_2.py.snap index d82c8dc0e1..d4d62a6c6f 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_2.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_2.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/match_classify_as_keyword_2.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..170, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..28, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..11, id: Name("match"), ctx: Load, @@ -23,9 +25,11 @@ Module( cases: [ MatchCase { range: 17..28, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 22..23, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -34,9 +38,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -49,9 +55,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 29..56, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..39, id: Name("case"), ctx: Load, @@ -60,9 +68,11 @@ Module( cases: [ MatchCase { range: 45..56, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 50..51, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -71,9 +81,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..56, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 53..56, }, ), @@ -86,9 +98,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 57..84, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..67, id: Name("type"), ctx: Load, @@ -97,9 +111,11 @@ Module( cases: [ MatchCase { range: 73..84, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 78..79, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -108,9 +124,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..84, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 81..84, }, ), @@ -123,18 +141,22 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 85..112, subject: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 91..95, }, ), cases: [ MatchCase { range: 101..112, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 106..107, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -143,9 +165,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 109..112, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 109..112, }, ), @@ -158,9 +182,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 113..140, subject: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 119..123, value: true, }, @@ -168,9 +194,11 @@ Module( cases: [ MatchCase { range: 129..140, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 134..135, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -179,9 +207,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 137..140, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 137..140, }, ), @@ -194,9 +224,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 141..169, subject: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 147..152, value: false, }, @@ -204,9 +236,11 @@ Module( cases: [ MatchCase { range: 158..169, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 163..164, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -215,9 +249,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 166..169, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 166..169, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_or_identifier.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_or_identifier.py.snap index 1c15bbba25..849251e03e 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_or_identifier.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_classify_as_keyword_or_identifier.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/match_classify_as_keyword_or_identifier.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..225, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..12, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 0..12, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..5, id: Name("match"), ctx: Load, @@ -25,9 +28,11 @@ Module( ), arguments: Arguments { range: 6..12, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 7..8, value: Int( 1, @@ -36,6 +41,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..11, value: Int( 2, @@ -51,13 +57,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 27..67, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 33..39, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 34..35, value: Int( 1, @@ -66,6 +75,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 37..38, value: Int( 2, @@ -80,9 +90,11 @@ Module( cases: [ MatchCase { range: 56..67, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 61..62, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -91,9 +103,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 64..67, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 64..67, }, ), @@ -106,12 +120,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..78, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 68..78, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..73, id: Name("match"), ctx: Load, @@ -119,10 +136,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 75..77, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 75..76, value: Int( 1, @@ -141,13 +160,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 93..133, subject: List( ExprList { + node_index: AtomicNodeIndex(..), range: 99..105, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 100..101, value: Int( 1, @@ -156,6 +178,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 103..104, value: Int( 2, @@ -169,9 +192,11 @@ Module( cases: [ MatchCase { range: 122..133, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 127..128, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -180,9 +205,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 130..133, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 130..133, }, ), @@ -195,12 +222,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 134..145, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 134..145, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 134..139, id: Name("match"), ctx: Load, @@ -209,6 +239,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..145, id: Name("foo"), ctx: Load, @@ -220,12 +251,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 160..171, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 160..171, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..165, id: Name("match"), ctx: Load, @@ -234,6 +268,7 @@ Module( op: Sub, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 168..171, id: Name("foo"), ctx: Load, @@ -245,13 +280,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 186..224, subject: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 192..196, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 193..196, id: Name("foo"), ctx: Load, @@ -262,9 +300,11 @@ Module( cases: [ MatchCase { range: 213..224, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 218..219, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -273,9 +313,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 221..224, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 221..224, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_sequence_pattern_parentheses_terminator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_sequence_pattern_parentheses_terminator.py.snap index 965e821ef3..7416b29f05 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_sequence_pattern_parentheses_terminator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_sequence_pattern_parentheses_terminator.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/match_sequence_pattern_parentheses_terminator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..57, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..56, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..13, id: Name("subject"), ctx: Load, @@ -23,18 +25,22 @@ Module( cases: [ MatchCase { range: 19..35, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 24..30, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 25..26, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 25..26, + node_index: AtomicNodeIndex(..), }, ), }, @@ -42,11 +48,13 @@ Module( MatchAs( PatternMatchAs { range: 28..29, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("b"), range: 28..29, + node_index: AtomicNodeIndex(..), }, ), }, @@ -58,9 +66,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 32..35, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 32..35, }, ), @@ -70,18 +80,22 @@ Module( }, MatchCase { range: 40..56, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 45..51, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 46..47, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 46..47, + node_index: AtomicNodeIndex(..), }, ), }, @@ -89,11 +103,13 @@ Module( MatchAs( PatternMatchAs { range: 49..50, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("b"), range: 49..50, + node_index: AtomicNodeIndex(..), }, ), }, @@ -105,9 +121,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 53..56, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 53..56, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_sequence_pattern_terminator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_sequence_pattern_terminator.py.snap index df1137b501..91f128eafc 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_sequence_pattern_terminator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_sequence_pattern_terminator.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/match_sequence_pattern ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..95, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..94, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..13, id: Name("subject"), ctx: Load, @@ -22,14 +25,17 @@ Module( cases: [ MatchCase { range: 19..35, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 24..25, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 24..25, + node_index: AtomicNodeIndex(..), }, ), }, @@ -37,6 +43,7 @@ Module( guard: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Load, @@ -46,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 32..35, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 32..35, }, ), @@ -58,18 +67,22 @@ Module( }, MatchCase { range: 40..54, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 45..49, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 45..46, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 45..46, + node_index: AtomicNodeIndex(..), }, ), }, @@ -77,11 +90,13 @@ Module( MatchAs( PatternMatchAs { range: 48..49, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("b"), range: 48..49, + node_index: AtomicNodeIndex(..), }, ), }, @@ -93,9 +108,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 51..54, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 51..54, }, ), @@ -105,18 +122,22 @@ Module( }, MatchCase { range: 59..78, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 64..68, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 64..65, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 64..65, + node_index: AtomicNodeIndex(..), }, ), }, @@ -124,11 +145,13 @@ Module( MatchAs( PatternMatchAs { range: 67..68, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("b"), range: 67..68, + node_index: AtomicNodeIndex(..), }, ), }, @@ -139,6 +162,7 @@ Module( guard: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("x"), ctx: Load, @@ -148,9 +172,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 75..78, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 75..78, }, ), @@ -160,14 +186,17 @@ Module( }, MatchCase { range: 83..94, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 88..89, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 88..89, + node_index: AtomicNodeIndex(..), }, ), }, @@ -176,9 +205,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 91..94, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 91..94, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_stmt_subject_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_stmt_subject_expr.py.snap index fd8bd905dc..e0042a2cc5 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_stmt_subject_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_stmt_subject_expr.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/match_stmt_subject_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..185, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..29, subject: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 6..12, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Store, @@ -25,6 +28,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 11..12, value: Int( 1, @@ -36,9 +40,11 @@ Module( cases: [ MatchCase { range: 18..29, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 23..24, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -47,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..29, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 26..29, }, ), @@ -62,12 +70,15 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 30..61, subject: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 37..43, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..38, id: Name("x"), ctx: Store, @@ -75,6 +86,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 42..43, value: Int( 1, @@ -86,9 +98,11 @@ Module( cases: [ MatchCase { range: 50..61, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 55..56, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -97,9 +111,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..61, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, }, ), @@ -112,19 +128,24 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 121..153, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 127..136, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 127..133, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 128..133, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("x"), ctx: Load, @@ -133,6 +154,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..133, id: Name("y"), ctx: Load, @@ -145,6 +167,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 135..136, id: Name("z"), ctx: Load, @@ -158,9 +181,11 @@ Module( cases: [ MatchCase { range: 142..153, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 147..148, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -169,9 +194,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 150..153, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 150..153, }, ), @@ -184,12 +211,15 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 154..184, subject: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 160..167, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..167, id: Name("x"), ctx: Load, @@ -200,9 +230,11 @@ Module( cases: [ MatchCase { range: 173..184, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 178..179, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -211,9 +243,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 181..184, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 181..184, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_stmt_valid_guard_expr.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_stmt_valid_guard_expr.py.snap index 17ac4a2fa6..32f6791cd4 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_stmt_valid_guard_expr.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@match_stmt_valid_guard_expr.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/match_stmt_valid_guard_expr.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..158, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..34, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -23,14 +25,17 @@ Module( cases: [ MatchCase { range: 13..34, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 18..19, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 18..19, + node_index: AtomicNodeIndex(..), }, ), }, @@ -38,9 +43,11 @@ Module( guard: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 23..29, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("a"), ctx: Store, @@ -48,6 +55,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 28..29, value: Int( 1, @@ -60,9 +68,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 31..34, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 31..34, }, ), @@ -75,9 +85,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 35..79, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..42, id: Name("x"), ctx: Load, @@ -86,14 +98,17 @@ Module( cases: [ MatchCase { range: 48..79, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 53..54, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 53..54, + node_index: AtomicNodeIndex(..), }, ), }, @@ -101,15 +116,18 @@ Module( guard: Some( If( ExprIf { + node_index: AtomicNodeIndex(..), range: 58..74, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 63..67, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 58..59, id: Name("a"), ctx: Load, @@ -117,6 +135,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..74, id: Name("b"), ctx: Load, @@ -128,9 +147,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 76..79, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 76..79, }, ), @@ -143,9 +164,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 80..119, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..87, id: Name("x"), ctx: Load, @@ -154,14 +177,17 @@ Module( cases: [ MatchCase { range: 93..119, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 98..99, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 98..99, + node_index: AtomicNodeIndex(..), }, ), }, @@ -169,19 +195,26 @@ Module( guard: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 103..114, parameters: Some( Parameters { range: 110..111, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 110..111, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 110..111, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 110..111, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -195,6 +228,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..114, id: Name("b"), ctx: Load, @@ -206,9 +240,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 116..119, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 116..119, }, ), @@ -221,9 +257,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 120..157, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 126..127, id: Name("x"), ctx: Load, @@ -232,14 +270,17 @@ Module( cases: [ MatchCase { range: 133..157, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 138..139, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 138..139, + node_index: AtomicNodeIndex(..), }, ), }, @@ -247,10 +288,12 @@ Module( guard: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 144..151, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 150..151, id: Name("x"), ctx: Load, @@ -263,9 +306,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 154..157, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 154..157, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@multiple_assignment_in_case_pattern.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@multiple_assignment_in_case_pattern.py.snap index a12c28b913..b61390df0d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@multiple_assignment_in_case_pattern.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@multiple_assignment_in_case_pattern.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/multiple_assignment_in_case_pattern.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..42, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 0..41, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..7, value: Int( 2, @@ -24,15 +26,19 @@ Module( cases: [ MatchCase { range: 13..41, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 18..36, + node_index: AtomicNodeIndex(..), patterns: [ MatchClass( PatternMatchClass { range: 18..26, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..23, id: Name("Class"), ctx: Load, @@ -40,15 +46,18 @@ Module( ), arguments: PatternArguments { range: 23..26, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 24..25, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 24..25, + node_index: AtomicNodeIndex(..), }, ), }, @@ -61,15 +70,18 @@ Module( MatchSequence( PatternMatchSequence { range: 29..32, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 30..31, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 30..31, + node_index: AtomicNodeIndex(..), }, ), }, @@ -80,11 +92,13 @@ Module( MatchAs( PatternMatchAs { range: 35..36, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 35..36, + node_index: AtomicNodeIndex(..), }, ), }, @@ -96,9 +110,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 38..41, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 38..41, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@nested_async_comprehension_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@nested_async_comprehension_py310.py.snap index 2fb0f626fe..b36ef0858e 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@nested_async_comprehension_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@nested_async_comprehension_py310.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/nested_async_comprehen ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..181, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..116, is_async: true, decorator_list: [], name: Identifier { id: Name("f"), range: 54..55, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 55..57, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,12 +37,15 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 63..84, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 63..84, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 64..65, id: Name("_"), ctx: Load, @@ -45,8 +54,10 @@ Module( generators: [ Comprehension { range: 66..83, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("n"), ctx: Store, @@ -54,9 +65,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 75..83, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..80, id: Name("range"), ctx: Load, @@ -64,9 +77,11 @@ Module( ), arguments: Arguments { range: 80..83, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 81..82, value: Int( 3, @@ -88,12 +103,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 89..116, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 89..116, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("_"), ctx: Load, @@ -102,8 +120,10 @@ Module( generators: [ Comprehension { range: 92..115, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..103, id: Name("n"), ctx: Store, @@ -111,9 +131,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 107..115, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 107..112, id: Name("range"), ctx: Load, @@ -121,9 +143,11 @@ Module( ), arguments: Arguments { range: 112..115, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 113..114, value: Int( 3, @@ -148,16 +172,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 117..180, is_async: true, decorator_list: [], name: Identifier { id: Name("f"), range: 127..128, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 128..130, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -168,16 +197,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 136..148, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 140..141, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 141..143, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -188,9 +222,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 145..148, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 145..148, }, ), @@ -201,12 +237,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 153..180, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 153..180, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 154..155, id: Name("_"), ctx: Load, @@ -215,8 +254,10 @@ Module( generators: [ Comprehension { range: 156..179, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..167, id: Name("n"), ctx: Store, @@ -224,9 +265,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 171..179, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 171..176, id: Name("range"), ctx: Load, @@ -234,9 +277,11 @@ Module( ), arguments: Arguments { range: 176..179, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 177..178, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@nested_async_comprehension_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@nested_async_comprehension_py311.py.snap index b0fc9d849b..2a0a766dab 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@nested_async_comprehension_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@nested_async_comprehension_py311.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/nested_async_comprehen ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..277, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..111, is_async: true, decorator_list: [], name: Identifier { id: Name("f"), range: 54..55, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 55..57, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,16 +37,20 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 59..111, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 66..111, elt: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 67..92, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("x"), ctx: Load, @@ -49,8 +59,10 @@ Module( generators: [ Comprehension { range: 70..91, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..81, id: Name("x"), ctx: Store, @@ -58,9 +70,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 85..91, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..88, id: Name("foo"), ctx: Load, @@ -68,9 +82,11 @@ Module( ), arguments: Arguments { range: 88..91, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 89..90, id: Name("n"), ctx: Load, @@ -90,8 +106,10 @@ Module( generators: [ Comprehension { range: 93..110, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 97..98, id: Name("n"), ctx: Store, @@ -99,9 +117,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 102..110, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..107, id: Name("range"), ctx: Load, @@ -109,9 +129,11 @@ Module( ), arguments: Arguments { range: 107..110, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 108..109, value: Int( 3, @@ -137,16 +159,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 122..192, is_async: true, decorator_list: [], name: Identifier { id: Name("g"), range: 132..133, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 133..135, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -157,16 +184,20 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 137..192, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 144..192, elt: DictComp( ExprDictComp { + node_index: AtomicNodeIndex(..), range: 145..173, key: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("x"), ctx: Load, @@ -174,6 +205,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 149..150, value: Int( 1, @@ -183,8 +215,10 @@ Module( generators: [ Comprehension { range: 151..172, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 161..162, id: Name("x"), ctx: Store, @@ -192,9 +226,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 166..172, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..169, id: Name("foo"), ctx: Load, @@ -202,9 +238,11 @@ Module( ), arguments: Arguments { range: 169..172, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..171, id: Name("n"), ctx: Load, @@ -224,8 +262,10 @@ Module( generators: [ Comprehension { range: 174..191, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 178..179, id: Name("n"), ctx: Store, @@ -233,9 +273,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 183..191, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 183..188, id: Name("range"), ctx: Load, @@ -243,9 +285,11 @@ Module( ), arguments: Arguments { range: 188..191, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 189..190, value: Int( 3, @@ -271,16 +315,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 200..267, is_async: true, decorator_list: [], name: Identifier { id: Name("h"), range: 210..211, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 211..213, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -291,16 +340,20 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 215..267, value: Some( ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 222..267, elt: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 223..248, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 224..225, id: Name("x"), ctx: Load, @@ -309,8 +362,10 @@ Module( generators: [ Comprehension { range: 226..247, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..237, id: Name("x"), ctx: Store, @@ -318,9 +373,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 241..247, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 241..244, id: Name("foo"), ctx: Load, @@ -328,9 +385,11 @@ Module( ), arguments: Arguments { range: 244..247, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 245..246, id: Name("n"), ctx: Load, @@ -350,8 +409,10 @@ Module( generators: [ Comprehension { range: 249..266, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 253..254, id: Name("n"), ctx: Store, @@ -359,9 +420,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 258..266, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 258..263, id: Name("range"), ctx: Load, @@ -369,9 +432,11 @@ Module( ), arguments: Arguments { range: 263..266, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 264..265, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@non_duplicate_type_parameter_names.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@non_duplicate_type_parameter_names.py.snap index 766ff4bc23..76ed4f5937 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@non_duplicate_type_parameter_names.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@non_duplicate_type_parameter_names.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/non_duplicate_type_par ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..150, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..23, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..10, id: Name("Alias"), ctx: Store, @@ -22,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 10..13, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 11..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 11..12, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -39,9 +45,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 16..23, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..20, id: Name("list"), ctx: Load, @@ -49,6 +57,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("T"), ctx: Load, @@ -61,23 +70,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 24..43, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 28..29, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 29..32, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 30..31, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 30..31, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -88,19 +102,26 @@ Module( ), parameters: Parameters { range: 32..38, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 33..37, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 33..37, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("t"), range: 33..34, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("T"), ctx: Load, @@ -119,9 +140,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 40..43, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 40..43, }, ), @@ -132,22 +155,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 44..59, decorator_list: [], name: Identifier { id: Name("C"), range: 50..51, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 51..54, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 52..53, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 52..53, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -160,9 +188,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 56..59, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 56..59, }, ), @@ -173,22 +203,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 60..81, decorator_list: [], name: Identifier { id: Name("C"), range: 66..67, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 67..76, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 68..69, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 68..69, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -197,9 +232,11 @@ Module( TypeVar( TypeParamTypeVar { range: 71..72, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 71..72, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -208,9 +245,11 @@ Module( TypeVar( TypeParamTypeVar { range: 74..75, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("V"), range: 74..75, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -223,9 +262,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 78..81, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 78..81, }, ), @@ -236,9 +277,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 82..149, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 87..92, id: Name("Alias"), ctx: Store, @@ -247,13 +290,16 @@ Module( type_params: Some( TypeParams { range: 92..143, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 93..94, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 93..94, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -262,13 +308,16 @@ Module( TypeVar( TypeParamTypeVar { range: 96..102, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 96..97, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..102, id: Name("str"), ctx: Load, @@ -281,17 +330,21 @@ Module( TypeVar( TypeParamTypeVar { range: 104..119, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("V"), range: 104..105, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 107..119, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..111, id: Name("str"), ctx: Load, @@ -299,6 +352,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..118, id: Name("bytes"), ctx: Load, @@ -316,9 +370,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 121..124, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 122..124, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -326,9 +382,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 126..129, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 128..129, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -336,14 +394,17 @@ Module( TypeVar( TypeParamTypeVar { range: 131..142, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("D"), range: 131..132, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 135..142, id: Name("default"), ctx: Load, @@ -357,6 +418,7 @@ Module( ), value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 146..149, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@non_rebound_comprehension_variable.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@non_rebound_comprehension_variable.py.snap index 8c2d4b8343..3e80ba428d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@non_rebound_comprehension_variable.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@non_rebound_comprehension_variable.py.snap @@ -7,19 +7,24 @@ input_file: crates/ruff_python_parser/resources/inline/ok/non_rebound_comprehens ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..27, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..26, value: ListComp( ExprListComp { + node_index: AtomicNodeIndex(..), range: 0..26, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1..7, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..2, id: Name("a"), ctx: Store, @@ -27,6 +32,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..7, value: Int( 0, @@ -38,8 +44,10 @@ Module( generators: [ Comprehension { range: 8..25, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..13, id: Name("x"), ctx: Store, @@ -47,9 +55,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 17..25, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..22, id: Name("range"), ctx: Load, @@ -57,9 +67,11 @@ Module( ), arguments: Arguments { range: 22..25, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 23..24, value: Int( 0, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@nonlocal_declaration_at_module_level.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@nonlocal_declaration_at_module_level.py.snap index b1646e4b6c..c3a1f13b03 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@nonlocal_declaration_at_module_level.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@nonlocal_declaration_at_module_level.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/nonlocal_declaration_a ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..24, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..23, is_async: false, decorator_list: [], name: Identifier { id: Name("_"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 5..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,11 +37,13 @@ Module( body: [ Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 13..23, names: [ Identifier { id: Name("x"), range: 22..23, + node_index: AtomicNodeIndex(..), }, ], }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@nonlocal_stmt.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@nonlocal_stmt.py.snap index f7b7d0a1c8..6ff8f3a685 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@nonlocal_stmt.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@nonlocal_stmt.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/nonlocal_stmt.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..45, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..44, is_async: false, decorator_list: [], name: Identifier { id: Name("_"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 5..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,30 +37,36 @@ Module( body: [ Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 13..23, names: [ Identifier { id: Name("x"), range: 22..23, + node_index: AtomicNodeIndex(..), }, ], }, ), Nonlocal( StmtNonlocal { + node_index: AtomicNodeIndex(..), range: 28..44, names: [ Identifier { id: Name("x"), range: 37..38, + node_index: AtomicNodeIndex(..), }, Identifier { id: Name("y"), range: 40..41, + node_index: AtomicNodeIndex(..), }, Identifier { id: Name("z"), range: 43..44, + node_index: AtomicNodeIndex(..), }, ], }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@other__atom.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@other__atom.py.snap index 1fa2f56ed5..c990da6f6e 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@other__atom.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@other__atom.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/other/atom.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..73, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 0..3, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 0..3, }, ), @@ -22,9 +24,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4..8, value: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 4..8, value: true, }, @@ -33,9 +37,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..14, value: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 9..14, value: false, }, @@ -44,9 +50,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 15..19, value: NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 15..19, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@other__decorator.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@other__decorator.py.snap index fd32829f6c..4278651bd2 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@other__decorator.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@other__decorator.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/other/decorator.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..407, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..40, is_async: false, decorator_list: [ Decorator { range: 0..19, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1..19, id: Name("function_decorator"), ctx: Load, @@ -29,10 +32,14 @@ Module( name: Identifier { id: Name("test"), range: 24..28, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 28..30, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -43,6 +50,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 36..40, }, ), @@ -51,12 +59,15 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 43..80, decorator_list: [ Decorator { range: 43..59, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..59, id: Name("class_decorator"), ctx: Load, @@ -67,12 +78,14 @@ Module( name: Identifier { id: Name("Test"), range: 66..70, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 76..80, }, ), @@ -81,13 +94,16 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 83..106, is_async: false, decorator_list: [ Decorator { range: 83..93, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..93, id: Name("decorator"), ctx: Load, @@ -98,10 +114,14 @@ Module( name: Identifier { id: Name("f"), range: 98..99, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 99..101, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -112,9 +132,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 103..106, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 103..106, }, ), @@ -125,19 +147,24 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 109..128, is_async: false, decorator_list: [ Decorator { range: 109..115, + node_index: AtomicNodeIndex(..), expression: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 110..115, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 110..113, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 110..111, id: Name("a"), ctx: Load, @@ -146,6 +173,7 @@ Module( attr: Identifier { id: Name("b"), range: 112..113, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -153,6 +181,7 @@ Module( attr: Identifier { id: Name("c"), range: 114..115, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -162,10 +191,14 @@ Module( name: Identifier { id: Name("f"), range: 120..121, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 121..123, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -176,9 +209,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 125..128, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 125..128, }, ), @@ -189,13 +224,16 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 131..153, is_async: false, decorator_list: [ Decorator { range: 131..133, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..133, id: Name("a"), ctx: Load, @@ -204,14 +242,18 @@ Module( }, Decorator { range: 134..140, + node_index: AtomicNodeIndex(..), expression: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 135..140, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 135..138, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 135..136, id: Name("a"), ctx: Load, @@ -220,6 +262,7 @@ Module( attr: Identifier { id: Name("b"), range: 137..138, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -227,6 +270,7 @@ Module( attr: Identifier { id: Name("c"), range: 139..140, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -236,10 +280,14 @@ Module( name: Identifier { id: Name("f"), range: 145..146, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 146..148, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -250,9 +298,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 150..153, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 150..153, }, ), @@ -263,12 +313,15 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 156..185, decorator_list: [ Decorator { range: 156..158, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 157..158, id: Name("a"), ctx: Load, @@ -277,11 +330,14 @@ Module( }, Decorator { range: 159..165, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 160..165, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 160..161, value: Int( 1, @@ -291,6 +347,7 @@ Module( op: BitOr, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 164..165, value: Int( 2, @@ -302,14 +359,18 @@ Module( }, Decorator { range: 166..172, + node_index: AtomicNodeIndex(..), expression: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 167..172, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 167..170, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 167..168, id: Name("a"), ctx: Load, @@ -318,6 +379,7 @@ Module( attr: Identifier { id: Name("b"), range: 169..170, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -325,6 +387,7 @@ Module( attr: Identifier { id: Name("c"), range: 171..172, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -334,15 +397,18 @@ Module( name: Identifier { id: Name("T"), range: 179..180, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 182..185, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 182..185, }, ), @@ -353,16 +419,20 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 188..269, is_async: false, decorator_list: [ Decorator { range: 188..195, + node_index: AtomicNodeIndex(..), expression: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 189..195, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("x"), ctx: Store, @@ -370,6 +440,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 194..195, value: Int( 1, @@ -381,17 +452,21 @@ Module( }, Decorator { range: 196..213, + node_index: AtomicNodeIndex(..), expression: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 197..213, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 202..206, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 197..198, id: Name("x"), ctx: Load, @@ -399,6 +474,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 212..213, id: Name("y"), ctx: Load, @@ -409,21 +485,29 @@ Module( }, Decorator { range: 214..226, + node_index: AtomicNodeIndex(..), expression: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 215..226, parameters: Some( Parameters { range: 222..223, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 222..223, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 222..223, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 222..223, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -437,6 +521,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 225..226, id: Name("x"), ctx: Load, @@ -447,13 +532,16 @@ Module( }, Decorator { range: 227..235, + node_index: AtomicNodeIndex(..), expression: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 228..235, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 228..229, id: Name("x"), ctx: Load, @@ -461,6 +549,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 234..235, id: Name("y"), ctx: Load, @@ -472,12 +561,15 @@ Module( }, Decorator { range: 236..246, + node_index: AtomicNodeIndex(..), expression: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 238..245, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 244..245, id: Name("x"), ctx: Load, @@ -489,15 +581,19 @@ Module( }, Decorator { range: 247..256, + node_index: AtomicNodeIndex(..), expression: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 248..256, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 249..251, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 250..251, id: Name("x"), ctx: Load, @@ -508,9 +604,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 253..255, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 254..255, id: Name("y"), ctx: Load, @@ -529,10 +627,14 @@ Module( name: Identifier { id: Name("f"), range: 261..262, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 262..264, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -543,9 +645,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 266..269, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 266..269, }, ), @@ -556,16 +660,20 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 360..380, is_async: false, decorator_list: [ Decorator { range: 360..365, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 361..365, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 361..362, id: Name("x"), ctx: Load, @@ -574,6 +682,7 @@ Module( op: MatMult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 364..365, id: Name("y"), ctx: Load, @@ -586,10 +695,14 @@ Module( name: Identifier { id: Name("foo"), range: 370..373, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 373..375, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -600,9 +713,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 377..380, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 377..380, }, ), @@ -613,13 +728,16 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 383..407, is_async: false, decorator_list: [ Decorator { range: 383..385, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 384..385, id: Name("x"), ctx: Load, @@ -628,8 +746,10 @@ Module( }, Decorator { range: 388..390, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 389..390, id: Name("y"), ctx: Load, @@ -640,10 +760,14 @@ Module( name: Identifier { id: Name("foo"), range: 397..400, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 400..402, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -654,9 +778,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 404..407, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 404..407, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_annotation.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_annotation.py.snap index 004ec6c603..af944be2fb 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_annotation.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_annotation.py.snap @@ -7,33 +7,43 @@ input_file: crates/ruff_python_parser/resources/inline/ok/param_with_annotation. ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..54, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..22, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..17, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..16, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..16, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 8..11, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..16, id: Name("int"), ctx: Load, @@ -52,9 +62,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 19..22, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 19..22, }, ), @@ -65,42 +77,57 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 23..53, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 27..30, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 30..48, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 31..47, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 31..47, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 31..34, + node_index: AtomicNodeIndex(..), }, annotation: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 36..47, parameters: Some( Parameters { range: 43..44, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 43..44, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 43..44, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 43..44, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -114,6 +141,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("x"), ctx: Load, @@ -134,9 +162,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 50..53, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 50..53, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_default.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_default.py.snap index 62383e6283..7951972b14 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_default.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_default.py.snap @@ -1,55 +1,70 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/param_with_default.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..111, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..27, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..22, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..21, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 10..21, parameters: Some( Parameters { range: 17..18, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 17..18, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 17..18, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 17..18, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -63,6 +78,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("y"), ctx: Load, @@ -81,9 +97,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 24..27, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 24..27, }, ), @@ -94,40 +112,51 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 28..60, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 32..35, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 35..55, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 36..54, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 36..37, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 36..37, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( If( ExprIf { + node_index: AtomicNodeIndex(..), range: 38..54, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 43..47, value: true, }, ), body: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 38..39, value: Int( 1, @@ -136,6 +165,7 @@ Module( ), orelse: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 53..54, value: Int( 2, @@ -155,9 +185,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..60, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 57..60, }, ), @@ -168,34 +200,44 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 61..84, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 65..68, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 68..79, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 69..78, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 69..70, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 69..70, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 71..78, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("y"), ctx: Load, @@ -214,9 +256,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..84, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 81..84, }, ), @@ -227,35 +271,45 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 85..110, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 89..92, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 92..105, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 93..104, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 93..94, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 93..94, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 96..103, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 102..103, id: Name("y"), ctx: Load, @@ -275,9 +329,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 107..110, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 107..110, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation.py.snap index bcf3af426d..a9987458b0 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation.py.snap @@ -1,45 +1,55 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/param_with_star_annotation.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..67, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..31, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..26, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 8..25, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 9..13, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 15..25, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 16..25, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..19, id: Name("int"), ctx: Load, @@ -48,6 +58,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..25, id: Name("str"), ctx: Load, @@ -68,9 +79,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 28..31, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 28..31, }, ), @@ -81,36 +94,46 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 32..66, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 36..39, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 39..61, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 40..60, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 41..45, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 47..60, value: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 49..59, op: Or, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..52, id: Name("int"), ctx: Load, @@ -118,6 +141,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..59, id: Name("str"), ctx: Load, @@ -139,9 +163,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 63..66, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 63..66, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation_py310.py.snap index ad415e1657..8e1d5b24be 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation_py310.py.snap @@ -7,31 +7,38 @@ input_file: crates/ruff_python_parser/resources/inline/ok/param_with_star_annota ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..432, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 169..206, module: Some( Identifier { id: Name("typing"), range: 174..180, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 188..197, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Annotated"), range: 188..197, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 199..206, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Literal"), range: 199..206, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -41,28 +48,36 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 207..230, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 211..214, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 214..225, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 215..224, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 216..220, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 222..224, id: Name("Ts"), ctx: Load, @@ -78,9 +93,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 227..230, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 227..230, }, ), @@ -91,31 +108,40 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 231..295, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 235..238, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 238..290, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 239..289, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 240..241, + node_index: AtomicNodeIndex(..), }, annotation: Some( Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 243..289, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 243..250, id: Name("Literal"), ctx: Load, @@ -123,11 +149,13 @@ Module( ), slice: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 251..288, value: StringLiteralValue { inner: Single( StringLiteral { range: 251..288, + node_index: AtomicNodeIndex(..), value: "this should allow arbitrary strings", flags: StringLiteralFlags { quote_style: Double, @@ -152,9 +180,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 292..295, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 292..295, }, ), @@ -165,31 +195,40 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 296..367, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 300..303, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 303..362, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 304..361, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 305..306, + node_index: AtomicNodeIndex(..), }, annotation: Some( Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 308..361, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 308..317, id: Name("Annotated"), ctx: Load, @@ -197,10 +236,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 318..360, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 318..321, id: Name("str"), ctx: Load, @@ -208,11 +249,13 @@ Module( ), StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 323..360, value: StringLiteralValue { inner: Single( StringLiteral { range: 323..360, + node_index: AtomicNodeIndex(..), value: "this should allow arbitrary strings", flags: StringLiteralFlags { quote_style: Double, @@ -242,9 +285,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 364..367, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 364..367, }, ), @@ -255,28 +300,36 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 368..405, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 372..375, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 375..400, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 376..386, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 377..381, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 383..386, id: Name("str"), ctx: Load, @@ -289,13 +342,16 @@ Module( kwarg: Some( Parameter { range: 388..399, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwds"), range: 390..394, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 396..399, id: Name("int"), ctx: Load, @@ -309,9 +365,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 402..405, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 402..405, }, ), @@ -322,31 +380,40 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 406..431, is_async: false, decorator_list: [], name: Identifier { id: Name("union"), range: 410..415, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 415..426, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 416..425, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 417..418, + node_index: AtomicNodeIndex(..), }, annotation: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 420..425, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 420..421, id: Name("A"), ctx: Load, @@ -355,6 +422,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 424..425, id: Name("B"), ctx: Load, @@ -372,9 +440,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 428..431, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 428..431, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation_py311.py.snap index 7156b308c5..0f1eed04f9 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@param_with_star_annotation_py311.py.snap @@ -7,35 +7,45 @@ input_file: crates/ruff_python_parser/resources/inline/ok/param_with_star_annota ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..69, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..68, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 48..51, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 51..63, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 52..62, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 53..57, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 59..62, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..62, id: Name("Ts"), ctx: Load, @@ -54,9 +64,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 65..68, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 65..68, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@params_non_default_after_star.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@params_non_default_after_star.py.snap index 4c6a5faaeb..2a4bdc6a75 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@params_non_default_after_star.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@params_non_default_after_star.py.snap @@ -1,42 +1,51 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/params_non_default_after_star.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..72, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..33, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..28, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 8..12, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 8..9, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 8..9, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 10..12, value: Int( 10, @@ -50,11 +59,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 17..18, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 17..18, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 17..18, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -62,17 +74,21 @@ Module( }, ParameterWithDefault { range: 20..24, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 20..21, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 20..21, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 22..24, value: Int( 11, @@ -83,11 +99,14 @@ Module( }, ParameterWithDefault { range: 26..27, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 26..27, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 26..27, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -100,9 +119,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 30..33, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 30..33, }, ), @@ -113,31 +134,40 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 34..71, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 38..41, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 41..66, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 42..46, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 42..43, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 42..43, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 44..46, value: Int( 10, @@ -150,9 +180,11 @@ Module( vararg: Some( Parameter { range: 48..53, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 49..53, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -160,11 +192,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 55..56, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 55..56, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 55..56, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -172,17 +207,21 @@ Module( }, ParameterWithDefault { range: 58..62, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 58..59, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 58..59, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 60..62, value: Int( 11, @@ -193,11 +232,14 @@ Module( }, ParameterWithDefault { range: 64..65, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 64..65, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 64..65, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -210,9 +252,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 68..71, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 68..71, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@params_seen_keyword_only_param_after_star.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@params_seen_keyword_only_param_after_star.py.snap index a01d1c0665..458f38d329 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@params_seen_keyword_only_param_after_star.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@params_seen_keyword_only_param_after_star.py.snap @@ -1,38 +1,46 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/params_seen_keyword_only_param_after_star.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..61, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..28, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 4..7, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 7..23, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, kwonlyargs: [ ParameterWithDefault { range: 11..12, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 11..12, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 11..12, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -42,9 +50,11 @@ Module( kwarg: Some( Parameter { range: 14..22, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 16..22, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -54,9 +64,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -67,33 +79,42 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 29..60, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 33..36, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 36..55, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, kwonlyargs: [ ParameterWithDefault { range: 40..44, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 40..41, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 40..41, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 42..44, value: Int( 10, @@ -106,9 +127,11 @@ Module( kwarg: Some( Parameter { range: 46..54, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 48..54, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -118,9 +141,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..60, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 57..60, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_context_manager_py39.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_context_manager_py39.py.snap index fa05d59e24..b8b9b08747 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_context_manager_py39.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_context_manager_py39.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/inline/ok/parenthesized_context_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..126, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 43..73, is_async: false, items: [ WithItem { range: 49..57, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..52, id: Name("foo"), ctx: Load, @@ -26,6 +30,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Store, @@ -35,8 +40,10 @@ Module( }, WithItem { range: 59..67, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..62, id: Name("bar"), ctx: Load, @@ -45,6 +52,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("y"), ctx: Store, @@ -56,9 +64,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 70..73, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 70..73, }, ), @@ -69,13 +79,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 74..99, is_async: false, items: [ WithItem { range: 80..83, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..83, id: Name("foo"), ctx: Load, @@ -85,8 +98,10 @@ Module( }, WithItem { range: 85..93, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..88, id: Name("bar"), ctx: Load, @@ -95,6 +110,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..93, id: Name("y"), ctx: Store, @@ -106,9 +122,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 96..99, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 96..99, }, ), @@ -119,13 +137,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 100..125, is_async: false, items: [ WithItem { range: 106..114, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 106..109, id: Name("foo"), ctx: Load, @@ -134,6 +155,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..114, id: Name("x"), ctx: Store, @@ -143,8 +165,10 @@ Module( }, WithItem { range: 116..119, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..119, id: Name("bar"), ctx: Load, @@ -156,9 +180,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 122..125, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 122..125, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_kwarg_py37.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_kwarg_py37.py.snap index bb42e78d8c..15feb12d38 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_kwarg_py37.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_kwarg_py37.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/ok/parenthesized_kwarg_py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..52, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..51, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 43..51, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("f"), ctx: Load, @@ -24,18 +28,22 @@ Module( ), arguments: Arguments { range: 44..51, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 45..50, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("a"), range: 46..47, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 49..50, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_named_expr_index_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_named_expr_index_py38.py.snap index c8e09fd54a..b5b5b300e5 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_named_expr_index_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_named_expr_index_py38.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/ok/parenthesized_named_ex ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..55, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..54, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 43..54, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..46, id: Name("lst"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), slice: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 48..52, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..49, id: Name("x"), ctx: Store, @@ -34,6 +40,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_named_expr_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_named_expr_py38.py.snap index 18a6f2406c..c1f65ffc1d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_named_expr_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_named_expr_py38.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/inline/ok/parenthesized_named_ex ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..92, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..59, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 43..59, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 45..51, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..46, id: Name("x"), ctx: Store, @@ -28,6 +33,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 50..51, value: Int( 1, @@ -38,6 +44,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 54..55, value: Int( 2, @@ -46,6 +53,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 57..58, value: Int( 3, @@ -59,15 +67,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 60..91, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 60..91, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 62..71, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..66, id: Name("last"), ctx: Store, @@ -75,6 +87,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("x"), ctx: Load, @@ -85,8 +98,10 @@ Module( generators: [ Comprehension { range: 73..90, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("x"), ctx: Store, @@ -94,9 +109,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 82..90, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..87, id: Name("range"), ctx: Load, @@ -104,9 +121,11 @@ Module( ), arguments: Arguments { range: 87..90, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 88..89, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_star_index_py310.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_star_index_py310.py.snap index 10df276256..a1f2cd011d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_star_index_py310.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@parenthesized_star_index_py310.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/parenthesized_star_index_py310.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..94, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 44..93, targets: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 44..89, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..47, id: Name("out"), ctx: Load, @@ -26,19 +29,24 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 48..88, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 49..81, value: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 50..81, elt: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 51..62, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 51..56, id: Name("slice"), ctx: Load, @@ -46,9 +54,11 @@ Module( ), arguments: Arguments { range: 56..62, + node_index: AtomicNodeIndex(..), args: [ NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 57..61, }, ), @@ -60,8 +70,10 @@ Module( generators: [ Comprehension { range: 63..80, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..68, id: Name("_"), ctx: Store, @@ -69,9 +81,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 72..80, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..77, id: Name("range"), ctx: Load, @@ -79,9 +93,11 @@ Module( ), arguments: Arguments { range: 77..80, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 78..79, value: Int( 2, @@ -105,9 +121,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 83..87, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..87, id: Name("ind"), ctx: Load, @@ -127,6 +145,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 92..93, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep701_f_string_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep701_f_string_py311.py.snap index cbec152ee7..6f728ba6da 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep701_f_string_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep701_f_string_py311.py.snap @@ -7,36 +7,44 @@ input_file: crates/ruff_python_parser/resources/inline/ok/pep701_f_string_py311. ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..278, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..72, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 44..72, value: FStringValue { inner: Single( FString( FString { range: 44..72, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 46..52, + node_index: AtomicNodeIndex(..), value: "outer ", }, ), Interpolation( InterpolatedElement { range: 52..71, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 53..70, value: StringLiteralValue { inner: Single( StringLiteral { range: 53..70, + node_index: AtomicNodeIndex(..), value: "# not a comment", flags: StringLiteralFlags { quote_style: Single, @@ -69,27 +77,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 73..106, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 73..106, value: FStringValue { inner: Single( FString( FString { range: 73..106, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 75..81, + node_index: AtomicNodeIndex(..), value: "outer ", }, ), Interpolation( InterpolatedElement { range: 81..105, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("x"), ctx: Load, @@ -100,17 +114,21 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 84..104, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 84..103, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 85..102, value: StringLiteralValue { inner: Single( StringLiteral { range: 85..102, + node_index: AtomicNodeIndex(..), value: "# not a comment", flags: StringLiteralFlags { quote_style: Double, @@ -130,6 +148,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 103..104, + node_index: AtomicNodeIndex(..), value: " ", }, ), @@ -154,50 +173,62 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 107..147, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 107..147, value: FStringValue { inner: Single( FString( FString { range: 107..147, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 111..144, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 112..143, value: FStringValue { inner: Single( FString( FString { range: 112..143, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 116..140, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 117..139, value: FStringValue { inner: Single( FString( FString { range: 117..139, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 119..138, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 120..137, value: StringLiteralValue { inner: Single( StringLiteral { range: 120..137, + node_index: AtomicNodeIndex(..), value: "# not a comment", flags: StringLiteralFlags { quote_style: Double, @@ -264,78 +295,96 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 148..230, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 148..230, value: FStringValue { inner: Single( FString( FString { range: 148..230, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 152..208, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 153..207, value: FStringValue { inner: Single( FString( FString { range: 153..207, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 157..177, + node_index: AtomicNodeIndex(..), value: "# before expression ", }, ), Interpolation( InterpolatedElement { range: 177..204, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 178..203, value: FStringValue { inner: Single( FString( FString { range: 178..203, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 180..185, + node_index: AtomicNodeIndex(..), value: "# aro", }, ), Interpolation( InterpolatedElement { range: 185..197, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 186..196, value: FStringValue { inner: Single( FString( FString { range: 186..196, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 188..189, + node_index: AtomicNodeIndex(..), value: "#", }, ), Interpolation( InterpolatedElement { range: 189..194, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 190..193, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 190..191, value: Int( 1, @@ -345,6 +394,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 192..193, value: Int( 1, @@ -361,6 +411,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 194..195, + node_index: AtomicNodeIndex(..), value: "#", }, ), @@ -384,6 +435,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 197..202, + node_index: AtomicNodeIndex(..), value: "und #", }, ), @@ -424,6 +476,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 208..227, + node_index: AtomicNodeIndex(..), value: " # after expression", }, ), @@ -443,27 +496,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 231..263, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 231..263, value: FStringValue { inner: Single( FString( FString { range: 231..263, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 233..254, + node_index: AtomicNodeIndex(..), value: "escape outside of \t ", }, ), Interpolation( InterpolatedElement { range: 254..260, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 255..259, id: Name("expr"), ctx: Load, @@ -477,6 +536,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 260..262, + node_index: AtomicNodeIndex(..), value: "\n", }, ), @@ -496,19 +556,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 264..277, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 264..277, value: FStringValue { inner: Single( FString( FString { range: 264..277, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 266..276, + node_index: AtomicNodeIndex(..), value: "test\"abcd", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep701_f_string_py312.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep701_f_string_py312.py.snap index 09817c8283..aad89368d1 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep701_f_string_py312.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep701_f_string_py312.py.snap @@ -7,34 +7,42 @@ input_file: crates/ruff_python_parser/resources/inline/ok/pep701_f_string_py312. ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..403, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..74, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 44..74, value: FStringValue { inner: Single( FString( FString { range: 44..74, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 46..58, + node_index: AtomicNodeIndex(..), value: "Magic wand: ", }, ), Interpolation( InterpolatedElement { range: 58..73, + node_index: AtomicNodeIndex(..), expression: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 60..71, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..63, id: Name("bag"), ctx: Load, @@ -42,11 +50,13 @@ Module( ), slice: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 64..70, value: StringLiteralValue { inner: Single( StringLiteral { range: 64..70, + node_index: AtomicNodeIndex(..), value: "wand", flags: StringLiteralFlags { quote_style: Single, @@ -82,32 +92,40 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 95..112, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 95..112, value: FStringValue { inner: Single( FString( FString { range: 95..112, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 97..111, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 98..110, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 98..107, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 98..102, value: StringLiteralValue { inner: Single( StringLiteral { range: 98..102, + node_index: AtomicNodeIndex(..), value: "\n", flags: StringLiteralFlags { quote_style: Single, @@ -122,15 +140,18 @@ Module( attr: Identifier { id: Name("join"), range: 103..107, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 107..110, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..109, id: Name("a"), ctx: Load, @@ -162,30 +183,37 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 148..220, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 148..220, value: FStringValue { inner: Single( FString( FString { range: 148..220, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 152..169, + node_index: AtomicNodeIndex(..), value: "A complex trick: ", }, ), Interpolation( InterpolatedElement { range: 169..217, + node_index: AtomicNodeIndex(..), expression: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 175..185, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 175..178, id: Name("bag"), ctx: Load, @@ -193,11 +221,13 @@ Module( ), slice: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 179..184, value: StringLiteralValue { inner: Single( StringLiteral { range: 179..184, + node_index: AtomicNodeIndex(..), value: "bag", flags: StringLiteralFlags { quote_style: Single, @@ -233,84 +263,105 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 221..254, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 221..254, value: FStringValue { inner: Single( FString( FString { range: 221..254, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 223..253, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 224..252, value: FStringValue { inner: Single( FString( FString { range: 224..252, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 226..251, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 227..250, value: FStringValue { inner: Single( FString( FString { range: 227..250, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 229..249, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 230..248, value: FStringValue { inner: Single( FString( FString { range: 230..248, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 232..247, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 233..246, value: FStringValue { inner: Single( FString( FString { range: 233..246, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 235..245, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 236..244, value: FStringValue { inner: Single( FString( FString { range: 236..244, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 238..243, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 239..242, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 239..240, value: Int( 1, @@ -320,6 +371,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 241..242, value: Int( 1, @@ -434,38 +486,47 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 276..310, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 276..310, value: FStringValue { inner: Single( FString( FString { range: 276..310, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 278..303, + node_index: AtomicNodeIndex(..), expression: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 279..302, value: FStringValue { inner: Single( FString( FString { range: 279..302, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 283..293, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 284..292, value: StringLiteralValue { inner: Single( StringLiteral { range: 284..292, + node_index: AtomicNodeIndex(..), value: "nested", flags: StringLiteralFlags { quote_style: Double, @@ -485,6 +546,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 293..299, + node_index: AtomicNodeIndex(..), value: " inner", }, ), @@ -508,6 +570,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 303..309, + node_index: AtomicNodeIndex(..), value: " outer", }, ), @@ -527,27 +590,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 336..359, value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 336..359, value: FStringValue { inner: Single( FString( FString { range: 336..359, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 338..343, + node_index: AtomicNodeIndex(..), value: "test ", }, ), Interpolation( InterpolatedElement { range: 343..353, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 344..345, id: Name("a"), ctx: Load, @@ -561,6 +630,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 353..358, + node_index: AtomicNodeIndex(..), value: " more", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep750_t_string_py314.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep750_t_string_py314.py.snap index 3d322265ab..6ad4b1584c 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep750_t_string_py314.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@pep750_t_string_py314.py.snap @@ -7,34 +7,42 @@ input_file: crates/ruff_python_parser/resources/inline/ok/pep750_t_string_py314. ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..403, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..74, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 44..74, value: TStringValue { inner: Single( TString( TString { range: 44..74, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 46..58, + node_index: AtomicNodeIndex(..), value: "Magic wand: ", }, ), Interpolation( InterpolatedElement { range: 58..73, + node_index: AtomicNodeIndex(..), expression: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 60..71, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 60..63, id: Name("bag"), ctx: Load, @@ -42,11 +50,13 @@ Module( ), slice: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 64..70, value: StringLiteralValue { inner: Single( StringLiteral { range: 64..70, + node_index: AtomicNodeIndex(..), value: "wand", flags: StringLiteralFlags { quote_style: Single, @@ -82,32 +92,40 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 95..112, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 95..112, value: TStringValue { inner: Single( TString( TString { range: 95..112, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 97..111, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 98..110, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 98..107, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 98..102, value: StringLiteralValue { inner: Single( StringLiteral { range: 98..102, + node_index: AtomicNodeIndex(..), value: "\n", flags: StringLiteralFlags { quote_style: Single, @@ -122,15 +140,18 @@ Module( attr: Identifier { id: Name("join"), range: 103..107, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 107..110, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..109, id: Name("a"), ctx: Load, @@ -162,30 +183,37 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 148..220, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 148..220, value: TStringValue { inner: Single( TString( TString { range: 148..220, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 152..169, + node_index: AtomicNodeIndex(..), value: "A complex trick: ", }, ), Interpolation( InterpolatedElement { range: 169..217, + node_index: AtomicNodeIndex(..), expression: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 175..185, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 175..178, id: Name("bag"), ctx: Load, @@ -193,11 +221,13 @@ Module( ), slice: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 179..184, value: StringLiteralValue { inner: Single( StringLiteral { range: 179..184, + node_index: AtomicNodeIndex(..), value: "bag", flags: StringLiteralFlags { quote_style: Single, @@ -233,84 +263,105 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 221..254, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 221..254, value: TStringValue { inner: Single( TString( TString { range: 221..254, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 223..253, + node_index: AtomicNodeIndex(..), expression: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 224..252, value: TStringValue { inner: Single( TString( TString { range: 224..252, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 226..251, + node_index: AtomicNodeIndex(..), expression: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 227..250, value: TStringValue { inner: Single( TString( TString { range: 227..250, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 229..249, + node_index: AtomicNodeIndex(..), expression: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 230..248, value: TStringValue { inner: Single( TString( TString { range: 230..248, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 232..247, + node_index: AtomicNodeIndex(..), expression: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 233..246, value: TStringValue { inner: Single( TString( TString { range: 233..246, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 235..245, + node_index: AtomicNodeIndex(..), expression: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 236..244, value: TStringValue { inner: Single( TString( TString { range: 236..244, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 238..243, + node_index: AtomicNodeIndex(..), expression: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 239..242, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 239..240, value: Int( 1, @@ -320,6 +371,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 241..242, value: Int( 1, @@ -434,38 +486,47 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 276..310, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 276..310, value: TStringValue { inner: Single( TString( TString { range: 276..310, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 278..303, + node_index: AtomicNodeIndex(..), expression: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 279..302, value: TStringValue { inner: Single( TString( TString { range: 279..302, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 283..293, + node_index: AtomicNodeIndex(..), expression: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 284..292, value: StringLiteralValue { inner: Single( StringLiteral { range: 284..292, + node_index: AtomicNodeIndex(..), value: "nested", flags: StringLiteralFlags { quote_style: Double, @@ -485,6 +546,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 293..299, + node_index: AtomicNodeIndex(..), value: " inner", }, ), @@ -508,6 +570,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 303..309, + node_index: AtomicNodeIndex(..), value: " outer", }, ), @@ -527,27 +590,33 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 336..359, value: TString( ExprTString { + node_index: AtomicNodeIndex(..), range: 336..359, value: TStringValue { inner: Single( TString( TString { range: 336..359, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 338..343, + node_index: AtomicNodeIndex(..), value: "test ", }, ), Interpolation( InterpolatedElement { range: 343..353, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 344..345, id: Name("a"), ctx: Load, @@ -561,6 +630,7 @@ Module( Literal( InterpolatedStringLiteralElement { range: 353..358, + node_index: AtomicNodeIndex(..), value: " more", }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@pos_only_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@pos_only_py38.py.snap index 2e5f4b9e98..69b218e419 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@pos_only_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@pos_only_py38.py.snap @@ -7,28 +7,37 @@ input_file: crates/ruff_python_parser/resources/inline/ok/pos_only_py38.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..62, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 43..61, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 47..50, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 50..56, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 51..52, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 51..52, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 51..52, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -44,9 +53,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..61, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@read_from_debug.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@read_from_debug.py.snap index 5bfd7c4128..7d3b052d80 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@read_from_debug.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@read_from_debug.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/read_from_debug.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..32, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..17, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..12, id: Name("__debug__"), ctx: Load, @@ -22,9 +25,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 14..17, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 14..17, }, ), @@ -36,10 +41,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 18..31, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("x"), ctx: Store, @@ -48,6 +55,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..31, id: Name("__debug__"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@simple_stmts_in_block.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@simple_stmts_in_block.py.snap index a819e56517..46c8be7e44 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@simple_stmts_in_block.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@simple_stmts_in_block.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/simple_stmts_in_block.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..84, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..13, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 3..7, value: true, }, @@ -22,6 +24,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 9..13, }, ), @@ -31,9 +34,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 14..27, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 17..21, value: true, }, @@ -41,6 +46,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 23..27, }, ), @@ -50,9 +56,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 29..52, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 32..36, value: true, }, @@ -60,11 +68,13 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 38..42, }, ), Continue( StmtContinue { + node_index: AtomicNodeIndex(..), range: 44..52, }, ), @@ -74,9 +84,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 53..76, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 56..60, value: true, }, @@ -84,11 +96,13 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 62..66, }, ), Continue( StmtContinue { + node_index: AtomicNodeIndex(..), range: 68..76, }, ), @@ -98,10 +112,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 78..83, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..79, id: Name("x"), ctx: Store, @@ -110,6 +126,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@simple_stmts_with_semicolons.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@simple_stmts_with_semicolons.py.snap index 2588cbfe76..41be29071f 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@simple_stmts_with_semicolons.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@simple_stmts_with_semicolons.py.snap @@ -1,30 +1,34 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/simple_stmts_with_semicolons.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..51, body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 0..6, value: None, }, ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 8..16, names: [ Alias { range: 15..16, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 15..16, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -33,19 +37,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 18..33, module: Some( Identifier { id: Name("x"), range: 23..24, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 32..33, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 32..33, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -55,9 +63,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 35..36, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("z"), ctx: Load, @@ -67,9 +77,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 38..50, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("T"), ctx: Store, @@ -78,6 +90,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..50, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@single_star_in_tuple.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@single_star_in_tuple.py.snap index ae3a5f8fc4..4c44c9cbb3 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@single_star_in_tuple.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@single_star_in_tuple.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/single_star_in_tuple.p ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..84, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..20, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 4..5, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 5..7, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -31,20 +37,25 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..20, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 9..20, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 15..20, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 16..18, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 17..18, id: Name("x"), ctx: Load, @@ -68,16 +79,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 21..42, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 25..26, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 26..28, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -88,17 +104,21 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 30..42, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 37..42, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 38..40, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("x"), ctx: Load, @@ -120,10 +140,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 43..62, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("_"), ctx: Store, @@ -131,13 +153,16 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 52..57, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 53..55, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..55, id: Name("x"), ctx: Load, @@ -154,9 +179,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 59..62, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 59..62, }, ), @@ -168,17 +195,21 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 63..83, is_async: false, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 67..72, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 68..70, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..70, id: Name("x"), ctx: Store, @@ -194,6 +225,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..78, id: Name("xs"), ctx: Load, @@ -202,9 +234,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 80..83, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 80..83, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@single_starred_assignment_target.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@single_starred_assignment_target.py.snap index bd1289f2b3..b202252533 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@single_starred_assignment_target.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@single_starred_assignment_target.py.snap @@ -7,21 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/single_starred_assignm ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..36, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..12, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 0..5, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 1..3, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2..3, id: Name("a"), ctx: Store, @@ -38,10 +43,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 8..12, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 9..10, value: Int( 1, @@ -57,17 +64,21 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 13..23, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 13..16, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 13..15, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("a"), ctx: Store, @@ -84,10 +95,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 19..23, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 20..21, value: Int( 1, @@ -103,17 +116,21 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 24..35, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 24..28, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 25..27, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("a"), ctx: Store, @@ -129,10 +146,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 31..35, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 32..33, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@star_index_py311.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@star_index_py311.py.snap index 241edaeadd..daf54439c2 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@star_index_py311.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@star_index_py311.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/ok/star_index_py311.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..293, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 44..55, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 44..55, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..47, id: Name("lst"), ctx: Load, @@ -24,13 +28,16 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 48..54, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 48..54, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..54, id: Name("index"), ctx: Load, @@ -51,22 +58,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 72..112, decorator_list: [], name: Identifier { id: Name("Array"), range: 78..83, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 83..107, + node_index: AtomicNodeIndex(..), args: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 84..106, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..91, id: Name("Generic"), ctx: Load, @@ -74,10 +86,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 92..105, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 92..97, id: Name("DType"), ctx: Load, @@ -85,9 +99,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 99..105, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..105, id: Name("Shape"), ctx: Load, @@ -111,9 +127,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 109..112, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 109..112, }, ), @@ -124,12 +142,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 148..161, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 148..161, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 148..151, id: Name("lst"), ctx: Load, @@ -137,10 +158,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 152..160, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 152..153, id: Name("a"), ctx: Load, @@ -148,9 +171,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 155..157, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 156..157, id: Name("b"), ctx: Load, @@ -161,6 +186,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 159..160, id: Name("c"), ctx: Load, @@ -178,12 +204,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 185..198, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 185..198, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 185..188, id: Name("lst"), ctx: Load, @@ -191,10 +220,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 189..197, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("a"), ctx: Load, @@ -202,6 +233,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 192..193, id: Name("b"), ctx: Load, @@ -209,9 +241,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 195..197, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 196..197, id: Name("c"), ctx: Load, @@ -232,12 +266,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 222..233, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 222..233, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 222..225, id: Name("lst"), ctx: Load, @@ -245,13 +282,16 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 226..232, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 226..228, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 227..228, id: Name("a"), ctx: Load, @@ -262,9 +302,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 230..232, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 231..232, id: Name("b"), ctx: Load, @@ -285,12 +327,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 254..271, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 254..271, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 254..259, id: Name("array"), ctx: Load, @@ -298,14 +343,17 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 260..270, elts: [ Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 260..263, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 260..261, value: Int( 3, @@ -316,6 +364,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 262..263, value: Int( 5, @@ -328,9 +377,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 265..270, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 266..270, id: Name("idxs"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__ambiguous_lpar_with_items.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__ambiguous_lpar_with_items.py.snap index b651e7c557..df0e3f80ed 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__ambiguous_lpar_with_items.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__ambiguous_lpar_with_items.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/valid/statement/ambiguous_lpar_w ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..3620, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 588..604, is_async: false, items: [ WithItem { range: 594..598, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 594..598, id: Name("item"), ctx: Load, @@ -29,9 +33,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 601..604, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 601..604, }, ), @@ -42,13 +48,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 605..622, is_async: false, items: [ WithItem { range: 611..615, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 611..615, id: Name("item"), ctx: Load, @@ -60,9 +69,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 619..622, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 619..622, }, ), @@ -73,13 +84,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 648..668, is_async: false, items: [ WithItem { range: 654..662, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 656..660, id: Name("item"), ctx: Load, @@ -91,9 +105,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 665..668, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 665..668, }, ), @@ -104,13 +120,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 669..693, is_async: false, items: [ WithItem { range: 675..680, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 675..680, id: Name("item1"), ctx: Load, @@ -120,8 +139,10 @@ Module( }, WithItem { range: 682..687, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 682..687, id: Name("item2"), ctx: Load, @@ -133,9 +154,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 690..693, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 690..693, }, ), @@ -146,13 +169,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 694..719, is_async: false, items: [ WithItem { range: 700..705, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 700..705, id: Name("item1"), ctx: Load, @@ -162,8 +188,10 @@ Module( }, WithItem { range: 707..712, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 707..712, id: Name("item2"), ctx: Load, @@ -175,9 +203,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 716..719, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 716..719, }, ), @@ -188,13 +218,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 745..794, is_async: false, items: [ WithItem { range: 751..758, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 752..757, id: Name("item1"), ctx: Load, @@ -204,8 +237,10 @@ Module( }, WithItem { range: 760..767, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 761..766, id: Name("item2"), ctx: Load, @@ -215,8 +250,10 @@ Module( }, WithItem { range: 769..779, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 769..774, id: Name("item3"), ctx: Load, @@ -225,6 +262,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 778..779, id: Name("f"), ctx: Store, @@ -234,8 +272,10 @@ Module( }, WithItem { range: 781..788, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 782..787, id: Name("item4"), ctx: Load, @@ -247,9 +287,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 791..794, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 791..794, }, ), @@ -260,17 +302,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 795..828, is_async: false, items: [ WithItem { range: 801..815, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 801..815, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 802..807, id: Name("item1"), ctx: Load, @@ -278,6 +324,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 809..814, id: Name("item2"), ctx: Load, @@ -292,8 +339,10 @@ Module( }, WithItem { range: 817..822, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 817..822, id: Name("item3"), ctx: Load, @@ -305,9 +354,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 825..828, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 825..828, }, ), @@ -318,17 +369,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 829..852, is_async: false, items: [ WithItem { range: 835..846, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 835..841, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 836..837, id: Name("x"), ctx: Load, @@ -336,6 +391,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 839..840, id: Name("y"), ctx: Load, @@ -349,6 +405,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 845..846, id: Name("f"), ctx: Store, @@ -360,9 +417,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 849..852, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 849..852, }, ), @@ -373,13 +432,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 853..889, is_async: false, items: [ WithItem { range: 859..870, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 859..864, id: Name("item1"), ctx: Load, @@ -388,6 +450,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 868..870, id: Name("f1"), ctx: Store, @@ -397,8 +460,10 @@ Module( }, WithItem { range: 872..883, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 872..877, id: Name("item2"), ctx: Load, @@ -407,6 +472,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 881..883, id: Name("f2"), ctx: Store, @@ -418,9 +484,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 886..889, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 886..889, }, ), @@ -431,13 +499,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 890..927, is_async: false, items: [ WithItem { range: 896..907, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 896..901, id: Name("item1"), ctx: Load, @@ -446,6 +517,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 905..907, id: Name("f1"), ctx: Store, @@ -455,8 +527,10 @@ Module( }, WithItem { range: 909..920, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 909..914, id: Name("item2"), ctx: Load, @@ -465,6 +539,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 918..920, id: Name("f2"), ctx: Store, @@ -476,9 +551,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 924..927, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 924..927, }, ), @@ -489,16 +566,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 953..976, is_async: false, items: [ WithItem { range: 959..969, + node_index: AtomicNodeIndex(..), context_expr: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 959..969, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 959..963, id: Name("item"), ctx: Load, @@ -510,6 +591,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 967..969, value: Int( 10, @@ -525,9 +607,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 973..976, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 973..976, }, ), @@ -538,16 +622,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 977..1001, is_async: false, items: [ WithItem { range: 983..995, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 984..994, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 984..988, id: Name("item"), ctx: Store, @@ -555,6 +643,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 992..994, value: Int( 10, @@ -569,9 +658,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 998..1001, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 998..1001, }, ), @@ -582,20 +673,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1002..1027, is_async: false, items: [ WithItem { range: 1008..1021, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1008..1021, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1009..1019, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1009..1013, id: Name("item"), ctx: Store, @@ -603,6 +699,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1017..1019, value: Int( 10, @@ -622,9 +719,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1024..1027, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1024..1027, }, ), @@ -635,20 +734,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1028..1048, is_async: false, items: [ WithItem { range: 1034..1042, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1034..1042, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 1035..1040, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1036..1040, id: Name("item"), ctx: Load, @@ -668,9 +772,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1045..1048, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1045..1048, }, ), @@ -681,16 +787,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1049..1081, is_async: false, items: [ WithItem { range: 1055..1068, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1056..1067, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1056..1061, id: Name("item1"), ctx: Store, @@ -698,6 +808,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1065..1067, value: Int( 10, @@ -710,8 +821,10 @@ Module( }, WithItem { range: 1070..1075, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1070..1075, id: Name("item2"), ctx: Load, @@ -723,9 +836,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1078..1081, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1078..1081, }, ), @@ -736,13 +851,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1082..1119, is_async: false, items: [ WithItem { range: 1088..1098, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1088..1093, id: Name("item1"), ctx: Load, @@ -751,6 +869,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1097..1098, id: Name("f"), ctx: Store, @@ -760,11 +879,14 @@ Module( }, WithItem { range: 1100..1113, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1101..1112, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1101..1106, id: Name("item2"), ctx: Store, @@ -772,6 +894,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1110..1112, value: Int( 10, @@ -786,9 +909,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1116..1119, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1116..1119, }, ), @@ -799,16 +924,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1120..1137, is_async: false, items: [ WithItem { range: 1126..1131, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1126..1131, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1126..1129, id: Name("foo"), ctx: Load, @@ -816,6 +945,7 @@ Module( ), arguments: Arguments { range: 1129..1131, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -827,9 +957,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1134..1137, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1134..1137, }, ), @@ -840,16 +972,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1138..1156, is_async: false, items: [ WithItem { range: 1144..1149, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1144..1149, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1144..1147, id: Name("foo"), ctx: Load, @@ -857,6 +993,7 @@ Module( ), arguments: Arguments { range: 1147..1149, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -868,9 +1005,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1153..1156, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1153..1156, }, ), @@ -881,16 +1020,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1157..1179, is_async: false, items: [ WithItem { range: 1163..1173, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1163..1168, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1163..1166, id: Name("foo"), ctx: Load, @@ -898,6 +1041,7 @@ Module( ), arguments: Arguments { range: 1166..1168, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -906,6 +1050,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1172..1173, id: Name("f"), ctx: Store, @@ -917,9 +1062,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1176..1179, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1176..1179, }, ), @@ -930,25 +1077,31 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1180..1207, is_async: false, items: [ WithItem { range: 1186..1201, + node_index: AtomicNodeIndex(..), context_expr: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 1186..1201, value: FStringValue { inner: Single( FString( FString { range: 1186..1201, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1188..1200, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1189..1193, id: Name("item"), ctx: Load, @@ -959,10 +1112,12 @@ Module( format_spec: Some( InterpolatedStringFormatSpec { range: 1195..1199, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 1195..1199, + node_index: AtomicNodeIndex(..), value: "= 42", }, ), @@ -989,9 +1144,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1204..1207, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1204..1207, }, ), @@ -1002,28 +1159,35 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1208..1237, is_async: false, items: [ WithItem { range: 1214..1231, + node_index: AtomicNodeIndex(..), context_expr: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 1214..1231, value: FStringValue { inner: Single( FString( FString { range: 1214..1231, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 1216..1230, + node_index: AtomicNodeIndex(..), expression: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1218..1228, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1218..1222, id: Name("item"), ctx: Store, @@ -1031,6 +1195,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1226..1228, value: Int( 42, @@ -1062,9 +1227,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1234..1237, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1234..1237, }, ), @@ -1075,16 +1242,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1238..1278, is_async: false, items: [ WithItem { range: 1244..1266, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 1244..1266, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1245..1246, id: Name("x"), ctx: Load, @@ -1093,8 +1264,10 @@ Module( generators: [ Comprehension { range: 1247..1265, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1251..1252, id: Name("x"), ctx: Store, @@ -1102,9 +1275,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1256..1265, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1256..1261, id: Name("range"), ctx: Load, @@ -1112,9 +1287,11 @@ Module( ), arguments: Arguments { range: 1261..1265, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1262..1264, value: Int( 10, @@ -1137,8 +1314,10 @@ Module( }, WithItem { range: 1268..1272, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1268..1272, id: Name("item"), ctx: Load, @@ -1150,9 +1329,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1275..1278, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1275..1278, }, ), @@ -1163,13 +1344,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1279..1319, is_async: false, items: [ WithItem { range: 1285..1289, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1285..1289, id: Name("item"), ctx: Load, @@ -1179,11 +1363,14 @@ Module( }, WithItem { range: 1291..1313, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 1291..1313, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1292..1293, id: Name("x"), ctx: Load, @@ -1192,8 +1379,10 @@ Module( generators: [ Comprehension { range: 1294..1312, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1298..1299, id: Name("x"), ctx: Store, @@ -1201,9 +1390,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1303..1312, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1303..1308, id: Name("range"), ctx: Load, @@ -1211,9 +1402,11 @@ Module( ), arguments: Arguments { range: 1308..1312, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1309..1311, value: Int( 10, @@ -1238,9 +1431,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1316..1319, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1316..1319, }, ), @@ -1251,13 +1446,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1320..1366, is_async: false, items: [ WithItem { range: 1326..1330, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1326..1330, id: Name("item"), ctx: Load, @@ -1267,11 +1465,14 @@ Module( }, WithItem { range: 1332..1354, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 1332..1354, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1333..1334, id: Name("x"), ctx: Load, @@ -1280,8 +1481,10 @@ Module( generators: [ Comprehension { range: 1335..1353, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1339..1340, id: Name("x"), ctx: Store, @@ -1289,9 +1492,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1344..1353, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1344..1349, id: Name("range"), ctx: Load, @@ -1299,9 +1504,11 @@ Module( ), arguments: Arguments { range: 1349..1353, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1350..1352, value: Int( 10, @@ -1324,8 +1531,10 @@ Module( }, WithItem { range: 1356..1360, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1356..1360, id: Name("item"), ctx: Load, @@ -1337,9 +1546,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1363..1366, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1363..1366, }, ), @@ -1350,16 +1561,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1367..1388, is_async: false, items: [ WithItem { range: 1373..1382, + node_index: AtomicNodeIndex(..), context_expr: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1373..1382, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1373..1377, id: Name("data"), ctx: Load, @@ -1367,10 +1582,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 1378..1381, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1378..1379, value: Int( 1, @@ -1381,6 +1598,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1380..1381, value: Int( 2, @@ -1400,9 +1618,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1385..1388, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1385..1388, }, ), @@ -1413,16 +1633,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1389..1415, is_async: false, items: [ WithItem { range: 1395..1409, + node_index: AtomicNodeIndex(..), context_expr: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1395..1404, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1395..1399, id: Name("data"), ctx: Load, @@ -1430,10 +1654,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 1400..1403, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1400..1401, value: Int( 1, @@ -1444,6 +1670,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1402..1403, value: Int( 2, @@ -1460,6 +1687,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1408..1409, id: Name("f"), ctx: Store, @@ -1471,9 +1699,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1412..1415, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1412..1415, }, ), @@ -1484,16 +1714,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1416..1450, is_async: false, items: [ WithItem { range: 1422..1444, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 1422..1439, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1423..1424, id: Name("x"), ctx: Load, @@ -1502,8 +1736,10 @@ Module( generators: [ Comprehension { range: 1425..1438, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1429..1430, id: Name("x"), ctx: Store, @@ -1511,6 +1747,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1434..1438, id: Name("iter"), ctx: Load, @@ -1526,6 +1763,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1443..1444, id: Name("y"), ctx: Store, @@ -1537,9 +1775,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1447..1450, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1447..1450, }, ), @@ -1550,13 +1790,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1663..1684, is_async: false, items: [ WithItem { range: 1668..1679, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1669..1673, id: Name("item"), ctx: Load, @@ -1565,6 +1808,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1678..1679, id: Name("f"), ctx: Store, @@ -1576,9 +1820,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1681..1684, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1681..1684, }, ), @@ -1589,16 +1835,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1685..1707, is_async: false, items: [ WithItem { range: 1690..1702, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1691..1701, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1691..1695, id: Name("item"), ctx: Store, @@ -1606,6 +1856,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1699..1701, value: Int( 10, @@ -1620,9 +1871,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1704..1707, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1704..1707, }, ), @@ -1633,16 +1886,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1708..1735, is_async: false, items: [ WithItem { range: 1713..1730, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1714..1724, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1714..1718, id: Name("item"), ctx: Store, @@ -1650,6 +1907,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1722..1724, value: Int( 10, @@ -1661,6 +1919,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1729..1730, id: Name("f"), ctx: Store, @@ -1672,9 +1931,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1732..1735, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1732..1735, }, ), @@ -1685,16 +1946,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1736..1762, is_async: false, items: [ WithItem { range: 1741..1757, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1744..1753, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1744..1748, id: Name("item"), ctx: Store, @@ -1702,6 +1967,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1752..1753, value: Int( 1, @@ -1716,9 +1982,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1759..1762, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1759..1762, }, ), @@ -1729,16 +1997,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1763..1793, is_async: false, items: [ WithItem { range: 1768..1781, + node_index: AtomicNodeIndex(..), context_expr: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1769..1780, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1769..1774, id: Name("item1"), ctx: Store, @@ -1746,6 +2018,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1778..1780, value: Int( 42, @@ -1758,8 +2031,10 @@ Module( }, WithItem { range: 1783..1788, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1783..1788, id: Name("item2"), ctx: Load, @@ -1771,9 +2046,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1790..1793, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1790..1793, }, ), @@ -1784,22 +2061,28 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1794..1828, is_async: false, items: [ WithItem { range: 1799..1823, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1799..1823, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1799..1821, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1800..1815, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1800..1804, id: Name("root"), ctx: Load, @@ -1808,6 +2091,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1807..1815, id: Name("filename"), ctx: Load, @@ -1818,12 +2102,14 @@ Module( attr: Identifier { id: Name("read"), range: 1817..1821, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 1821..1823, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1835,9 +2121,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1825..1828, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1825..1828, }, ), @@ -1848,22 +2136,28 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1851..1890, is_async: false, items: [ WithItem { range: 1856..1885, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1856..1880, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1856..1878, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1857..1872, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1857..1861, id: Name("root"), ctx: Load, @@ -1872,6 +2166,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1864..1872, id: Name("filename"), ctx: Load, @@ -1882,12 +2177,14 @@ Module( attr: Identifier { id: Name("read"), range: 1874..1878, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 1878..1880, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1896,6 +2193,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1884..1885, id: Name("f"), ctx: Store, @@ -1907,9 +2205,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1887..1890, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1887..1890, }, ), @@ -1920,16 +2220,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1913..1930, is_async: false, items: [ WithItem { range: 1918..1925, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1918..1925, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1919..1922, id: Name("foo"), ctx: Load, @@ -1937,6 +2241,7 @@ Module( ), arguments: Arguments { range: 1923..1925, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1948,9 +2253,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1927..1930, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1927..1930, }, ), @@ -1961,16 +2268,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1953..1975, is_async: false, items: [ WithItem { range: 1958..1970, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1958..1965, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1959..1962, id: Name("foo"), ctx: Load, @@ -1978,6 +2289,7 @@ Module( ), arguments: Arguments { range: 1963..1965, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1986,6 +2298,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1969..1970, id: Name("f"), ctx: Store, @@ -1997,9 +2310,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1972..1975, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1972..1975, }, ), @@ -2010,16 +2325,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 1998..2020, is_async: false, items: [ WithItem { range: 2003..2015, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 2004..2009, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2004..2007, id: Name("foo"), ctx: Load, @@ -2027,6 +2346,7 @@ Module( ), arguments: Arguments { range: 2007..2009, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -2035,6 +2355,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2014..2015, id: Name("f"), ctx: Store, @@ -2046,9 +2367,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2017..2020, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2017..2020, }, ), @@ -2059,16 +2382,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2021..2047, is_async: false, items: [ WithItem { range: 2026..2042, + node_index: AtomicNodeIndex(..), context_expr: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 2027..2036, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2027..2031, id: Name("data"), ctx: Load, @@ -2076,10 +2403,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 2032..2035, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2032..2033, value: Int( 1, @@ -2090,6 +2419,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2034..2035, value: Int( 2, @@ -2106,6 +2436,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2041..2042, id: Name("f"), ctx: Store, @@ -2117,9 +2448,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2044..2047, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2044..2047, }, ), @@ -2130,20 +2463,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2048..2070, is_async: false, items: [ WithItem { range: 2053..2065, + node_index: AtomicNodeIndex(..), context_expr: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 2053..2065, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2053..2062, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2054..2055, value: Int( 1, @@ -2152,6 +2490,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2057..2058, value: Int( 2, @@ -2160,6 +2499,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2060..2061, value: Int( 3, @@ -2173,6 +2513,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2063..2064, value: Int( 0, @@ -2188,9 +2529,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2067..2070, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2067..2070, }, ), @@ -2201,20 +2544,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2093..2120, is_async: false, items: [ WithItem { range: 2098..2115, + node_index: AtomicNodeIndex(..), context_expr: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 2098..2110, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2098..2107, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2099..2100, value: Int( 1, @@ -2223,6 +2571,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2102..2103, value: Int( 2, @@ -2231,6 +2580,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2105..2106, value: Int( 3, @@ -2244,6 +2594,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2108..2109, value: Int( 0, @@ -2256,6 +2607,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2114..2115, id: Name("f"), ctx: Store, @@ -2267,9 +2619,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2117..2120, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2117..2120, }, ), @@ -2280,13 +2634,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2143..2169, is_async: false, items: [ WithItem { range: 2148..2155, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2149..2154, id: Name("item1"), ctx: Load, @@ -2296,8 +2653,10 @@ Module( }, WithItem { range: 2157..2164, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2158..2163, id: Name("item2"), ctx: Load, @@ -2309,9 +2668,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2166..2169, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2166..2169, }, ), @@ -2322,16 +2683,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2170..2210, is_async: false, items: [ WithItem { range: 2175..2189, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 2176..2188, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2176..2180, id: Name("open"), ctx: Load, @@ -2339,14 +2704,17 @@ Module( ), arguments: Arguments { range: 2180..2188, + node_index: AtomicNodeIndex(..), args: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 2181..2187, value: StringLiteralValue { inner: Single( StringLiteral { range: 2181..2187, + node_index: AtomicNodeIndex(..), value: "a.py", flags: StringLiteralFlags { quote_style: Single, @@ -2367,11 +2735,14 @@ Module( }, WithItem { range: 2191..2205, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 2192..2204, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2192..2196, id: Name("open"), ctx: Load, @@ -2379,14 +2750,17 @@ Module( ), arguments: Arguments { range: 2196..2204, + node_index: AtomicNodeIndex(..), args: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 2197..2203, value: StringLiteralValue { inner: Single( StringLiteral { range: 2197..2203, + node_index: AtomicNodeIndex(..), value: "b.py", flags: StringLiteralFlags { quote_style: Single, @@ -2409,9 +2783,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2207..2210, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2207..2210, }, ), @@ -2422,17 +2798,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2211..2230, is_async: false, items: [ WithItem { range: 2216..2225, + node_index: AtomicNodeIndex(..), context_expr: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 2217..2224, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2223..2224, id: Name("x"), ctx: Load, @@ -2447,9 +2827,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2227..2230, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2227..2230, }, ), @@ -2460,17 +2842,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2231..2252, is_async: false, items: [ WithItem { range: 2237..2246, + node_index: AtomicNodeIndex(..), context_expr: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 2238..2245, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2244..2245, id: Name("x"), ctx: Load, @@ -2485,9 +2871,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2249..2252, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2249..2252, }, ), @@ -2498,16 +2886,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2253..2277, is_async: false, items: [ WithItem { range: 2258..2272, + node_index: AtomicNodeIndex(..), context_expr: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 2259..2271, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2270..2271, id: Name("x"), ctx: Load, @@ -2521,9 +2913,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2274..2277, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2274..2277, }, ), @@ -2534,16 +2928,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2278..2304, is_async: false, items: [ WithItem { range: 2284..2298, + node_index: AtomicNodeIndex(..), context_expr: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 2285..2297, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2296..2297, id: Name("x"), ctx: Load, @@ -2557,9 +2955,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2301..2304, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2301..2304, }, ), @@ -2570,17 +2970,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2305..2329, is_async: false, items: [ WithItem { range: 2310..2324, + node_index: AtomicNodeIndex(..), context_expr: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 2311..2318, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2317..2318, id: Name("x"), ctx: Load, @@ -2592,6 +2996,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2323..2324, id: Name("f"), ctx: Store, @@ -2603,9 +3008,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2326..2329, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2326..2329, }, ), @@ -2616,21 +3023,26 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2330..2355, is_async: false, items: [ WithItem { range: 2335..2350, + node_index: AtomicNodeIndex(..), context_expr: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 2336..2344, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2342..2344, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2342..2343, id: Name("x"), ctx: Load, @@ -2647,6 +3059,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2349..2350, id: Name("f"), ctx: Store, @@ -2658,9 +3071,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2352..2355, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2352..2355, }, ), @@ -2671,13 +3086,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2741..2753, is_async: false, items: [ WithItem { range: 2746..2748, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2746..2748, elts: [], ctx: Load, @@ -2690,9 +3108,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2750..2753, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2750..2753, }, ), @@ -2703,13 +3123,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2754..2771, is_async: false, items: [ WithItem { range: 2759..2766, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2759..2761, elts: [], ctx: Load, @@ -2719,6 +3142,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2765..2766, id: Name("f"), ctx: Store, @@ -2730,9 +3154,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2768..2771, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2768..2771, }, ), @@ -2743,20 +3169,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2772..2795, is_async: false, items: [ WithItem { range: 2777..2790, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2777..2790, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 2778..2788, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2778..2782, id: Name("item"), ctx: Store, @@ -2764,6 +3195,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2786..2788, value: Int( 42, @@ -2783,9 +3215,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2792..2795, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2792..2795, }, ), @@ -2796,17 +3230,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2796..2820, is_async: false, items: [ WithItem { range: 2801..2815, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2801..2815, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2802..2803, value: Int( 1, @@ -2815,9 +3253,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 2805..2814, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2805..2809, id: Name("item"), ctx: Store, @@ -2825,6 +3265,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2813..2814, value: Int( 2, @@ -2844,9 +3285,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2817..2820, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2817..2820, }, ), @@ -2857,20 +3300,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2821..2851, is_async: false, items: [ WithItem { range: 2826..2846, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2826..2846, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 2827..2838, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2827..2832, id: Name("item1"), ctx: Store, @@ -2878,6 +3326,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2836..2838, value: Int( 10, @@ -2888,6 +3337,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2840..2845, id: Name("item2"), ctx: Load, @@ -2904,9 +3354,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2848..2851, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2848..2851, }, ), @@ -2917,17 +3369,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2852..2893, is_async: false, items: [ WithItem { range: 2857..2888, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2857..2883, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2858..2863, id: Name("item1"), ctx: Load, @@ -2935,9 +3391,11 @@ Module( ), Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 2865..2875, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2865..2870, id: Name("item2"), ctx: Store, @@ -2945,6 +3403,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2874..2875, value: Int( 2, @@ -2955,6 +3414,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2877..2882, id: Name("item3"), ctx: Load, @@ -2968,6 +3428,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2887..2888, id: Name("f"), ctx: Store, @@ -2979,9 +3440,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2890..2893, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2890..2893, }, ), @@ -2992,17 +3455,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2894..2916, is_async: false, items: [ WithItem { range: 2899..2911, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2899..2906, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2900..2904, id: Name("item"), ctx: Load, @@ -3016,6 +3483,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2910..2911, id: Name("f"), ctx: Store, @@ -3027,9 +3495,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2913..2916, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2913..2916, }, ), @@ -3040,20 +3510,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2917..2935, is_async: false, items: [ WithItem { range: 2922..2930, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2922..2930, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 2923..2928, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2924..2928, id: Name("item"), ctx: Load, @@ -3073,9 +3548,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2932..2935, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2932..2935, }, ), @@ -3086,20 +3563,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2936..2959, is_async: false, items: [ WithItem { range: 2941..2954, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2941..2949, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 2942..2947, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2943..2947, id: Name("item"), ctx: Load, @@ -3116,6 +3598,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2953..2954, id: Name("f"), ctx: Store, @@ -3127,9 +3610,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2956..2959, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2956..2959, }, ), @@ -3140,17 +3625,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2960..2989, is_async: false, items: [ WithItem { range: 2965..2984, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2965..2979, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2966..2971, id: Name("item1"), ctx: Load, @@ -3158,6 +3647,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2973..2978, id: Name("item2"), ctx: Load, @@ -3171,6 +3661,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2983..2984, id: Name("f"), ctx: Store, @@ -3182,9 +3673,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2986..2989, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2986..2989, }, ), @@ -3195,17 +3688,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 2990..3020, is_async: false, items: [ WithItem { range: 2995..3015, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2995..3010, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2996..3001, id: Name("item1"), ctx: Load, @@ -3213,6 +3710,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3003..3008, id: Name("item2"), ctx: Load, @@ -3226,6 +3724,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3014..3015, id: Name("f"), ctx: Store, @@ -3237,9 +3736,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3017..3020, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3017..3020, }, ), @@ -3250,17 +3751,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3021..3052, is_async: false, items: [ WithItem { range: 3026..3040, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3026..3040, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3027..3032, id: Name("item1"), ctx: Load, @@ -3268,6 +3773,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3034..3039, id: Name("item2"), ctx: Load, @@ -3282,8 +3788,10 @@ Module( }, WithItem { range: 3042..3047, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3042..3047, id: Name("item3"), ctx: Load, @@ -3295,9 +3803,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3049..3052, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3049..3052, }, ), @@ -3308,21 +3818,26 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3053..3091, is_async: false, items: [ WithItem { range: 3058..3086, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3058..3081, elts: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3059..3073, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3060..3065, id: Name("item1"), ctx: Load, @@ -3330,6 +3845,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3067..3072, id: Name("item2"), ctx: Load, @@ -3342,6 +3858,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3075..3080, id: Name("item3"), ctx: Load, @@ -3355,6 +3872,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3085..3086, id: Name("f"), ctx: Store, @@ -3366,9 +3884,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3088..3091, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3088..3091, }, ), @@ -3379,17 +3899,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3092..3138, is_async: false, items: [ WithItem { range: 3097..3105, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3097..3105, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3098..3103, id: Name("item1"), ctx: Load, @@ -3404,8 +3928,10 @@ Module( }, WithItem { range: 3107..3112, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3107..3112, id: Name("item2"), ctx: Load, @@ -3415,12 +3941,15 @@ Module( }, WithItem { range: 3114..3133, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3114..3128, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3115..3120, id: Name("item3"), ctx: Load, @@ -3428,6 +3957,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3122..3127, id: Name("item4"), ctx: Load, @@ -3441,6 +3971,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3132..3133, id: Name("f"), ctx: Store, @@ -3452,9 +3983,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3135..3138, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3135..3138, }, ), @@ -3465,17 +3998,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3139..3182, is_async: false, items: [ WithItem { range: 3144..3164, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3144..3158, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3145..3150, id: Name("item1"), ctx: Load, @@ -3483,6 +4020,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3152..3157, id: Name("item2"), ctx: Load, @@ -3496,6 +4034,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3162..3164, id: Name("f1"), ctx: Store, @@ -3505,8 +4044,10 @@ Module( }, WithItem { range: 3166..3177, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3166..3171, id: Name("item3"), ctx: Load, @@ -3515,6 +4056,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3175..3177, id: Name("f2"), ctx: Store, @@ -3526,9 +4068,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3179..3182, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3179..3182, }, ), @@ -3539,17 +4083,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3183..3208, is_async: false, items: [ WithItem { range: 3188..3203, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3188..3203, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3189..3194, id: Name("item1"), ctx: Load, @@ -3557,9 +4105,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 3196..3202, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3197..3202, id: Name("item2"), ctx: Load, @@ -3579,9 +4129,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3205..3208, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3205..3208, }, ), @@ -3592,17 +4144,21 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3209..3239, is_async: false, items: [ WithItem { range: 3214..3234, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3214..3229, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3215..3220, id: Name("item1"), ctx: Load, @@ -3610,9 +4166,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 3222..3228, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3223..3228, id: Name("item2"), ctx: Load, @@ -3629,6 +4187,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3233..3234, id: Name("f"), ctx: Store, @@ -3640,9 +4199,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3236..3239, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3236..3239, }, ), @@ -3653,20 +4214,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3240..3271, is_async: false, items: [ WithItem { range: 3245..3266, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3245..3266, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 3246..3257, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3246..3251, id: Name("item1"), ctx: Store, @@ -3674,6 +4240,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3255..3257, value: Int( 10, @@ -3684,9 +4251,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 3259..3265, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3260..3265, id: Name("item2"), ctx: Load, @@ -3706,9 +4275,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3268..3271, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3268..3271, }, ), @@ -3719,20 +4290,25 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3272..3305, is_async: false, items: [ WithItem { range: 3277..3300, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3277..3300, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 3279..3290, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3279..3284, id: Name("item1"), ctx: Store, @@ -3740,6 +4316,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3288..3290, value: Int( 10, @@ -3750,9 +4327,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 3293..3299, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3294..3299, id: Name("item2"), ctx: Load, @@ -3772,9 +4351,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3302..3305, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3302..3305, }, ), @@ -3785,16 +4366,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3510..3542, is_async: false, items: [ WithItem { range: 3515..3537, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 3515..3537, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3516..3517, id: Name("x"), ctx: Load, @@ -3803,8 +4388,10 @@ Module( generators: [ Comprehension { range: 3518..3536, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3522..3523, id: Name("x"), ctx: Store, @@ -3812,9 +4399,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 3527..3536, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3527..3532, id: Name("range"), ctx: Load, @@ -3822,9 +4411,11 @@ Module( ), arguments: Arguments { range: 3532..3536, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3533..3535, value: Int( 10, @@ -3849,9 +4440,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3539..3542, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3539..3542, }, ), @@ -3862,16 +4455,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3543..3581, is_async: false, items: [ WithItem { range: 3548..3576, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 3548..3576, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3549..3550, id: Name("x"), ctx: Load, @@ -3880,8 +4477,10 @@ Module( generators: [ Comprehension { range: 3551..3575, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3561..3562, id: Name("x"), ctx: Store, @@ -3889,9 +4488,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 3566..3575, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3566..3571, id: Name("range"), ctx: Load, @@ -3899,9 +4500,11 @@ Module( ), arguments: Arguments { range: 3571..3575, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3572..3574, value: Int( 10, @@ -3926,9 +4529,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3578..3581, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3578..3581, }, ), @@ -3939,16 +4544,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 3582..3620, is_async: false, items: [ WithItem { range: 3587..3609, + node_index: AtomicNodeIndex(..), context_expr: Generator( ExprGenerator { + node_index: AtomicNodeIndex(..), range: 3587..3609, elt: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3588..3589, id: Name("x"), ctx: Load, @@ -3957,8 +4566,10 @@ Module( generators: [ Comprehension { range: 3590..3608, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3594..3595, id: Name("x"), ctx: Store, @@ -3966,9 +4577,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 3599..3608, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3599..3604, id: Name("range"), ctx: Load, @@ -3976,9 +4589,11 @@ Module( ), arguments: Arguments { range: 3604..3608, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3605..3607, value: Int( 10, @@ -4001,8 +4616,10 @@ Module( }, WithItem { range: 3611..3615, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3611..3615, id: Name("item"), ctx: Load, @@ -4014,9 +4631,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3617..3620, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3617..3620, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__annotated_assignment.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__annotated_assignment.py.snap index 493f3ba3d1..4f2c579ca3 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__annotated_assignment.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__annotated_assignment.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/annotated_assignment.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..103, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 0..6, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -22,6 +24,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3..6, id: Name("int"), ctx: Load, @@ -33,9 +36,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 7..17, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Store, @@ -43,6 +48,7 @@ Module( ), annotation: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 10..13, id: Name("int"), ctx: Load, @@ -51,6 +57,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 16..17, value: Int( 1, @@ -63,9 +70,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 18..28, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("x"), ctx: Store, @@ -73,9 +82,11 @@ Module( ), annotation: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 23..28, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 23..24, value: Int( 1, @@ -85,6 +96,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 27..28, value: Int( 2, @@ -99,9 +111,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 29..55, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("x"), ctx: Store, @@ -109,12 +123,15 @@ Module( ), annotation: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 32..48, left: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 32..42, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..37, id: Name("tuple"), ctx: Load, @@ -122,6 +139,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..41, id: Name("int"), ctx: Load, @@ -133,6 +151,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 45..48, id: Name("int"), ctx: Load, @@ -143,10 +162,12 @@ Module( value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 51..55, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 52..53, value: Int( 1, @@ -164,9 +185,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 56..83, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Store, @@ -174,15 +197,18 @@ Module( ), annotation: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 59..79, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 66..70, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..62, id: Name("int"), ctx: Load, @@ -190,6 +216,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..79, id: Name("str"), ctx: Load, @@ -200,6 +227,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 82..83, value: Int( 1, @@ -212,9 +240,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 84..102, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..85, id: Name("x"), ctx: Store, @@ -222,19 +252,26 @@ Module( ), annotation: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 87..98, parameters: Some( Parameters { range: 94..95, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 94..95, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 94..95, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 94..95, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -248,6 +285,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 97..98, id: Name("y"), ctx: Load, @@ -258,6 +296,7 @@ Module( value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 101..102, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__assert.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__assert.py.snap index 1dce325d01..e73517455e 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__assert.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__assert.py.snap @@ -1,23 +1,26 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/assert.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..186, body: [ Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 0..12, test: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 7..12, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 7..8, value: Int( 1, @@ -30,6 +33,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 11..12, value: Int( 2, @@ -44,12 +48,15 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 13..26, test: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 20..26, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..24, id: Name("call"), ctx: Load, @@ -57,6 +64,7 @@ Module( ), arguments: Arguments { range: 24..26, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -67,14 +75,17 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 27..41, test: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 34..41, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..35, id: Name("a"), ctx: Load, @@ -82,6 +93,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 40..41, id: Name("b"), ctx: Load, @@ -95,22 +107,30 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 42..60, test: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 49..60, parameters: Some( Parameters { range: 56..57, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 56..57, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 56..57, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 56..57, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -124,6 +144,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("y"), ctx: Load, @@ -136,12 +157,15 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 61..75, test: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 68..75, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..75, id: Name("x"), ctx: Load, @@ -154,18 +178,22 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 76..99, test: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 83..99, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 88..92, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("x"), ctx: Load, @@ -173,6 +201,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("y"), ctx: Load, @@ -185,9 +214,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 101..118, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 108..109, id: Name("x"), ctx: Load, @@ -196,11 +227,13 @@ Module( msg: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 111..118, value: StringLiteralValue { inner: Single( StringLiteral { range: 111..118, + node_index: AtomicNodeIndex(..), value: "error", flags: StringLiteralFlags { quote_style: Double, @@ -217,9 +250,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 119..140, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 126..127, id: Name("x"), ctx: Load, @@ -228,19 +263,26 @@ Module( msg: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 129..140, parameters: Some( Parameters { range: 136..137, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 136..137, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 136..137, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 136..137, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -254,6 +296,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..140, id: Name("y"), ctx: Load, @@ -266,9 +309,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 141..158, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 148..149, id: Name("x"), ctx: Load, @@ -277,9 +322,11 @@ Module( msg: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 151..158, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 157..158, id: Name("x"), ctx: Load, @@ -292,9 +339,11 @@ Module( ), Assert( StmtAssert { + node_index: AtomicNodeIndex(..), range: 159..185, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..167, id: Name("x"), ctx: Load, @@ -303,15 +352,18 @@ Module( msg: Some( If( ExprIf { + node_index: AtomicNodeIndex(..), range: 169..185, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 174..178, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 169..170, id: Name("x"), ctx: Load, @@ -319,6 +371,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 184..185, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__assignment.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__assignment.py.snap index 606a9ea324..d649315b7d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__assignment.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__assignment.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/valid/statement/assignment.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..729, body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 0..13, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -23,10 +26,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 4..13, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -35,6 +40,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 8..9, value: Int( 2, @@ -43,6 +49,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 11..12, value: Int( 3, @@ -58,14 +65,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 15..33, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 15..21, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 16..17, id: Name("x"), ctx: Store, @@ -73,6 +83,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 19..20, id: Name("y"), ctx: Store, @@ -86,10 +97,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 24..33, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 25..26, value: Int( 1, @@ -98,6 +111,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 28..29, value: Int( 2, @@ -106,6 +120,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 31..32, value: Int( 3, @@ -121,14 +136,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 35..53, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 35..41, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("x"), ctx: Store, @@ -136,6 +154,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("y"), ctx: Store, @@ -148,10 +167,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 44..53, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 45..46, value: Int( 1, @@ -160,6 +181,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 48..49, value: Int( 2, @@ -168,6 +190,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 3, @@ -183,13 +206,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 55..70, targets: [ Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 55..58, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..56, id: Name("x"), ctx: Load, @@ -198,6 +224,7 @@ Module( attr: Identifier { id: Name("y"), range: 57..58, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, @@ -205,10 +232,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 61..70, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 62..63, value: Int( 1, @@ -217,6 +246,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 65..66, value: Int( 2, @@ -225,6 +255,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 68..69, value: Int( 3, @@ -240,13 +271,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 72..88, targets: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 72..76, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("x"), ctx: Load, @@ -254,6 +288,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 74..75, id: Name("y"), ctx: Load, @@ -265,10 +300,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 79..88, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 80..81, value: Int( 1, @@ -277,6 +314,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 2, @@ -285,6 +323,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 86..87, value: Int( 3, @@ -300,14 +339,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 90..109, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 90..97, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..92, id: Name("x"), ctx: Store, @@ -315,9 +357,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 94..96, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..96, id: Name("y"), ctx: Store, @@ -334,10 +378,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 100..109, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 101..102, value: Int( 1, @@ -346,6 +392,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 104..105, value: Int( 2, @@ -354,6 +401,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 107..108, value: Int( 3, @@ -369,14 +417,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 259..280, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 259..268, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 260..261, id: Name("x"), ctx: Store, @@ -384,6 +435,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 263..264, id: Name("y"), ctx: Store, @@ -391,6 +443,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 266..267, id: Name("z"), ctx: Store, @@ -403,10 +456,12 @@ Module( ], value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 271..280, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 272..273, value: Int( 1, @@ -415,6 +470,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 275..276, value: Int( 2, @@ -423,6 +479,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 278..279, value: Int( 3, @@ -437,14 +494,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 282..303, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 282..291, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 283..284, id: Name("x"), ctx: Store, @@ -452,6 +512,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 286..287, id: Name("y"), ctx: Store, @@ -459,6 +520,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 289..290, id: Name("z"), ctx: Store, @@ -472,10 +534,12 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 294..303, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 295..296, value: Int( 1, @@ -484,6 +548,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 298..299, value: Int( 2, @@ -492,6 +557,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 301..302, value: Int( 3, @@ -507,13 +573,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 304..313, targets: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 304..308, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 304..305, id: Name("x"), ctx: Load, @@ -521,6 +590,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 306..307, value: Int( 0, @@ -533,6 +603,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 311..313, value: Int( 42, @@ -543,13 +614,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 410..419, targets: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 410..414, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 410..411, value: Int( 5, @@ -558,6 +632,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 412..413, value: Int( 0, @@ -570,6 +645,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 417..419, value: Int( 42, @@ -580,13 +656,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 420..433, targets: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 420..426, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 420..421, id: Name("x"), ctx: Load, @@ -594,10 +673,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 422..425, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 422..423, value: Int( 1, @@ -608,6 +689,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 424..425, value: Int( 2, @@ -624,10 +706,12 @@ Module( ], value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 429..433, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 430..432, value: Int( 42, @@ -642,13 +726,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 529..542, targets: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 529..535, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 529..530, value: Int( 5, @@ -657,10 +744,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 531..534, lower: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 531..532, value: Int( 1, @@ -671,6 +760,7 @@ Module( upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 533..534, value: Int( 2, @@ -687,10 +777,12 @@ Module( ], value: List( ExprList { + node_index: AtomicNodeIndex(..), range: 538..542, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 539..541, value: Int( 42, @@ -705,13 +797,16 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 544..556, targets: [ Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 544..551, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 544..547, id: Name("foo"), ctx: Load, @@ -720,6 +815,7 @@ Module( attr: Identifier { id: Name("bar"), range: 548..551, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, @@ -727,6 +823,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 554..556, value: Int( 42, @@ -737,18 +834,22 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 658..670, targets: [ Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 658..665, value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 658..663, value: StringLiteralValue { inner: Single( StringLiteral { range: 658..663, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -763,6 +864,7 @@ Module( attr: Identifier { id: Name("y"), range: 664..665, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, @@ -770,6 +872,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 668..670, value: Int( 42, @@ -780,10 +883,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 672..680, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 672..675, id: Name("foo"), ctx: Store, @@ -792,6 +897,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 678..680, value: Int( 42, @@ -802,10 +908,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 682..695, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 682..684, elts: [], ctx: Store, @@ -814,13 +922,16 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 687..695, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 688..693, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 689..693, id: Name("data"), ctx: Load, @@ -838,10 +949,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 696..709, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 696..698, elts: [], ctx: Store, @@ -851,13 +964,16 @@ Module( ], value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 701..709, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 702..707, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 703..707, id: Name("data"), ctx: Load, @@ -875,14 +991,17 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 710..719, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 710..714, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 710..711, id: Name("a"), ctx: Store, @@ -890,6 +1009,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 713..714, id: Name("b"), ctx: Store, @@ -903,6 +1023,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 717..719, id: Name("ab"), ctx: Load, @@ -912,10 +1033,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 720..729, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 720..721, id: Name("a"), ctx: Store, @@ -923,6 +1046,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 724..725, id: Name("b"), ctx: Store, @@ -931,6 +1055,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 728..729, id: Name("c"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__augmented_assignment.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__augmented_assignment.py.snap index da75ead75c..aabb6b245b 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__augmented_assignment.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__augmented_assignment.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/augmented_assignment.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..212, body: [ AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 0..6, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 0..1, id: Name("x"), ctx: Store, @@ -23,6 +25,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5..6, value: Int( 1, @@ -33,12 +36,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 7..23, target: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 7..10, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 7..8, id: Name("x"), ctx: Load, @@ -47,6 +53,7 @@ Module( attr: Identifier { id: Name("y"), range: 9..10, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, @@ -54,10 +61,12 @@ Module( op: Add, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 14..23, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 15..16, value: Int( 1, @@ -66,6 +75,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 18..19, value: Int( 2, @@ -74,6 +84,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 21..22, value: Int( 3, @@ -89,12 +100,15 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 24..41, target: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 24..28, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("x"), ctx: Load, @@ -102,6 +116,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 26..27, id: Name("y"), ctx: Load, @@ -113,10 +128,12 @@ Module( op: Add, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 32..41, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 33..34, value: Int( 1, @@ -125,6 +142,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 36..37, value: Int( 2, @@ -133,6 +151,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 39..40, value: Int( 3, @@ -148,9 +167,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 86..92, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..87, id: Name("x"), ctx: Store, @@ -159,6 +180,7 @@ Module( op: Add, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 91..92, value: Int( 1, @@ -169,9 +191,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 93..99, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("x"), ctx: Store, @@ -180,6 +204,7 @@ Module( op: Sub, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 98..99, value: Int( 1, @@ -190,9 +215,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 100..106, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("x"), ctx: Store, @@ -201,6 +228,7 @@ Module( op: Mult, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 105..106, value: Int( 1, @@ -211,9 +239,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 107..113, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 107..108, id: Name("x"), ctx: Store, @@ -222,6 +252,7 @@ Module( op: Div, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 112..113, value: Int( 1, @@ -232,9 +263,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 114..121, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..115, id: Name("x"), ctx: Store, @@ -243,6 +276,7 @@ Module( op: FloorDiv, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 120..121, value: Int( 1, @@ -253,9 +287,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 122..128, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 122..123, id: Name("x"), ctx: Store, @@ -264,6 +300,7 @@ Module( op: Mod, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 127..128, value: Int( 1, @@ -274,9 +311,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 129..136, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..130, id: Name("x"), ctx: Store, @@ -285,6 +324,7 @@ Module( op: Pow, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 135..136, value: Int( 1, @@ -295,9 +335,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 137..143, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 137..138, id: Name("x"), ctx: Store, @@ -306,6 +348,7 @@ Module( op: BitAnd, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 142..143, value: Int( 1, @@ -316,9 +359,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 144..150, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 144..145, id: Name("x"), ctx: Store, @@ -327,6 +372,7 @@ Module( op: BitOr, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 149..150, value: Int( 1, @@ -337,9 +383,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 151..157, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 151..152, id: Name("x"), ctx: Store, @@ -348,6 +396,7 @@ Module( op: BitXor, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 156..157, value: Int( 1, @@ -358,9 +407,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 158..165, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 158..159, id: Name("x"), ctx: Store, @@ -369,6 +420,7 @@ Module( op: LShift, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 164..165, value: Int( 1, @@ -379,9 +431,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 166..173, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 166..167, id: Name("x"), ctx: Store, @@ -390,6 +444,7 @@ Module( op: RShift, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 172..173, value: Int( 1, @@ -400,9 +455,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 174..180, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 174..175, id: Name("x"), ctx: Store, @@ -411,6 +468,7 @@ Module( op: MatMult, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 179..180, value: Int( 1, @@ -421,9 +479,11 @@ Module( ), AugAssign( StmtAugAssign { + node_index: AtomicNodeIndex(..), range: 190..212, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 190..191, id: Name("a"), ctx: Store, @@ -432,12 +492,15 @@ Module( op: FloorDiv, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 196..212, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 197..202, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 197..198, id: Name("a"), ctx: Load, @@ -446,6 +509,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 201..202, id: Name("b"), ctx: Load, @@ -456,9 +520,11 @@ Module( op: Sub, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 206..212, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 206..207, id: Name("c"), ctx: Load, @@ -467,6 +533,7 @@ Module( op: Pow, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 211..212, value: Int( 2, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__class.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__class.py.snap index 8a6c4d8e87..9882e26371 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__class.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__class.py.snap @@ -1,31 +1,35 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/class.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..1023, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 0..19, decorator_list: [], name: Identifier { id: Name("Test"), range: 6..10, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 16..19, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 16..19, }, ), @@ -36,16 +40,19 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 22..80, decorator_list: [], name: Identifier { id: Name("Test"), range: 28..32, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 32..34, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -53,25 +60,33 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..80, is_async: false, decorator_list: [], name: Identifier { id: Name("__init__"), range: 48..56, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 56..62, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 57..61, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 57..61, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("self"), range: 57..61, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -86,6 +101,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 76..80, }, ), @@ -97,22 +113,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 83..116, decorator_list: [], name: Identifier { id: Name("Test"), range: 89..93, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 93..107, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 99..101, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..101, id: Name("A"), ctx: Load, @@ -125,14 +146,17 @@ Module( keywords: [ Keyword { range: 94..97, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("a"), range: 94..95, + node_index: AtomicNodeIndex(..), }, ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 96..97, value: Int( 1, @@ -142,9 +166,11 @@ Module( }, Keyword { range: 103..106, + node_index: AtomicNodeIndex(..), arg: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..106, id: Name("k"), ctx: Load, @@ -157,9 +183,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 113..116, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 113..116, }, ), @@ -170,27 +198,34 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 119..168, decorator_list: [], name: Identifier { id: Name("Test"), range: 125..129, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 135..168, is_async: false, decorator_list: [], name: Identifier { id: Name("method"), range: 139..145, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 145..147, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -201,14 +236,17 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 157..168, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 157..161, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 157..158, id: Name("a"), ctx: Store, @@ -216,6 +254,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..161, id: Name("b"), ctx: Store, @@ -229,6 +268,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 164..168, id: Name("data"), ctx: Load, @@ -244,19 +284,23 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 171..289, decorator_list: [], name: Identifier { id: Name("Test"), range: 177..181, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 181..187, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 182..183, id: Name("A"), ctx: Load, @@ -264,6 +308,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 185..186, id: Name("B"), ctx: Load, @@ -276,25 +321,33 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 193..225, is_async: false, decorator_list: [], name: Identifier { id: Name("__init__"), range: 197..205, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 205..211, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 206..210, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 206..210, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("self"), range: 206..210, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -309,6 +362,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 221..225, }, ), @@ -317,25 +371,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 231..289, is_async: false, decorator_list: [], name: Identifier { id: Name("method_with_default"), range: 235..254, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 254..275, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 255..259, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 255..259, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("self"), range: 255..259, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -343,22 +405,27 @@ Module( }, ParameterWithDefault { range: 261..274, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 261..264, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 261..264, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 265..274, value: StringLiteralValue { inner: Single( StringLiteral { range: 265..274, + node_index: AtomicNodeIndex(..), value: "default", flags: StringLiteralFlags { quote_style: Single, @@ -381,6 +448,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 285..289, }, ), @@ -392,22 +460,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 331..351, decorator_list: [], name: Identifier { id: Name("Test"), range: 337..341, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 341..344, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 342..343, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 342..343, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -419,6 +492,7 @@ Module( arguments: Some( Arguments { range: 344..346, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -426,9 +500,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 348..351, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 348..351, }, ), @@ -439,27 +515,33 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 376..402, decorator_list: [], name: Identifier { id: Name("Test"), range: 382..386, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 386..395, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 387..394, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 387..388, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 391..394, id: Name("str"), ctx: Load, @@ -474,6 +556,7 @@ Module( arguments: Some( Arguments { range: 395..397, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -481,9 +564,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 399..402, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 399..402, }, ), @@ -494,26 +579,32 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 425..450, decorator_list: [], name: Identifier { id: Name("Test"), range: 431..435, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 435..443, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 436..442, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 436..437, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 439..442, id: Name("str"), ctx: Load, @@ -529,6 +620,7 @@ Module( arguments: Some( Arguments { range: 443..445, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -536,9 +628,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 447..450, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 447..450, }, ), @@ -549,29 +643,36 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 485..522, decorator_list: [], name: Identifier { id: Name("Test"), range: 491..495, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 495..515, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 496..514, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 496..497, + node_index: AtomicNodeIndex(..), }, bound: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 499..508, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 499..502, id: Name("int"), ctx: Load, @@ -580,6 +681,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 505..508, id: Name("str"), ctx: Load, @@ -591,6 +693,7 @@ Module( default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 511..514, id: Name("int"), ctx: Load, @@ -605,6 +708,7 @@ Module( arguments: Some( Arguments { range: 515..517, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -612,9 +716,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 519..522, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 519..522, }, ), @@ -625,30 +731,37 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 551..585, decorator_list: [], name: Identifier { id: Name("Test"), range: 557..561, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 561..578, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 562..577, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 562..563, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 565..577, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 566..569, id: Name("str"), ctx: Load, @@ -656,6 +769,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 571..576, id: Name("bytes"), ctx: Load, @@ -676,6 +790,7 @@ Module( arguments: Some( Arguments { range: 578..580, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -683,9 +798,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 582..585, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 582..585, }, ), @@ -696,22 +813,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 606..629, decorator_list: [], name: Identifier { id: Name("Test"), range: 612..616, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 616..622, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 617..618, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 617..618, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -720,9 +842,11 @@ Module( TypeVar( TypeParamTypeVar { range: 620..621, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 620..621, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -734,6 +858,7 @@ Module( arguments: Some( Arguments { range: 622..624, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -741,9 +866,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 626..629, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 626..629, }, ), @@ -754,22 +881,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 648..672, decorator_list: [], name: Identifier { id: Name("Test"), range: 654..658, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 658..665, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 659..660, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 659..660, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -778,9 +910,11 @@ Module( TypeVar( TypeParamTypeVar { range: 662..663, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 662..663, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -792,6 +926,7 @@ Module( arguments: Some( Arguments { range: 665..667, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -799,9 +934,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 669..672, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 669..672, }, ), @@ -812,22 +949,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 689..711, decorator_list: [], name: Identifier { id: Name("Test"), range: 695..699, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 699..704, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 700..703, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 701..703, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -838,6 +980,7 @@ Module( arguments: Some( Arguments { range: 704..706, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -845,9 +988,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 708..711, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 708..711, }, ), @@ -858,29 +1003,36 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 741..789, decorator_list: [], name: Identifier { id: Name("Test"), range: 747..751, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 751..782, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 752..781, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 753..755, + node_index: AtomicNodeIndex(..), }, default: Some( Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 758..781, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 758..764, id: Name("Unpack"), ctx: Load, @@ -888,9 +1040,11 @@ Module( ), slice: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 765..780, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 765..770, id: Name("tuple"), ctx: Load, @@ -898,10 +1052,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 771..779, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 771..774, id: Name("int"), ctx: Load, @@ -909,6 +1065,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 776..779, id: Name("str"), ctx: Load, @@ -934,6 +1091,7 @@ Module( arguments: Some( Arguments { range: 782..784, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -941,9 +1099,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 786..789, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 786..789, }, ), @@ -954,32 +1114,40 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 827..868, decorator_list: [], name: Identifier { id: Name("Test"), range: 833..837, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 837..861, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 838..860, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 839..841, + node_index: AtomicNodeIndex(..), }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 844..860, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 845..860, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 845..850, id: Name("tuple"), ctx: Load, @@ -987,10 +1155,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 851..859, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 851..854, id: Name("int"), ctx: Load, @@ -998,6 +1168,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 856..859, id: Name("str"), ctx: Load, @@ -1023,6 +1194,7 @@ Module( arguments: Some( Arguments { range: 861..863, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1030,9 +1202,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 865..868, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 865..868, }, ), @@ -1043,22 +1217,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 882..904, decorator_list: [], name: Identifier { id: Name("Test"), range: 888..892, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 892..897, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 893..896, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 895..896, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -1069,6 +1248,7 @@ Module( arguments: Some( Arguments { range: 897..899, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1076,9 +1256,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 901..904, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 901..904, }, ), @@ -1089,30 +1271,37 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 931..966, decorator_list: [], name: Identifier { id: Name("Test"), range: 937..941, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 941..959, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 942..958, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 944..945, + node_index: AtomicNodeIndex(..), }, default: Some( List( ExprList { + node_index: AtomicNodeIndex(..), range: 948..958, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 949..952, id: Name("int"), ctx: Load, @@ -1120,6 +1309,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 954..957, id: Name("str"), ctx: Load, @@ -1138,6 +1328,7 @@ Module( arguments: Some( Arguments { range: 959..961, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1145,9 +1336,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 963..966, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 963..966, }, ), @@ -1158,22 +1351,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 982..1022, decorator_list: [], name: Identifier { id: Name("Test"), range: 988..992, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 992..1012, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 993..994, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("X"), range: 993..994, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -1182,13 +1380,16 @@ Module( TypeVar( TypeParamTypeVar { range: 996..1002, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Y"), range: 996..997, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 999..1002, id: Name("str"), ctx: Load, @@ -1201,9 +1402,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 1004..1006, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 1005..1006, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -1211,9 +1414,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 1008..1011, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 1010..1011, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -1224,6 +1429,7 @@ Module( arguments: Some( Arguments { range: 1012..1014, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1231,6 +1437,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1018..1022, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__delete.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__delete.py.snap index fbb6d09bf2..bc20d70fae 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__delete.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__delete.py.snap @@ -1,21 +1,23 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/delete.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..122, body: [ Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 0..5, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..5, id: Name("x"), ctx: Del, @@ -26,10 +28,12 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 6..13, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 11..12, id: Name("x"), ctx: Del, @@ -40,10 +44,12 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 14..23, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("a"), ctx: Del, @@ -51,6 +57,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("b"), ctx: Del, @@ -61,10 +68,12 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 24..40, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("a"), ctx: Del, @@ -72,10 +81,12 @@ Module( ), Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 31..37, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("b"), ctx: Del, @@ -83,6 +94,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 35..36, id: Name("c"), ctx: Del, @@ -95,6 +107,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 39..40, id: Name("d"), ctx: Del, @@ -105,14 +118,17 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 41..51, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 45..51, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("a"), ctx: Del, @@ -120,6 +136,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("b"), ctx: Del, @@ -134,14 +151,17 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 52..70, targets: [ List( ExprList { + node_index: AtomicNodeIndex(..), range: 56..70, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 57..58, id: Name("a"), ctx: Del, @@ -149,10 +169,12 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 60..66, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 61..62, id: Name("b"), ctx: Del, @@ -160,6 +182,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 64..65, id: Name("c"), ctx: Del, @@ -171,6 +194,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("d"), ctx: Del, @@ -185,13 +209,16 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 71..78, targets: [ Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 75..78, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("x"), ctx: Load, @@ -200,6 +227,7 @@ Module( attr: Identifier { id: Name("y"), range: 77..78, + node_index: AtomicNodeIndex(..), }, ctx: Del, }, @@ -209,13 +237,16 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 79..87, targets: [ Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 83..87, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 83..84, id: Name("x"), ctx: Load, @@ -223,6 +254,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 85..86, id: Name("y"), ctx: Load, @@ -236,14 +268,17 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 88..121, targets: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 92..121, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("x"), ctx: Del, @@ -251,9 +286,11 @@ Module( ), Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 105..108, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 105..106, id: Name("x"), ctx: Load, @@ -262,15 +299,18 @@ Module( attr: Identifier { id: Name("y"), range: 107..108, + node_index: AtomicNodeIndex(..), }, ctx: Del, }, ), Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 114..118, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..115, id: Name("x"), ctx: Load, @@ -278,6 +318,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 116..117, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__for.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__for.py.snap index fa69892a4a..a003c4896d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__for.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__for.py.snap @@ -7,14 +7,17 @@ input_file: crates/ruff_python_parser/resources/valid/statement/for.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..523, body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 0..28, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4..10, id: Name("target"), ctx: Store, @@ -22,6 +25,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..18, id: Name("iter"), ctx: Load, @@ -30,6 +34,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 24..28, }, ), @@ -39,10 +44,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 30..63, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..40, id: Name("target"), ctx: Store, @@ -50,10 +57,12 @@ Module( ), iter: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 44..53, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 45..46, value: Int( 1, @@ -62,6 +71,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 48..49, value: Int( 2, @@ -70,6 +80,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 3, @@ -84,6 +95,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 59..63, }, ), @@ -93,13 +105,16 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 65..100, is_async: false, target: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 69..80, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..75, id: Name("target"), ctx: Load, @@ -108,15 +123,18 @@ Module( attr: Identifier { id: Name("attr"), range: 76..80, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 84..90, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..88, id: Name("call"), ctx: Load, @@ -124,6 +142,7 @@ Module( ), arguments: Arguments { range: 88..90, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -132,6 +151,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 96..100, }, ), @@ -141,13 +161,16 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 102..135, is_async: false, target: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 106..115, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 106..112, id: Name("target"), ctx: Load, @@ -155,6 +178,7 @@ Module( ), slice: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 113..114, value: Int( 0, @@ -166,9 +190,11 @@ Module( ), iter: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 119..125, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 119..120, id: Name("x"), ctx: Load, @@ -177,6 +203,7 @@ Module( attr: Identifier { id: Name("attr"), range: 121..125, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -184,6 +211,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 131..135, }, ), @@ -193,10 +221,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 137..167, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 141..147, id: Name("target"), ctx: Store, @@ -204,9 +234,11 @@ Module( ), iter: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 151..157, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 151..152, id: Name("x"), ctx: Load, @@ -218,6 +250,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 156..157, id: Name("y"), ctx: Load, @@ -229,6 +262,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 163..167, }, ), @@ -238,10 +272,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 169..200, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 173..179, id: Name("target"), ctx: Store, @@ -249,11 +285,13 @@ Module( ), iter: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 183..190, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 183..184, id: Name("a"), ctx: Load, @@ -261,6 +299,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..190, id: Name("b"), ctx: Load, @@ -272,6 +311,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 196..200, }, ), @@ -281,14 +321,17 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 202..232, is_async: false, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 206..214, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 206..207, id: Name("a"), ctx: Store, @@ -296,6 +339,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 209..210, id: Name("b"), ctx: Store, @@ -303,6 +347,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 212..213, id: Name("c"), ctx: Store, @@ -315,6 +360,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 218..222, id: Name("iter"), ctx: Load, @@ -323,6 +369,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 228..232, }, ), @@ -332,14 +379,17 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 234..262, is_async: false, target: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 238..244, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 239..240, id: Name("a"), ctx: Store, @@ -347,6 +397,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 242..243, id: Name("b"), ctx: Store, @@ -359,6 +410,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 248..252, id: Name("iter"), ctx: Load, @@ -367,6 +419,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 258..262, }, ), @@ -376,10 +429,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 264..294, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 268..274, id: Name("target"), ctx: Store, @@ -387,10 +442,12 @@ Module( ), iter: List( ExprList { + node_index: AtomicNodeIndex(..), range: 278..284, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 279..280, value: Int( 1, @@ -399,6 +456,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 282..283, value: Int( 2, @@ -412,6 +470,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 290..294, }, ), @@ -421,10 +480,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 296..322, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 300..306, id: Name("target"), ctx: Store, @@ -432,9 +493,11 @@ Module( ), iter: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 310..317, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 316..317, id: Name("x"), ctx: Load, @@ -445,9 +508,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 319..322, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 319..322, }, ), @@ -459,10 +524,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 323..353, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 327..333, id: Name("target"), ctx: Store, @@ -470,19 +537,26 @@ Module( ), iter: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 337..348, parameters: Some( Parameters { range: 344..345, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 344..345, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 344..345, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 344..345, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -496,6 +570,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 347..348, id: Name("x"), ctx: Load, @@ -506,9 +581,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 350..353, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 350..353, }, ), @@ -520,10 +597,12 @@ Module( ), For( StmtFor { + node_index: AtomicNodeIndex(..), range: 354..389, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 358..364, id: Name("target"), ctx: Store, @@ -531,15 +610,18 @@ Module( ), iter: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 368..384, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 373..377, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 368..369, id: Name("x"), ctx: Load, @@ -547,6 +629,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 383..384, id: Name("y"), ctx: Load, @@ -557,9 +640,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 386..389, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 386..389, }, ), @@ -571,9 +656,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 391..522, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 394..395, id: Name("x"), ctx: Load, @@ -582,10 +669,12 @@ Module( body: [ For( StmtFor { + node_index: AtomicNodeIndex(..), range: 401..433, is_async: false, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 405..411, id: Name("target"), ctx: Store, @@ -593,6 +682,7 @@ Module( ), iter: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 415..419, id: Name("iter"), ctx: Load, @@ -601,6 +691,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 429..433, }, ), @@ -612,10 +703,12 @@ Module( elif_else_clauses: [ ElifElseClause { range: 508..522, + node_index: AtomicNodeIndex(..), test: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 518..522, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__from_import.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__from_import.py.snap index 3fa6228749..d6f6e50158 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__from_import.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__from_import.py.snap @@ -1,30 +1,34 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/from_import.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..259, body: [ ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 0..15, module: Some( Identifier { id: Name("a"), range: 5..6, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 14..15, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 14..15, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -34,14 +38,17 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 27..42, module: None, names: [ Alias { range: 41..42, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 41..42, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -51,37 +58,45 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 43..85, module: Some( Identifier { id: Name("foo.bar"), range: 48..55, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 63..71, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("baz"), range: 63..66, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("b"), range: 70..71, + node_index: AtomicNodeIndex(..), }, ), }, Alias { range: 73..85, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("FooBar"), range: 73..79, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("fb"), range: 83..85, + node_index: AtomicNodeIndex(..), }, ), }, @@ -91,19 +106,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 86..102, module: Some( Identifier { id: Name("a"), range: 92..93, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 101..102, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 101..102, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -113,14 +132,17 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 103..120, module: None, names: [ Alias { range: 119..120, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 119..120, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -130,14 +152,17 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 121..161, module: None, names: [ Alias { range: 160..161, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 160..161, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -147,19 +172,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 162..207, module: Some( Identifier { id: Name("a.b.c"), range: 193..198, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 206..207, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 206..207, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -169,40 +198,49 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 208..242, module: Some( Identifier { id: Name("module"), range: 213..219, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 228..229, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 228..229, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 231..237, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 231..232, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("B"), range: 236..237, + node_index: AtomicNodeIndex(..), }, ), }, Alias { range: 239..240, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 239..240, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -212,19 +250,23 @@ Module( ), ImportFrom( StmtImportFrom { + node_index: AtomicNodeIndex(..), range: 243..258, module: Some( Identifier { id: Name("a"), range: 248..249, + node_index: AtomicNodeIndex(..), }, ), names: [ Alias { range: 257..258, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("*"), range: 257..258, + node_index: AtomicNodeIndex(..), }, asname: None, }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__function.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__function.py.snap index 0dbedd8e92..d2b7caef14 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__function.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__function.py.snap @@ -1,27 +1,32 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/function.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..2399, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 0..29, is_async: false, decorator_list: [], name: Identifier { id: Name("no_parameters"), range: 4..17, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 17..19, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -32,6 +37,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 25..29, }, ), @@ -40,25 +46,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 32..76, is_async: false, decorator_list: [], name: Identifier { id: Name("positional_parameters"), range: 36..57, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 57..66, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 58..59, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 58..59, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 58..59, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -66,11 +80,14 @@ Module( }, ParameterWithDefault { range: 61..62, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 61..62, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 61..62, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -78,11 +95,14 @@ Module( }, ParameterWithDefault { range: 64..65, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 64..65, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 64..65, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -97,6 +117,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 72..76, }, ), @@ -105,25 +126,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 79..149, is_async: false, decorator_list: [], name: Identifier { id: Name("positional_parameters_with_default_values"), range: 83..124, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 124..139, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 125..126, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 125..126, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 125..126, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -131,17 +160,21 @@ Module( }, ParameterWithDefault { range: 128..132, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 128..129, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 128..129, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 130..132, value: Int( 20, @@ -152,17 +185,21 @@ Module( }, ParameterWithDefault { range: 134..138, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 134..135, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 134..135, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 136..138, value: Int( 30, @@ -180,6 +217,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 145..149, }, ), @@ -188,24 +226,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 152..226, is_async: false, decorator_list: [], name: Identifier { id: Name("positional_parameters_with_default_values2"), range: 156..198, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 198..216, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 199..200, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 199..200, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 199..200, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -213,17 +259,21 @@ Module( }, ParameterWithDefault { range: 202..206, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 202..203, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 202..203, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 204..206, value: Int( 20, @@ -236,17 +286,21 @@ Module( args: [ ParameterWithDefault { range: 211..215, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 211..212, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 211..212, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 213..215, value: Int( 30, @@ -264,6 +318,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 222..226, }, ), @@ -272,24 +327,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 229..296, is_async: false, decorator_list: [], name: Identifier { id: Name("positional_only_and_positional_parameters"), range: 233..274, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 274..286, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 275..276, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 275..276, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 275..276, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -299,11 +362,14 @@ Module( args: [ ParameterWithDefault { range: 281..282, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 281..282, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 281..282, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -311,11 +377,14 @@ Module( }, ParameterWithDefault { range: 284..285, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 284..285, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 284..285, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -330,6 +399,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 292..296, }, ), @@ -338,24 +408,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 299..393, is_async: false, decorator_list: [], name: Identifier { id: Name("pos_args_with_defaults_and_varargs_and_kwargs"), range: 303..348, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 348..383, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 349..350, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 349..350, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 349..350, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -363,17 +441,21 @@ Module( }, ParameterWithDefault { range: 352..356, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 352..353, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 352..353, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 354..356, value: Int( 20, @@ -386,17 +468,21 @@ Module( args: [ ParameterWithDefault { range: 361..365, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 361..362, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 361..362, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 363..365, value: Int( 30, @@ -409,9 +495,11 @@ Module( vararg: Some( Parameter { range: 367..372, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 368..372, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -420,9 +508,11 @@ Module( kwarg: Some( Parameter { range: 374..382, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 376..382, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -432,6 +522,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 389..393, }, ), @@ -440,27 +531,35 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 396..445, is_async: false, decorator_list: [], name: Identifier { id: Name("keyword_only_parameters"), range: 400..423, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 423..435, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, kwonlyargs: [ ParameterWithDefault { range: 427..428, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 427..428, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 427..428, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -468,11 +567,14 @@ Module( }, ParameterWithDefault { range: 430..431, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 430..431, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 430..431, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -480,11 +582,14 @@ Module( }, ParameterWithDefault { range: 433..434, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 433..434, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 433..434, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -497,6 +602,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 441..445, }, ), @@ -505,27 +611,35 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 448..517, is_async: false, decorator_list: [], name: Identifier { id: Name("keyword_only_parameters_with_defaults"), range: 452..489, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 489..507, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, kwonlyargs: [ ParameterWithDefault { range: 493..494, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 493..494, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 493..494, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -533,17 +647,21 @@ Module( }, ParameterWithDefault { range: 496..500, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 496..497, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 496..497, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 498..500, value: Int( 20, @@ -554,17 +672,21 @@ Module( }, ParameterWithDefault { range: 502..506, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 502..503, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 502..503, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 504..506, value: Int( 30, @@ -580,6 +702,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 513..517, }, ), @@ -588,24 +711,31 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 520..594, is_async: false, decorator_list: [], name: Identifier { id: Name("kw_only_args_with_defaults_and_varargs"), range: 524..562, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 562..584, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 563..568, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 564..568, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -613,11 +743,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 570..571, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 570..571, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 570..571, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -625,17 +758,21 @@ Module( }, ParameterWithDefault { range: 573..577, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 573..574, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 573..574, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 575..577, value: Int( 20, @@ -646,17 +783,21 @@ Module( }, ParameterWithDefault { range: 579..583, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 579..580, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 579..580, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 581..583, value: Int( 30, @@ -672,6 +813,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 590..594, }, ), @@ -680,27 +822,35 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 597..676, is_async: false, decorator_list: [], name: Identifier { id: Name("kw_only_args_with_defaults_and_kwargs"), range: 601..638, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 638..666, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, kwonlyargs: [ ParameterWithDefault { range: 642..643, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 642..643, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 642..643, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -708,17 +858,21 @@ Module( }, ParameterWithDefault { range: 645..649, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 645..646, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 645..646, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 647..649, value: Int( 20, @@ -729,17 +883,21 @@ Module( }, ParameterWithDefault { range: 651..655, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 651..652, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 651..652, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 653..655, value: Int( 30, @@ -752,9 +910,11 @@ Module( kwarg: Some( Parameter { range: 657..665, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 659..665, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -764,6 +924,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 672..676, }, ), @@ -772,24 +933,31 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 679..774, is_async: false, decorator_list: [], name: Identifier { id: Name("kw_only_args_with_defaults_and_varargs_and_kwargs"), range: 683..732, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 732..764, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 733..738, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 734..738, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -797,11 +965,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 740..741, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 740..741, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 740..741, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -809,17 +980,21 @@ Module( }, ParameterWithDefault { range: 743..747, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 743..744, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 743..744, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 745..747, value: Int( 20, @@ -830,17 +1005,21 @@ Module( }, ParameterWithDefault { range: 749..753, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 749..750, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 749..750, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 751..753, value: Int( 30, @@ -853,9 +1032,11 @@ Module( kwarg: Some( Parameter { range: 755..763, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 757..763, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -865,6 +1046,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 770..774, }, ), @@ -873,24 +1055,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 777..835, is_async: false, decorator_list: [], name: Identifier { id: Name("pos_and_kw_only_args"), range: 781..801, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 801..825, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 802..803, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 802..803, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 802..803, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -898,11 +1088,14 @@ Module( }, ParameterWithDefault { range: 805..806, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 805..806, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 805..806, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -912,11 +1105,14 @@ Module( args: [ ParameterWithDefault { range: 811..812, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 811..812, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 811..812, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -927,11 +1123,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 817..818, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 817..818, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 817..818, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -939,11 +1138,14 @@ Module( }, ParameterWithDefault { range: 820..821, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 820..821, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 820..821, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -951,11 +1153,14 @@ Module( }, ParameterWithDefault { range: 823..824, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 823..824, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 823..824, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -968,6 +1173,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 831..835, }, ), @@ -976,24 +1182,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 838..916, is_async: false, decorator_list: [], name: Identifier { id: Name("pos_and_kw_only_args_with_defaults"), range: 842..876, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 876..906, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 877..878, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 877..878, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 877..878, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1001,11 +1215,14 @@ Module( }, ParameterWithDefault { range: 880..881, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 880..881, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 880..881, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1015,11 +1232,14 @@ Module( args: [ ParameterWithDefault { range: 886..887, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 886..887, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 886..887, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1030,11 +1250,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 892..893, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 892..893, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 892..893, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1042,17 +1265,21 @@ Module( }, ParameterWithDefault { range: 895..899, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 895..896, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 895..896, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 897..899, value: Int( 20, @@ -1063,17 +1290,21 @@ Module( }, ParameterWithDefault { range: 901..905, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 901..902, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 901..902, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 903..905, value: Int( 30, @@ -1089,6 +1320,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 912..916, }, ), @@ -1097,24 +1329,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 919..1013, is_async: false, decorator_list: [], name: Identifier { id: Name("pos_and_kw_only_args_with_defaults_and_varargs"), range: 923..969, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 969..1003, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 970..971, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 970..971, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 970..971, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1122,11 +1362,14 @@ Module( }, ParameterWithDefault { range: 973..974, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 973..974, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 973..974, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1136,11 +1379,14 @@ Module( args: [ ParameterWithDefault { range: 979..980, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 979..980, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 979..980, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1150,9 +1396,11 @@ Module( vararg: Some( Parameter { range: 982..987, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 983..987, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1160,11 +1408,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 989..990, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 989..990, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 989..990, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1172,17 +1423,21 @@ Module( }, ParameterWithDefault { range: 992..996, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 992..993, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 992..993, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 994..996, value: Int( 20, @@ -1193,17 +1448,21 @@ Module( }, ParameterWithDefault { range: 998..1002, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 998..999, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 998..999, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1000..1002, value: Int( 30, @@ -1219,6 +1478,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1009..1013, }, ), @@ -1227,24 +1487,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1016..1121, is_async: false, decorator_list: [], name: Identifier { id: Name("pos_and_kw_only_args_with_defaults_and_kwargs"), range: 1020..1065, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 1065..1111, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 1071..1072, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1071..1072, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1071..1072, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1252,11 +1520,14 @@ Module( }, ParameterWithDefault { range: 1074..1075, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1074..1075, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 1074..1075, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1266,11 +1537,14 @@ Module( args: [ ParameterWithDefault { range: 1080..1081, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1080..1081, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 1080..1081, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1281,11 +1555,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 1086..1087, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1086..1087, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 1086..1087, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1293,17 +1570,21 @@ Module( }, ParameterWithDefault { range: 1089..1093, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1089..1090, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 1089..1090, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1091..1093, value: Int( 20, @@ -1314,17 +1595,21 @@ Module( }, ParameterWithDefault { range: 1095..1099, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1095..1096, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 1095..1096, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1097..1099, value: Int( 30, @@ -1337,9 +1622,11 @@ Module( kwarg: Some( Parameter { range: 1101..1109, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 1103..1109, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1349,6 +1636,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1117..1121, }, ), @@ -1357,24 +1645,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1124..1245, is_async: false, decorator_list: [], name: Identifier { id: Name("pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs"), range: 1128..1185, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 1185..1235, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 1191..1192, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1191..1192, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1191..1192, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1382,11 +1678,14 @@ Module( }, ParameterWithDefault { range: 1194..1195, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1194..1195, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 1194..1195, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1396,11 +1695,14 @@ Module( args: [ ParameterWithDefault { range: 1200..1201, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1200..1201, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 1200..1201, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1410,9 +1712,11 @@ Module( vararg: Some( Parameter { range: 1203..1208, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 1204..1208, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1420,11 +1724,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 1210..1211, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1210..1211, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 1210..1211, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1432,17 +1739,21 @@ Module( }, ParameterWithDefault { range: 1213..1217, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1213..1214, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 1213..1214, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1215..1217, value: Int( 20, @@ -1453,17 +1764,21 @@ Module( }, ParameterWithDefault { range: 1219..1223, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1219..1220, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 1219..1220, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1221..1223, value: Int( 30, @@ -1476,9 +1791,11 @@ Module( kwarg: Some( Parameter { range: 1225..1233, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 1227..1233, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1488,6 +1805,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1241..1245, }, ), @@ -1496,25 +1814,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1248..1316, is_async: false, decorator_list: [], name: Identifier { id: Name("positional_and_keyword_parameters"), range: 1252..1285, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 1285..1306, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1286..1287, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1286..1287, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1286..1287, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1522,11 +1848,14 @@ Module( }, ParameterWithDefault { range: 1289..1290, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1289..1290, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 1289..1290, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1534,11 +1863,14 @@ Module( }, ParameterWithDefault { range: 1292..1293, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1292..1293, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 1292..1293, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1549,11 +1881,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 1298..1299, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1298..1299, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 1298..1299, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1561,11 +1896,14 @@ Module( }, ParameterWithDefault { range: 1301..1302, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1301..1302, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 1301..1302, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1573,11 +1911,14 @@ Module( }, ParameterWithDefault { range: 1304..1305, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1304..1305, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 1304..1305, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1590,6 +1931,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1312..1316, }, ), @@ -1598,25 +1940,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1319..1407, is_async: false, decorator_list: [], name: Identifier { id: Name("positional_and_keyword_parameters_with_defaults"), range: 1323..1370, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 1370..1397, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1371..1372, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1371..1372, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1371..1372, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1624,11 +1974,14 @@ Module( }, ParameterWithDefault { range: 1374..1375, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1374..1375, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 1374..1375, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1636,11 +1989,14 @@ Module( }, ParameterWithDefault { range: 1377..1378, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1377..1378, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 1377..1378, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1651,11 +2007,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 1383..1384, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1383..1384, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 1383..1384, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1663,17 +2022,21 @@ Module( }, ParameterWithDefault { range: 1386..1390, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1386..1387, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 1386..1387, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1388..1390, value: Int( 20, @@ -1684,17 +2047,21 @@ Module( }, ParameterWithDefault { range: 1392..1396, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1392..1393, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 1392..1393, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1394..1396, value: Int( 30, @@ -1710,6 +2077,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1403..1407, }, ), @@ -1718,25 +2086,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1410..1520, is_async: false, decorator_list: [], name: Identifier { id: Name("positional_and_keyword_parameters_with_defaults_and_varargs"), range: 1414..1473, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 1473..1510, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1479..1480, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1479..1480, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1479..1480, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1744,11 +2120,14 @@ Module( }, ParameterWithDefault { range: 1482..1483, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1482..1483, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 1482..1483, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1756,11 +2135,14 @@ Module( }, ParameterWithDefault { range: 1485..1486, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1485..1486, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 1485..1486, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1770,9 +2152,11 @@ Module( vararg: Some( Parameter { range: 1488..1493, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 1489..1493, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1780,11 +2164,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 1495..1496, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1495..1496, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 1495..1496, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1792,17 +2179,21 @@ Module( }, ParameterWithDefault { range: 1498..1502, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1498..1499, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 1498..1499, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1500..1502, value: Int( 20, @@ -1813,17 +2204,21 @@ Module( }, ParameterWithDefault { range: 1504..1508, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1504..1505, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 1504..1505, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1506..1508, value: Int( 30, @@ -1839,6 +2234,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1516..1520, }, ), @@ -1847,25 +2243,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1523..1654, is_async: false, decorator_list: [], name: Identifier { id: Name("positional_and_keyword_parameters_with_defaults_and_varargs_and_kwargs"), range: 1527..1597, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 1597..1644, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1603..1604, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1603..1604, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1603..1604, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1873,11 +2277,14 @@ Module( }, ParameterWithDefault { range: 1606..1607, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1606..1607, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 1606..1607, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1885,11 +2292,14 @@ Module( }, ParameterWithDefault { range: 1609..1610, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1609..1610, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 1609..1610, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1899,9 +2309,11 @@ Module( vararg: Some( Parameter { range: 1612..1617, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 1613..1617, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1909,11 +2321,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 1619..1620, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1619..1620, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("d"), range: 1619..1620, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1921,17 +2336,21 @@ Module( }, ParameterWithDefault { range: 1622..1626, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1622..1623, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("e"), range: 1622..1623, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1624..1626, value: Int( 20, @@ -1942,17 +2361,21 @@ Module( }, ParameterWithDefault { range: 1628..1632, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1628..1629, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("f"), range: 1628..1629, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1630..1632, value: Int( 30, @@ -1965,9 +2388,11 @@ Module( kwarg: Some( Parameter { range: 1634..1642, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 1636..1642, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1977,6 +2402,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1650..1654, }, ), @@ -1985,23 +2411,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1703..1735, is_async: false, decorator_list: [], name: Identifier { id: Name("func"), range: 1707..1711, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 1711..1714, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 1712..1713, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 1712..1713, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -2012,19 +2443,26 @@ Module( ), parameters: Parameters { range: 1714..1720, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1715..1719, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1715..1719, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1715..1716, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1718..1719, id: Name("T"), ctx: Load, @@ -2042,6 +2480,7 @@ Module( returns: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1724..1725, id: Name("T"), ctx: Load, @@ -2051,6 +2490,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1731..1735, }, ), @@ -2059,27 +2499,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1738..1775, is_async: false, decorator_list: [], name: Identifier { id: Name("func"), range: 1742..1746, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 1746..1754, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 1747..1753, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 1747..1748, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1750..1753, id: Name("str"), ctx: Load, @@ -2094,19 +2540,26 @@ Module( ), parameters: Parameters { range: 1754..1760, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1755..1759, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1755..1759, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1755..1756, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1758..1759, id: Name("T"), ctx: Load, @@ -2124,6 +2577,7 @@ Module( returns: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1764..1765, id: Name("T"), ctx: Load, @@ -2133,6 +2587,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1771..1775, }, ), @@ -2141,31 +2596,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1778..1824, is_async: false, decorator_list: [], name: Identifier { id: Name("func"), range: 1782..1786, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 1786..1803, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 1787..1802, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 1787..1788, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1790..1802, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1791..1794, id: Name("str"), ctx: Load, @@ -2173,6 +2635,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1796..1801, id: Name("bytes"), ctx: Load, @@ -2192,19 +2655,26 @@ Module( ), parameters: Parameters { range: 1803..1809, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1804..1808, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1804..1808, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1804..1805, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1807..1808, id: Name("T"), ctx: Load, @@ -2222,6 +2692,7 @@ Module( returns: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1813..1814, id: Name("T"), ctx: Load, @@ -2231,6 +2702,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1820..1824, }, ), @@ -2239,23 +2711,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1827..1873, is_async: false, decorator_list: [], name: Identifier { id: Name("func"), range: 1831..1835, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 1835..1840, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 1836..1839, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 1837..1839, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -2265,21 +2742,28 @@ Module( ), parameters: Parameters { range: 1840..1849, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 1841..1848, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 1842..1843, + node_index: AtomicNodeIndex(..), }, annotation: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 1845..1848, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1846..1848, id: Name("Ts"), ctx: Load, @@ -2297,9 +2781,11 @@ Module( returns: Some( Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1853..1863, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1853..1858, id: Name("Tuple"), ctx: Load, @@ -2307,13 +2793,16 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1859..1862, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 1859..1862, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1860..1862, id: Name("Ts"), ctx: Load, @@ -2334,6 +2823,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1869..1873, }, ), @@ -2342,23 +2832,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1876..1934, is_async: false, decorator_list: [], name: Identifier { id: Name("func"), range: 1880..1884, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 1884..1889, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 1885..1888, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 1887..1888, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -2368,21 +2863,28 @@ Module( ), parameters: Parameters { range: 1889..1924, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 1890..1903, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 1891..1895, + node_index: AtomicNodeIndex(..), }, annotation: Some( Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1897..1903, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1897..1898, id: Name("P"), ctx: Load, @@ -2391,6 +2893,7 @@ Module( attr: Identifier { id: Name("args"), range: 1899..1903, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2402,16 +2905,20 @@ Module( kwarg: Some( Parameter { range: 1905..1923, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 1907..1913, + node_index: AtomicNodeIndex(..), }, annotation: Some( Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1915..1923, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1915..1916, id: Name("P"), ctx: Load, @@ -2420,6 +2927,7 @@ Module( attr: Identifier { id: Name("kwargs"), range: 1917..1923, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2432,6 +2940,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1930..1934, }, ), @@ -2440,23 +2949,28 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1937..1978, is_async: false, decorator_list: [], name: Identifier { id: Name("func"), range: 1941..1945, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 1945..1966, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 1946..1947, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 1946..1947, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -2465,13 +2979,16 @@ Module( TypeVar( TypeParamTypeVar { range: 1949..1955, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 1949..1950, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1952..1955, id: Name("str"), ctx: Load, @@ -2484,9 +3001,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 1957..1960, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 1958..1960, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -2494,9 +3013,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 1962..1965, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 1964..1965, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -2506,6 +3027,9 @@ Module( ), parameters: Parameters { range: 1966..1968, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -2516,6 +3040,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1974..1978, }, ), @@ -2524,16 +3049,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 1981..2000, is_async: false, decorator_list: [], name: Identifier { id: Name("ellipsis"), range: 1985..1993, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 1993..1995, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -2544,9 +3074,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1997..2000, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 1997..2000, }, ), @@ -2557,16 +3089,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2003..2064, is_async: false, decorator_list: [], name: Identifier { id: Name("multiple_statements"), range: 2007..2026, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2026..2028, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -2576,6 +3113,7 @@ Module( returns: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2032..2035, id: Name("int"), ctx: Load, @@ -2585,12 +3123,15 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2041..2047, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 2041..2047, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2041..2045, id: Name("call"), ctx: Load, @@ -2598,6 +3139,7 @@ Module( ), arguments: Arguments { range: 2045..2047, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -2607,14 +3149,17 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2052..2056, }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 2061..2064, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 2061..2064, }, ), @@ -2625,24 +3170,31 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2067..2091, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2071..2074, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2074..2081, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 2075..2080, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 2076..2080, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2654,6 +3206,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2087..2091, }, ), @@ -2662,16 +3215,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2094..2121, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2098..2101, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2101..2111, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -2679,9 +3237,11 @@ Module( kwarg: Some( Parameter { range: 2102..2110, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 2104..2110, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2691,6 +3251,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2117..2121, }, ), @@ -2699,24 +3260,31 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2124..2158, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2128..2131, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2131..2148, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: Some( Parameter { range: 2132..2137, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("args"), range: 2133..2137, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2725,9 +3293,11 @@ Module( kwarg: Some( Parameter { range: 2139..2147, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kwargs"), range: 2141..2147, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2737,6 +3307,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2154..2158, }, ), @@ -2745,24 +3316,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2161..2184, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2165..2168, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2168..2174, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 2169..2170, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2169..2170, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 2169..2170, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2778,6 +3357,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2180..2184, }, ), @@ -2786,24 +3366,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2187..2213, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2191..2194, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2194..2203, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 2195..2196, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2195..2196, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 2195..2196, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2813,11 +3401,14 @@ Module( args: [ ParameterWithDefault { range: 2201..2202, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2201..2202, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 2201..2202, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2832,6 +3423,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2209..2213, }, ), @@ -2840,30 +3432,39 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2216..2242, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2220..2223, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2223..2232, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 2224..2227, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2224..2225, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 2224..2225, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2226..2227, value: Int( 1, @@ -2882,6 +3483,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2238..2242, }, ), @@ -2890,24 +3492,32 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2245..2277, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2249..2252, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2252..2267, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [ ParameterWithDefault { range: 2253..2254, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2253..2254, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 2253..2254, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2915,11 +3525,14 @@ Module( }, ParameterWithDefault { range: 2256..2257, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2256..2257, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 2256..2257, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2931,11 +3544,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 2265..2266, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2265..2266, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 2265..2266, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2948,6 +3564,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2273..2277, }, ), @@ -2956,31 +3573,40 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2280..2309, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2284..2287, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2287..2299, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 2288..2292, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2288..2290, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("kw"), range: 2288..2290, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2291..2292, value: Int( 1, @@ -2994,11 +3620,14 @@ Module( kwonlyargs: [ ParameterWithDefault { range: 2297..2298, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2297..2298, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 2297..2298, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -3011,6 +3640,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2305..2309, }, ), @@ -3019,29 +3649,38 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2312..2357, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2316..2319, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2319..2347, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 2320..2326, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2320..2326, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 2320..2321, + node_index: AtomicNodeIndex(..), }, annotation: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2323..2326, id: Name("int"), ctx: Load, @@ -3053,20 +3692,25 @@ Module( }, ParameterWithDefault { range: 2328..2336, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2328..2336, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("y"), range: 2328..2329, + node_index: AtomicNodeIndex(..), }, annotation: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 2331..2336, value: StringLiteralValue { inner: Single( StringLiteral { range: 2331..2336, + node_index: AtomicNodeIndex(..), value: "str", flags: StringLiteralFlags { quote_style: Double, @@ -3084,18 +3728,23 @@ Module( }, ParameterWithDefault { range: 2338..2346, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2338..2346, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("z"), range: 2338..2339, + node_index: AtomicNodeIndex(..), }, annotation: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 2341..2346, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2341..2342, value: Int( 1, @@ -3105,6 +3754,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2345..2346, value: Int( 2, @@ -3126,6 +3776,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2353..2357, }, ), @@ -3134,25 +3785,33 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 2360..2398, is_async: false, decorator_list: [], name: Identifier { id: Name("foo"), range: 2364..2367, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 2367..2388, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 2368..2372, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2368..2372, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("self"), range: 2368..2372, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -3160,17 +3819,21 @@ Module( }, ParameterWithDefault { range: 2374..2377, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2374..2375, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 2374..2375, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2376..2377, value: Int( 1, @@ -3181,17 +3844,21 @@ Module( }, ParameterWithDefault { range: 2379..2382, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2379..2380, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 2379..2380, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2381..2382, value: Int( 2, @@ -3202,17 +3869,21 @@ Module( }, ParameterWithDefault { range: 2384..2387, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 2384..2385, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 2384..2385, + node_index: AtomicNodeIndex(..), }, annotation: None, }, default: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2386..2387, value: Int( 3, @@ -3230,6 +3901,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2394..2398, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__if.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__if.py.snap index 592cb88bad..51edcda294 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__if.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__if.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/if.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..375, body: [ If( StmtIf { + node_index: AtomicNodeIndex(..), range: 0..28, test: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3..4, value: Int( 1, @@ -24,9 +26,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 6..8, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 6..8, value: Int( 10, @@ -39,9 +43,11 @@ Module( elif_else_clauses: [ ElifElseClause { range: 9..19, + node_index: AtomicNodeIndex(..), test: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 14..15, value: Int( 2, @@ -52,9 +58,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 17..19, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 17..19, value: Int( 20, @@ -67,13 +75,16 @@ Module( }, ElifElseClause { range: 20..28, + node_index: AtomicNodeIndex(..), test: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 26..28, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 26..28, value: Int( 30, @@ -89,9 +100,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 30..52, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 33..37, value: true, }, @@ -99,9 +112,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..44, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 43..44, value: Int( 1, @@ -112,9 +127,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 49..52, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 49..52, }, ), @@ -126,12 +143,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 53..85, test: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 56..61, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("x"), ctx: Load, @@ -143,6 +163,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 60..61, value: Int( 1, @@ -155,9 +176,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 67..70, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 67..70, }, ), @@ -167,10 +190,12 @@ Module( elif_else_clauses: [ ElifElseClause { range: 71..85, + node_index: AtomicNodeIndex(..), test: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 81..85, }, ), @@ -181,9 +206,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 87..117, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("a"), ctx: Load, @@ -192,6 +219,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 97..101, }, ), @@ -199,9 +227,11 @@ Module( elif_else_clauses: [ ElifElseClause { range: 102..117, + node_index: AtomicNodeIndex(..), test: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 107..108, id: Name("b"), ctx: Load, @@ -211,9 +241,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 114..117, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 114..117, }, ), @@ -226,14 +258,17 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 119..203, test: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 122..129, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 122..123, id: Name("a"), ctx: Load, @@ -241,6 +276,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..129, id: Name("b"), ctx: Load, @@ -252,9 +288,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 135..138, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 135..138, }, ), @@ -264,9 +302,11 @@ Module( elif_else_clauses: [ ElifElseClause { range: 139..157, + node_index: AtomicNodeIndex(..), test: Some( BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 144..148, value: true, }, @@ -275,9 +315,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 154..157, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 154..157, }, ), @@ -287,9 +329,11 @@ Module( }, ElifElseClause { range: 158..173, + node_index: AtomicNodeIndex(..), test: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 163..164, id: Name("c"), ctx: Load, @@ -299,9 +343,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 170..173, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 170..173, }, ), @@ -311,9 +357,11 @@ Module( }, ElifElseClause { range: 174..189, + node_index: AtomicNodeIndex(..), test: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 179..180, id: Name("d"), ctx: Load, @@ -323,9 +371,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 186..189, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 186..189, }, ), @@ -335,16 +385,20 @@ Module( }, ElifElseClause { range: 190..203, + node_index: AtomicNodeIndex(..), test: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 200..203, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 200..203, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 200..201, id: Name("f"), ctx: Load, @@ -352,6 +406,7 @@ Module( ), arguments: Arguments { range: 201..203, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -366,12 +421,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 229..260, test: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 232..238, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 232..233, id: Name("a"), ctx: Store, @@ -379,6 +437,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 237..238, id: Name("b"), ctx: Load, @@ -389,9 +448,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 240..243, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 240..243, }, ), @@ -401,12 +462,15 @@ Module( elif_else_clauses: [ ElifElseClause { range: 244..260, + node_index: AtomicNodeIndex(..), test: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 249..255, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 249..250, id: Name("a"), ctx: Store, @@ -414,6 +478,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 254..255, id: Name("b"), ctx: Load, @@ -425,9 +490,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 257..260, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 257..260, }, ), @@ -440,22 +507,30 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 261..302, test: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 264..275, parameters: Some( Parameters { range: 271..272, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 271..272, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 271..272, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 271..272, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -469,6 +544,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 274..275, id: Name("x"), ctx: Load, @@ -479,9 +555,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 277..280, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 277..280, }, ), @@ -491,22 +569,30 @@ Module( elif_else_clauses: [ ElifElseClause { range: 281..302, + node_index: AtomicNodeIndex(..), test: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 286..297, parameters: Some( Parameters { range: 293..294, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 293..294, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 293..294, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 293..294, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -520,6 +606,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 296..297, id: Name("x"), ctx: Load, @@ -531,9 +618,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 299..302, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 299..302, }, ), @@ -546,12 +635,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 303..336, test: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 306..313, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 312..313, id: Name("x"), ctx: Load, @@ -562,9 +654,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 315..318, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 315..318, }, ), @@ -574,12 +668,15 @@ Module( elif_else_clauses: [ ElifElseClause { range: 319..336, + node_index: AtomicNodeIndex(..), test: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 324..331, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 330..331, id: Name("x"), ctx: Load, @@ -591,9 +688,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 333..336, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 333..336, }, ), @@ -606,13 +705,16 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 337..374, test: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 341..348, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 347..348, id: Name("x"), ctx: Load, @@ -624,9 +726,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 351..354, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 351..354, }, ), @@ -636,13 +740,16 @@ Module( elif_else_clauses: [ ElifElseClause { range: 355..374, + node_index: AtomicNodeIndex(..), test: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 361..368, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 367..368, id: Name("x"), ctx: Load, @@ -655,9 +762,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 371..374, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 371..374, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__import.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__import.py.snap index 37d5ef833a..4d4d08b963 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__import.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__import.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/import.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..92, body: [ Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 0..8, names: [ Alias { range: 7..8, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 7..8, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -27,13 +30,16 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 9..21, names: [ Alias { range: 16..21, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a.b.c"), range: 16..21, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -42,18 +48,22 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 22..39, names: [ Alias { range: 29..39, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a.b.c"), range: 29..34, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("d"), range: 38..39, + node_index: AtomicNodeIndex(..), }, ), }, @@ -62,29 +72,36 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 40..54, names: [ Alias { range: 47..48, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a"), range: 47..48, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 50..51, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("b"), range: 50..51, + node_index: AtomicNodeIndex(..), }, asname: None, }, Alias { range: 53..54, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("c"), range: 53..54, + node_index: AtomicNodeIndex(..), }, asname: None, }, @@ -93,31 +110,38 @@ Module( ), Import( StmtImport { + node_index: AtomicNodeIndex(..), range: 55..91, names: [ Alias { range: 62..74, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("foo.bar"), range: 62..69, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("a"), range: 73..74, + node_index: AtomicNodeIndex(..), }, ), }, Alias { range: 76..91, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("a.b.c.d"), range: 76..83, + node_index: AtomicNodeIndex(..), }, asname: Some( Identifier { id: Name("abcd"), range: 87..91, + node_index: AtomicNodeIndex(..), }, ), }, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__match.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__match.py.snap index eb24f71df1..1a7192474d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__match.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__match.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/valid/statement/match.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..5770, body: [ Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 67..103, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..74, id: Name("x"), ctx: Load, @@ -22,15 +25,19 @@ Module( cases: [ MatchCase { range: 80..103, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 85..88, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 85..88, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 86..88, value: Complex { real: 0.0, @@ -46,10 +53,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 98..103, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 98..99, id: Name("y"), ctx: Store, @@ -58,6 +67,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 102..103, value: Int( 0, @@ -73,9 +83,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 126..167, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..133, id: Name("x"), ctx: Load, @@ -84,11 +96,14 @@ Module( cases: [ MatchCase { range: 139..167, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 144..152, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 144..149, id: Name("bytes"), ctx: Load, @@ -96,15 +111,18 @@ Module( ), arguments: PatternArguments { range: 149..152, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 150..151, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("z"), range: 150..151, + node_index: AtomicNodeIndex(..), }, ), }, @@ -118,10 +136,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 162..167, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 162..163, id: Name("y"), ctx: Store, @@ -130,6 +150,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 166..167, value: Int( 0, @@ -145,9 +166,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 190..260, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 196..197, id: Name("x"), ctx: Load, @@ -156,11 +179,14 @@ Module( cases: [ MatchCase { range: 203..229, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 208..209, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 208..209, value: Int( 0, @@ -172,6 +198,7 @@ Module( guard: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 213..214, value: Int( 0, @@ -182,10 +209,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 224..229, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 224..225, id: Name("y"), ctx: Store, @@ -194,6 +223,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 228..229, value: Int( 0, @@ -206,11 +236,14 @@ Module( }, MatchCase { range: 234..260, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 239..240, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 239..240, value: Int( 0, @@ -222,6 +255,7 @@ Module( guard: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 244..245, value: Int( 1, @@ -232,10 +266,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 255..260, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 255..256, id: Name("y"), ctx: Store, @@ -244,6 +280,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 259..260, value: Int( 1, @@ -259,9 +296,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 283..332, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 289..290, value: Int( 3, @@ -271,15 +310,19 @@ Module( cases: [ MatchCase { range: 296..332, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 301..314, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 301..302, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 301..302, value: Int( 0, @@ -291,8 +334,10 @@ Module( MatchValue( PatternMatchValue { range: 305..306, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 305..306, value: Int( 1, @@ -304,8 +349,10 @@ Module( MatchValue( PatternMatchValue { range: 309..310, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 309..310, value: Int( 2, @@ -317,8 +364,10 @@ Module( MatchValue( PatternMatchValue { range: 313..314, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 313..314, value: Int( 3, @@ -334,10 +383,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 324..332, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 324..325, id: Name("x"), ctx: Store, @@ -346,6 +397,7 @@ Module( ], value: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 328..332, value: true, }, @@ -359,9 +411,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 355..403, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 361..362, id: Name("x"), ctx: Load, @@ -370,19 +424,24 @@ Module( cases: [ MatchCase { range: 368..403, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 373..388, + node_index: AtomicNodeIndex(..), patterns: [ MatchSequence( PatternMatchSequence { range: 373..379, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 374..375, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 374..375, value: Int( 0, @@ -394,8 +453,10 @@ Module( MatchValue( PatternMatchValue { range: 377..378, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 377..378, value: Int( 1, @@ -410,12 +471,15 @@ Module( MatchSequence( PatternMatchSequence { range: 382..388, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 383..384, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 383..384, value: Int( 1, @@ -427,8 +491,10 @@ Module( MatchValue( PatternMatchValue { range: 386..387, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 386..387, value: Int( 0, @@ -447,10 +513,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 398..403, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 398..399, id: Name("y"), ctx: Store, @@ -459,6 +527,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 402..403, value: Int( 0, @@ -474,9 +543,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 445..523, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 451..452, id: Name("x"), ctx: Load, @@ -485,13 +556,16 @@ Module( cases: [ MatchCase { range: 458..489, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 463..467, + node_index: AtomicNodeIndex(..), patterns: [ MatchStar( PatternMatchStar { range: 464..466, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -502,15 +576,18 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 477..489, value: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 484..489, value: StringLiteralValue { inner: Single( StringLiteral { range: 484..489, + node_index: AtomicNodeIndex(..), value: "seq", flags: StringLiteralFlags { quote_style: Double, @@ -529,9 +606,11 @@ Module( }, MatchCase { range: 494..523, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 499..501, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -541,15 +620,18 @@ Module( body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 511..523, value: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 518..523, value: StringLiteralValue { inner: Single( StringLiteral { range: 518..523, + node_index: AtomicNodeIndex(..), value: "map", flags: StringLiteralFlags { quote_style: Double, @@ -571,9 +653,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 546..714, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 552..553, id: Name("x"), ctx: Load, @@ -582,12 +666,15 @@ Module( cases: [ MatchCase { range: 559..594, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 564..579, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 565..566, value: Int( 0, @@ -599,12 +686,15 @@ Module( MatchSequence( PatternMatchSequence { range: 568..578, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 569..570, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 569..570, value: Int( 1, @@ -616,8 +706,10 @@ Module( MatchValue( PatternMatchValue { range: 572..573, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 572..573, value: Int( 2, @@ -629,6 +721,7 @@ Module( MatchMapping( PatternMatchMapping { range: 575..577, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -645,10 +738,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 589..594, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 589..590, id: Name("y"), ctx: Store, @@ -657,6 +752,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 593..594, value: Int( 0, @@ -669,16 +765,20 @@ Module( }, MatchCase { range: 599..687, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 604..672, + node_index: AtomicNodeIndex(..), patterns: [ MatchMapping( PatternMatchMapping { range: 604..626, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 605..606, value: Int( 0, @@ -690,16 +790,20 @@ Module( MatchOr( PatternMatchOr { range: 608..625, + node_index: AtomicNodeIndex(..), patterns: [ MatchSequence( PatternMatchSequence { range: 608..618, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 609..610, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 609..610, value: Int( 1, @@ -711,8 +815,10 @@ Module( MatchValue( PatternMatchValue { range: 612..613, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 612..613, value: Int( 2, @@ -724,6 +830,7 @@ Module( MatchMapping( PatternMatchMapping { range: 615..617, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -735,6 +842,7 @@ Module( MatchSingleton( PatternMatchSingleton { range: 621..625, + node_index: AtomicNodeIndex(..), value: True, }, ), @@ -748,9 +856,11 @@ Module( MatchMapping( PatternMatchMapping { range: 629..638, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 630..631, value: Int( 1, @@ -762,10 +872,12 @@ Module( MatchSequence( PatternMatchSequence { range: 633..637, + node_index: AtomicNodeIndex(..), patterns: [ MatchSequence( PatternMatchSequence { range: 634..636, + node_index: AtomicNodeIndex(..), patterns: [], }, ), @@ -779,9 +891,11 @@ Module( MatchMapping( PatternMatchMapping { range: 641..656, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 642..643, value: Int( 0, @@ -793,12 +907,15 @@ Module( MatchSequence( PatternMatchSequence { range: 645..655, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 646..647, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 646..647, value: Int( 1, @@ -810,8 +927,10 @@ Module( MatchValue( PatternMatchValue { range: 649..650, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 649..650, value: Int( 2, @@ -823,6 +942,7 @@ Module( MatchMapping( PatternMatchMapping { range: 652..654, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -838,19 +958,23 @@ Module( MatchSequence( PatternMatchSequence { range: 659..661, + node_index: AtomicNodeIndex(..), patterns: [], }, ), MatchValue( PatternMatchValue { range: 664..667, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 664..667, value: StringLiteralValue { inner: Single( StringLiteral { range: 664..667, + node_index: AtomicNodeIndex(..), value: "X", flags: StringLiteralFlags { quote_style: Double, @@ -867,6 +991,7 @@ Module( MatchMapping( PatternMatchMapping { range: 670..672, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -879,10 +1004,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 682..687, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 682..683, id: Name("y"), ctx: Store, @@ -891,6 +1018,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 686..687, value: Int( 1, @@ -903,9 +1031,11 @@ Module( }, MatchCase { range: 692..714, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 697..699, + node_index: AtomicNodeIndex(..), patterns: [], }, ), @@ -913,10 +1043,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 709..714, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 709..710, id: Name("y"), ctx: Store, @@ -925,6 +1057,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 713..714, value: Int( 2, @@ -940,9 +1073,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 737..782, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 743..744, id: Name("x"), ctx: Load, @@ -951,14 +1086,18 @@ Module( cases: [ MatchCase { range: 750..782, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 755..767, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 755..767, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 755..759, value: Float( 0.25, @@ -968,6 +1107,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 762..767, value: Complex { real: 0.0, @@ -983,10 +1123,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 777..782, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 777..778, id: Name("y"), ctx: Store, @@ -995,6 +1137,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 781..782, value: Int( 0, @@ -1010,9 +1153,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 805..841, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 811..812, id: Name("x"), ctx: Load, @@ -1021,15 +1166,19 @@ Module( cases: [ MatchCase { range: 818..841, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 823..826, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 823..826, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 824..826, value: Complex { real: 0.0, @@ -1045,10 +1194,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 836..841, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 836..837, id: Name("y"), ctx: Store, @@ -1057,6 +1208,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 840..841, value: Int( 0, @@ -1072,9 +1224,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 864..913, subject: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 870..871, value: Int( 4, @@ -1084,15 +1238,19 @@ Module( cases: [ MatchCase { range: 877..913, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 882..895, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 882..883, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 882..883, value: Int( 0, @@ -1104,8 +1262,10 @@ Module( MatchValue( PatternMatchValue { range: 886..887, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 886..887, value: Int( 1, @@ -1117,8 +1277,10 @@ Module( MatchValue( PatternMatchValue { range: 890..891, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 890..891, value: Int( 2, @@ -1130,8 +1292,10 @@ Module( MatchValue( PatternMatchValue { range: 894..895, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 894..895, value: Int( 3, @@ -1147,10 +1311,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 905..913, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 905..906, id: Name("x"), ctx: Store, @@ -1159,6 +1325,7 @@ Module( ], value: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 909..913, value: true, }, @@ -1172,9 +1339,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 936..975, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 942..943, id: Name("x"), ctx: Load, @@ -1183,11 +1352,14 @@ Module( cases: [ MatchCase { range: 949..975, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 954..955, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 954..955, value: Int( 0, @@ -1199,6 +1371,7 @@ Module( guard: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 959..960, id: Name("x"), ctx: Load, @@ -1208,10 +1381,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 970..975, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 970..971, id: Name("y"), ctx: Store, @@ -1220,6 +1395,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 974..975, value: Int( 0, @@ -1235,9 +1411,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 998..1098, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1004..1005, id: Name("x"), ctx: Load, @@ -1246,12 +1424,15 @@ Module( cases: [ MatchCase { range: 1011..1037, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 1016..1022, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1017..1018, value: Int( 1, @@ -1263,8 +1444,10 @@ Module( MatchValue( PatternMatchValue { range: 1020..1021, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1020..1021, value: Int( 0, @@ -1281,10 +1464,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1032..1037, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1032..1033, id: Name("y"), ctx: Store, @@ -1293,6 +1478,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1036..1037, value: Int( 0, @@ -1305,12 +1491,15 @@ Module( }, MatchCase { range: 1042..1068, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 1047..1053, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1048..1049, value: Int( 0, @@ -1322,8 +1511,10 @@ Module( MatchValue( PatternMatchValue { range: 1051..1052, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1051..1052, value: Int( 0, @@ -1340,10 +1531,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1063..1068, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1063..1064, id: Name("y"), ctx: Store, @@ -1352,6 +1545,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1067..1068, value: Int( 1, @@ -1364,15 +1558,18 @@ Module( }, MatchCase { range: 1073..1098, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 1078..1083, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: Some( Identifier { id: Name("z"), range: 1081..1082, + node_index: AtomicNodeIndex(..), }, ), }, @@ -1381,10 +1578,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1093..1098, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1093..1094, id: Name("y"), ctx: Store, @@ -1393,6 +1592,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1097..1098, value: Int( 2, @@ -1408,12 +1608,15 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1121..1162, subject: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1127..1132, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1127..1130, id: Name("Seq"), ctx: Load, @@ -1421,6 +1624,7 @@ Module( ), arguments: Arguments { range: 1130..1132, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -1429,13 +1633,16 @@ Module( cases: [ MatchCase { range: 1138..1162, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 1143..1147, + node_index: AtomicNodeIndex(..), patterns: [ MatchStar( PatternMatchStar { range: 1144..1146, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -1446,10 +1653,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1157..1162, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1157..1158, id: Name("y"), ctx: Store, @@ -1458,6 +1667,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1161..1162, value: Int( 0, @@ -1473,9 +1683,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1185..1245, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1191..1192, id: Name("x"), ctx: Load, @@ -1484,11 +1696,14 @@ Module( cases: [ MatchCase { range: 1198..1219, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 1203..1204, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1203..1204, value: Int( 1, @@ -1501,10 +1716,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1214..1219, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1214..1215, id: Name("y"), ctx: Store, @@ -1513,6 +1730,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1218..1219, value: Int( 0, @@ -1525,11 +1743,14 @@ Module( }, MatchCase { range: 1224..1245, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 1229..1230, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1229..1230, value: Int( 1, @@ -1542,10 +1763,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1240..1245, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1240..1241, id: Name("y"), ctx: Store, @@ -1554,6 +1777,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1244..1245, value: Int( 1, @@ -1569,9 +1793,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1268..1315, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1274..1275, id: Name("x"), ctx: Load, @@ -1580,17 +1806,21 @@ Module( cases: [ MatchCase { range: 1281..1315, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 1286..1298, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 1287..1292, value: StringLiteralValue { inner: Single( StringLiteral { range: 1287..1292, + node_index: AtomicNodeIndex(..), value: "foo", flags: StringLiteralFlags { quote_style: Double, @@ -1607,11 +1837,13 @@ Module( MatchAs( PatternMatchAs { range: 1294..1297, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("bar"), range: 1294..1297, + node_index: AtomicNodeIndex(..), }, ), }, @@ -1624,10 +1856,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1308..1315, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1308..1309, id: Name("y"), ctx: Store, @@ -1636,6 +1870,7 @@ Module( ], value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1312..1315, id: Name("bar"), ctx: Load, @@ -1650,13 +1885,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1338..1392, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1344..1353, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1345..1346, value: Int( 0, @@ -1665,6 +1903,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1348..1349, value: Int( 1, @@ -1673,6 +1912,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1351..1352, value: Int( 2, @@ -1687,15 +1927,19 @@ Module( cases: [ MatchCase { range: 1359..1392, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 1364..1377, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 1365..1366, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1365..1366, value: Int( 0, @@ -1707,8 +1951,10 @@ Module( MatchValue( PatternMatchValue { range: 1368..1369, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1368..1369, value: Int( 1, @@ -1720,10 +1966,12 @@ Module( MatchStar( PatternMatchStar { range: 1371..1373, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("x"), range: 1372..1373, + node_index: AtomicNodeIndex(..), }, ), }, @@ -1731,8 +1979,10 @@ Module( MatchValue( PatternMatchValue { range: 1375..1376, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1375..1376, value: Int( 2, @@ -1748,10 +1998,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1387..1392, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1387..1388, id: Name("y"), ctx: Store, @@ -1760,6 +2012,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1391..1392, value: Int( 0, @@ -1775,9 +2028,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1415..1529, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1421..1422, id: Name("x"), ctx: Load, @@ -1786,15 +2041,19 @@ Module( cases: [ MatchCase { range: 1428..1451, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 1433..1436, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 1434..1435, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1434..1435, value: Int( 0, @@ -1810,10 +2069,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1446..1451, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1446..1447, id: Name("y"), ctx: Store, @@ -1822,6 +2083,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1450..1451, value: Int( 0, @@ -1834,15 +2096,19 @@ Module( }, MatchCase { range: 1456..1498, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 1461..1467, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 1462..1463, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1462..1463, value: Int( 1, @@ -1854,8 +2120,10 @@ Module( MatchValue( PatternMatchValue { range: 1465..1466, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1465..1466, value: Int( 0, @@ -1870,9 +2138,11 @@ Module( guard: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1472..1482, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1472..1473, id: Name("x"), ctx: Store, @@ -1880,9 +2150,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1477..1482, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1477..1478, id: Name("x"), ctx: Load, @@ -1890,11 +2162,13 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 1479..1481, lower: None, upper: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1480..1481, value: Int( 0, @@ -1914,10 +2188,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1493..1498, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1493..1494, id: Name("y"), ctx: Store, @@ -1926,6 +2202,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1497..1498, value: Int( 1, @@ -1938,15 +2215,19 @@ Module( }, MatchCase { range: 1503..1529, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 1508..1514, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 1509..1510, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1509..1510, value: Int( 1, @@ -1958,8 +2239,10 @@ Module( MatchValue( PatternMatchValue { range: 1512..1513, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1512..1513, value: Int( 0, @@ -1975,10 +2258,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1524..1529, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1524..1525, id: Name("y"), ctx: Store, @@ -1987,6 +2272,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1528..1529, value: Int( 2, @@ -2002,9 +2288,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1552..1595, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1558..1559, id: Name("w"), ctx: Load, @@ -2013,18 +2301,22 @@ Module( cases: [ MatchCase { range: 1565..1595, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 1570..1580, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 1571..1572, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 1571..1572, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2032,11 +2324,13 @@ Module( MatchAs( PatternMatchAs { range: 1574..1575, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 1574..1575, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2044,6 +2338,7 @@ Module( MatchStar( PatternMatchStar { range: 1577..1579, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -2054,10 +2349,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1590..1595, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1590..1591, id: Name("z"), ctx: Store, @@ -2066,6 +2363,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1594..1595, value: Int( 0, @@ -2081,9 +2379,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1618..1664, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1624..1625, id: Name("x"), ctx: Load, @@ -2092,18 +2392,23 @@ Module( cases: [ MatchCase { range: 1631..1664, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 1636..1649, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1636..1649, left: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 1636..1641, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1637..1641, value: Float( 0.25, @@ -2115,6 +2420,7 @@ Module( op: Sub, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1644..1649, value: Complex { real: 0.0, @@ -2130,10 +2436,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1659..1664, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1659..1660, id: Name("y"), ctx: Store, @@ -2142,6 +2450,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1663..1664, value: Int( 0, @@ -2157,13 +2466,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1687..1726, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1693..1697, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1694..1695, id: Name("x"), ctx: Load, @@ -2177,18 +2489,22 @@ Module( cases: [ MatchCase { range: 1703..1726, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 1708..1711, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 1709..1710, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 1709..1710, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2200,10 +2516,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1721..1726, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1721..1722, id: Name("z"), ctx: Store, @@ -2212,6 +2530,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1725..1726, value: Int( 0, @@ -2227,9 +2546,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1749..1789, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1755..1756, id: Name("x"), ctx: Load, @@ -2238,20 +2559,26 @@ Module( cases: [ MatchCase { range: 1762..1789, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 1767..1774, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1767..1774, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1767..1772, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1767..1770, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1767..1768, id: Name("A"), ctx: Load, @@ -2260,6 +2587,7 @@ Module( attr: Identifier { id: Name("B"), range: 1769..1770, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2267,6 +2595,7 @@ Module( attr: Identifier { id: Name("C"), range: 1771..1772, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2274,6 +2603,7 @@ Module( attr: Identifier { id: Name("D"), range: 1773..1774, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2284,10 +2614,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1784..1789, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1784..1785, id: Name("y"), ctx: Store, @@ -2296,6 +2628,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1788..1789, value: Int( 0, @@ -2311,9 +2644,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1812..1849, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1818..1819, id: Name("x"), ctx: Load, @@ -2322,9 +2657,11 @@ Module( cases: [ MatchCase { range: 1825..1849, + node_index: AtomicNodeIndex(..), pattern: MatchSingleton( PatternMatchSingleton { range: 1830..1834, + node_index: AtomicNodeIndex(..), value: None, }, ), @@ -2332,10 +2669,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1844..1849, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1844..1845, id: Name("y"), ctx: Store, @@ -2344,6 +2683,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1848..1849, value: Int( 0, @@ -2359,9 +2699,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1872..1906, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1878..1879, id: Name("x"), ctx: Load, @@ -2370,11 +2712,14 @@ Module( cases: [ MatchCase { range: 1885..1906, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 1890..1891, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1890..1891, value: Int( 0, @@ -2387,10 +2732,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1901..1906, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1901..1902, id: Name("y"), ctx: Store, @@ -2399,6 +2746,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1905..1906, value: Int( 0, @@ -2414,9 +2762,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1929..1967, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1935..1936, id: Name("x"), ctx: Load, @@ -2425,9 +2775,11 @@ Module( cases: [ MatchCase { range: 1942..1967, + node_index: AtomicNodeIndex(..), pattern: MatchSingleton( PatternMatchSingleton { range: 1947..1952, + node_index: AtomicNodeIndex(..), value: False, }, ), @@ -2435,10 +2787,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1962..1967, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1962..1963, id: Name("y"), ctx: Store, @@ -2447,6 +2801,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1966..1967, value: Int( 0, @@ -2462,9 +2817,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 1990..2081, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1996..1997, id: Name("x"), ctx: Load, @@ -2473,9 +2830,11 @@ Module( cases: [ MatchCase { range: 2003..2025, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2008..2010, + node_index: AtomicNodeIndex(..), patterns: [], }, ), @@ -2483,10 +2842,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2020..2025, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2020..2021, id: Name("y"), ctx: Store, @@ -2495,6 +2856,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2024..2025, value: Int( 0, @@ -2507,20 +2869,25 @@ Module( }, MatchCase { range: 2030..2054, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2035..2039, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 2036..2038, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 2036..2038, value: StringLiteralValue { inner: Single( StringLiteral { range: 2036..2038, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Double, @@ -2541,10 +2908,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2049..2054, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2049..2050, id: Name("y"), ctx: Store, @@ -2553,6 +2922,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2053..2054, value: Int( 1, @@ -2565,16 +2935,20 @@ Module( }, MatchCase { range: 2059..2081, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 2064..2066, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 2064..2066, value: StringLiteralValue { inner: Single( StringLiteral { range: 2064..2066, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Double, @@ -2592,10 +2966,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2076..2081, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2076..2077, id: Name("y"), ctx: Store, @@ -2604,6 +2980,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2080..2081, value: Int( 2, @@ -2619,9 +2996,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2104..2138, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2110..2111, id: Name("x"), ctx: Load, @@ -2630,14 +3009,17 @@ Module( cases: [ MatchCase { range: 2117..2138, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 2122..2123, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("z"), range: 2122..2123, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2646,10 +3028,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2133..2138, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2133..2134, id: Name("y"), ctx: Store, @@ -2658,6 +3042,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2137..2138, value: Int( 0, @@ -2673,9 +3058,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2161..2207, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2167..2168, id: Name("w"), ctx: Load, @@ -2684,18 +3071,22 @@ Module( cases: [ MatchCase { range: 2174..2207, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2179..2192, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 2180..2181, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("x"), range: 2180..2181, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2703,11 +3094,13 @@ Module( MatchAs( PatternMatchAs { range: 2183..2184, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 2183..2184, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2715,10 +3108,12 @@ Module( MatchStar( PatternMatchStar { range: 2186..2191, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("rest"), range: 2187..2191, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2730,10 +3125,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2202..2207, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2202..2203, id: Name("z"), ctx: Store, @@ -2742,6 +3139,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2206..2207, value: Int( 0, @@ -2757,9 +3155,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2230..2307, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2236..2237, id: Name("x"), ctx: Load, @@ -2768,19 +3168,24 @@ Module( cases: [ MatchCase { range: 2243..2307, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 2248..2278, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 2249..2255, + node_index: AtomicNodeIndex(..), pattern: Some( MatchValue( PatternMatchValue { range: 2249..2250, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2249..2250, value: Int( 0, @@ -2794,6 +3199,7 @@ Module( Identifier { id: Name("z"), range: 2254..2255, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2801,12 +3207,15 @@ Module( MatchAs( PatternMatchAs { range: 2260..2266, + node_index: AtomicNodeIndex(..), pattern: Some( MatchValue( PatternMatchValue { range: 2260..2261, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2260..2261, value: Int( 1, @@ -2820,6 +3229,7 @@ Module( Identifier { id: Name("z"), range: 2265..2266, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2827,12 +3237,15 @@ Module( MatchAs( PatternMatchAs { range: 2271..2277, + node_index: AtomicNodeIndex(..), pattern: Some( MatchValue( PatternMatchValue { range: 2271..2272, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2271..2272, value: Int( 2, @@ -2846,6 +3259,7 @@ Module( Identifier { id: Name("z"), range: 2276..2277, + node_index: AtomicNodeIndex(..), }, ), }, @@ -2856,9 +3270,11 @@ Module( guard: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 2282..2292, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2282..2283, id: Name("z"), ctx: Load, @@ -2870,9 +3286,11 @@ Module( comparators: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 2287..2292, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2287..2288, id: Name("x"), ctx: Load, @@ -2881,6 +3299,7 @@ Module( op: Mod, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2291..2292, value: Int( 2, @@ -2896,10 +3315,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2302..2307, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2302..2303, id: Name("y"), ctx: Store, @@ -2908,6 +3329,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2306..2307, value: Int( 0, @@ -2923,9 +3345,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2330..2499, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2336..2337, id: Name("x"), ctx: Load, @@ -2934,12 +3358,15 @@ Module( cases: [ MatchCase { range: 2343..2378, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 2348..2363, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2349..2350, value: Int( 0, @@ -2951,12 +3378,15 @@ Module( MatchSequence( PatternMatchSequence { range: 2352..2362, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 2353..2354, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2353..2354, value: Int( 1, @@ -2968,8 +3398,10 @@ Module( MatchValue( PatternMatchValue { range: 2356..2357, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2356..2357, value: Int( 2, @@ -2981,6 +3413,7 @@ Module( MatchMapping( PatternMatchMapping { range: 2359..2361, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -2997,10 +3430,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2373..2378, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2373..2374, id: Name("y"), ctx: Store, @@ -3009,6 +3444,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2377..2378, value: Int( 0, @@ -3021,16 +3457,20 @@ Module( }, MatchCase { range: 2383..2472, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 2388..2457, + node_index: AtomicNodeIndex(..), patterns: [ MatchMapping( PatternMatchMapping { range: 2388..2411, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2389..2390, value: Int( 0, @@ -3042,16 +3482,20 @@ Module( MatchOr( PatternMatchOr { range: 2392..2410, + node_index: AtomicNodeIndex(..), patterns: [ MatchSequence( PatternMatchSequence { range: 2392..2402, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 2393..2394, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2393..2394, value: Int( 1, @@ -3063,8 +3507,10 @@ Module( MatchValue( PatternMatchValue { range: 2396..2397, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2396..2397, value: Int( 2, @@ -3076,6 +3522,7 @@ Module( MatchMapping( PatternMatchMapping { range: 2399..2401, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -3087,6 +3534,7 @@ Module( MatchSingleton( PatternMatchSingleton { range: 2405..2410, + node_index: AtomicNodeIndex(..), value: False, }, ), @@ -3100,9 +3548,11 @@ Module( MatchMapping( PatternMatchMapping { range: 2414..2423, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2415..2416, value: Int( 1, @@ -3114,10 +3564,12 @@ Module( MatchSequence( PatternMatchSequence { range: 2418..2422, + node_index: AtomicNodeIndex(..), patterns: [ MatchSequence( PatternMatchSequence { range: 2419..2421, + node_index: AtomicNodeIndex(..), patterns: [], }, ), @@ -3131,9 +3583,11 @@ Module( MatchMapping( PatternMatchMapping { range: 2426..2441, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2427..2428, value: Int( 0, @@ -3145,12 +3599,15 @@ Module( MatchSequence( PatternMatchSequence { range: 2430..2440, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 2431..2432, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2431..2432, value: Int( 1, @@ -3162,8 +3619,10 @@ Module( MatchValue( PatternMatchValue { range: 2434..2435, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2434..2435, value: Int( 2, @@ -3175,6 +3634,7 @@ Module( MatchMapping( PatternMatchMapping { range: 2437..2439, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -3190,19 +3650,23 @@ Module( MatchSequence( PatternMatchSequence { range: 2444..2446, + node_index: AtomicNodeIndex(..), patterns: [], }, ), MatchValue( PatternMatchValue { range: 2449..2452, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 2449..2452, value: StringLiteralValue { inner: Single( StringLiteral { range: 2449..2452, + node_index: AtomicNodeIndex(..), value: "X", flags: StringLiteralFlags { quote_style: Double, @@ -3219,6 +3683,7 @@ Module( MatchMapping( PatternMatchMapping { range: 2455..2457, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: None, @@ -3231,10 +3696,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2467..2472, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2467..2468, id: Name("y"), ctx: Store, @@ -3243,6 +3710,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2471..2472, value: Int( 1, @@ -3255,9 +3723,11 @@ Module( }, MatchCase { range: 2477..2499, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2482..2484, + node_index: AtomicNodeIndex(..), patterns: [], }, ), @@ -3265,10 +3735,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2494..2499, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2494..2495, id: Name("y"), ctx: Store, @@ -3277,6 +3749,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2498..2499, value: Int( 2, @@ -3292,13 +3765,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2522..2568, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2528..2537, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2529..2530, value: Int( 0, @@ -3307,6 +3783,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2532..2533, value: Int( 1, @@ -3315,6 +3792,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2535..2536, value: Int( 2, @@ -3329,15 +3807,19 @@ Module( cases: [ MatchCase { range: 2543..2568, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2548..2553, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 2548..2549, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2548..2549, value: Int( 0, @@ -3349,10 +3831,12 @@ Module( MatchStar( PatternMatchStar { range: 2551..2553, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("x"), range: 2552..2553, + node_index: AtomicNodeIndex(..), }, ), }, @@ -3364,10 +3848,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2563..2568, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2563..2564, id: Name("y"), ctx: Store, @@ -3376,6 +3862,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2567..2568, value: Int( 0, @@ -3391,13 +3878,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2591..2638, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2597..2606, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2598..2599, value: Int( 0, @@ -3406,6 +3896,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2601..2602, value: Int( 1, @@ -3414,6 +3905,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2604..2605, value: Int( 2, @@ -3428,17 +3920,21 @@ Module( cases: [ MatchCase { range: 2612..2638, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2617..2623, + node_index: AtomicNodeIndex(..), patterns: [ MatchStar( PatternMatchStar { range: 2617..2619, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("x"), range: 2618..2619, + node_index: AtomicNodeIndex(..), }, ), }, @@ -3446,8 +3942,10 @@ Module( MatchValue( PatternMatchValue { range: 2621..2622, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2621..2622, value: Int( 2, @@ -3463,10 +3961,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2633..2638, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2633..2634, id: Name("y"), ctx: Store, @@ -3475,6 +3975,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2637..2638, value: Int( 0, @@ -3490,13 +3991,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2661..2697, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2667..2669, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2667..2668, id: Name("x"), ctx: Load, @@ -3510,18 +4014,22 @@ Module( cases: [ MatchCase { range: 2675..2697, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2680..2682, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 2680..2681, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 2680..2681, + node_index: AtomicNodeIndex(..), }, ), }, @@ -3533,10 +4041,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2692..2697, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2692..2693, id: Name("z"), ctx: Store, @@ -3545,6 +4055,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2696..2697, value: Int( 0, @@ -3560,13 +4071,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2720..2760, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2726..2730, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2726..2727, id: Name("w"), ctx: Load, @@ -3574,6 +4088,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2729..2730, id: Name("x"), ctx: Load, @@ -3587,18 +4102,22 @@ Module( cases: [ MatchCase { range: 2736..2760, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2741..2745, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 2741..2742, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 2741..2742, + node_index: AtomicNodeIndex(..), }, ), }, @@ -3606,11 +4125,13 @@ Module( MatchAs( PatternMatchAs { range: 2744..2745, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("z"), range: 2744..2745, + node_index: AtomicNodeIndex(..), }, ), }, @@ -3622,10 +4143,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2755..2760, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2755..2756, id: Name("v"), ctx: Store, @@ -3634,6 +4157,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2759..2760, value: Int( 0, @@ -3649,16 +4173,20 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2783..2829, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 2789..2796, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 2789..2795, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2789..2790, id: Name("w"), ctx: Store, @@ -3666,6 +4194,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2794..2795, id: Name("x"), ctx: Load, @@ -3681,22 +4210,27 @@ Module( cases: [ MatchCase { range: 2802..2829, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 2807..2814, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 2807..2813, + node_index: AtomicNodeIndex(..), pattern: Some( MatchAs( PatternMatchAs { range: 2807..2808, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("y"), range: 2807..2808, + node_index: AtomicNodeIndex(..), }, ), }, @@ -3706,6 +4240,7 @@ Module( Identifier { id: Name("v"), range: 2812..2813, + node_index: AtomicNodeIndex(..), }, ), }, @@ -3717,10 +4252,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 2824..2829, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2824..2825, id: Name("z"), ctx: Store, @@ -3729,6 +4266,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2828..2829, value: Int( 0, @@ -3744,9 +4282,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2831..2952, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2837..2838, id: Name("x"), ctx: Load, @@ -3755,23 +4295,29 @@ Module( cases: [ MatchCase { range: 2927..2952, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 2932..2938, + node_index: AtomicNodeIndex(..), value: FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 2932..2938, value: FStringValue { inner: Single( FString( FString { range: 2932..2938, + node_index: AtomicNodeIndex(..), elements: [ Interpolation( InterpolatedElement { range: 2934..2937, + node_index: AtomicNodeIndex(..), expression: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 2935..2936, id: Name("y"), ctx: Load, @@ -3800,6 +4346,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 2948..2952, }, ), @@ -3810,20 +4357,24 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 2953..3025, subject: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 2959..2970, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 2960..2966, value: StringLiteralValue { inner: Single( StringLiteral { range: 2960..2966, + node_index: AtomicNodeIndex(..), value: "test", flags: StringLiteralFlags { quote_style: Double, @@ -3838,6 +4389,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 2968..2969, value: Int( 1, @@ -3851,15 +4403,18 @@ Module( cases: [ MatchCase { range: 2976..3025, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 2981..3004, + node_index: AtomicNodeIndex(..), keys: [], patterns: [], rest: Some( Identifier { id: Name("rest"), range: 2993..2997, + node_index: AtomicNodeIndex(..), }, ), }, @@ -3868,12 +4423,15 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3014..3025, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 3014..3025, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3014..3019, id: Name("print"), ctx: Load, @@ -3881,9 +4439,11 @@ Module( ), arguments: Arguments { range: 3019..3025, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3020..3024, id: Name("rest"), ctx: Load, @@ -3903,20 +4463,24 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3026..3129, subject: Dict( ExprDict { + node_index: AtomicNodeIndex(..), range: 3032..3049, items: [ DictItem { key: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 3033..3040, value: StringLiteralValue { inner: Single( StringLiteral { range: 3033..3040, + node_index: AtomicNodeIndex(..), value: "label", flags: StringLiteralFlags { quote_style: Double, @@ -3931,11 +4495,13 @@ Module( ), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 3042..3048, value: StringLiteralValue { inner: Single( StringLiteral { range: 3042..3048, + node_index: AtomicNodeIndex(..), value: "test", flags: StringLiteralFlags { quote_style: Double, @@ -3954,17 +4520,21 @@ Module( cases: [ MatchCase { range: 3055..3129, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 3060..3107, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 3070..3077, value: StringLiteralValue { inner: Single( StringLiteral { range: 3070..3077, + node_index: AtomicNodeIndex(..), value: "label", flags: StringLiteralFlags { quote_style: Double, @@ -3981,16 +4551,20 @@ Module( MatchAs( PatternMatchAs { range: 3079..3100, + node_index: AtomicNodeIndex(..), pattern: Some( MatchOr( PatternMatchOr { range: 3079..3091, + node_index: AtomicNodeIndex(..), patterns: [ MatchClass( PatternMatchClass { range: 3079..3084, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3079..3082, id: Name("str"), ctx: Load, @@ -3998,6 +4572,7 @@ Module( ), arguments: PatternArguments { range: 3082..3084, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [], }, @@ -4006,6 +4581,7 @@ Module( MatchSingleton( PatternMatchSingleton { range: 3087..3091, + node_index: AtomicNodeIndex(..), value: None, }, ), @@ -4017,6 +4593,7 @@ Module( Identifier { id: Name("label"), range: 3095..3100, + node_index: AtomicNodeIndex(..), }, ), }, @@ -4029,12 +4606,15 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3117..3129, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 3117..3129, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3117..3122, id: Name("print"), ctx: Load, @@ -4042,9 +4622,11 @@ Module( ), arguments: Arguments { range: 3122..3129, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3123..3128, id: Name("label"), ctx: Load, @@ -4064,9 +4646,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3130..3170, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3136..3137, id: Name("x"), ctx: Load, @@ -4075,15 +4659,19 @@ Module( cases: [ MatchCase { range: 3143..3170, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 3148..3155, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 3149..3150, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3149..3150, value: Int( 0, @@ -4095,8 +4683,10 @@ Module( MatchValue( PatternMatchValue { range: 3152..3153, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3152..3153, value: Int( 1, @@ -4112,10 +4702,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 3165..3170, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3165..3166, id: Name("y"), ctx: Store, @@ -4124,6 +4716,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3169..3170, value: Int( 0, @@ -4139,9 +4732,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3171..3211, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3177..3178, id: Name("x"), ctx: Load, @@ -4150,15 +4745,19 @@ Module( cases: [ MatchCase { range: 3184..3211, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 3189..3196, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 3190..3191, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3190..3191, value: Int( 0, @@ -4170,8 +4769,10 @@ Module( MatchValue( PatternMatchValue { range: 3193..3194, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3193..3194, value: Int( 1, @@ -4187,10 +4788,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 3206..3211, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3206..3207, id: Name("y"), ctx: Store, @@ -4199,6 +4802,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3210..3211, value: Int( 0, @@ -4214,9 +4818,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3212..3249, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3218..3219, id: Name("x"), ctx: Load, @@ -4225,15 +4831,19 @@ Module( cases: [ MatchCase { range: 3225..3249, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 3230..3234, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 3231..3232, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3231..3232, value: Int( 0, @@ -4249,10 +4859,12 @@ Module( body: [ Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 3244..3249, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3244..3245, id: Name("y"), ctx: Store, @@ -4261,6 +4873,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3248..3249, value: Int( 0, @@ -4276,13 +4889,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3250..3284, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3256..3258, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3256..3257, id: Name("x"), ctx: Load, @@ -4296,14 +4912,17 @@ Module( cases: [ MatchCase { range: 3264..3284, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 3269..3270, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("z"), range: 3269..3270, + node_index: AtomicNodeIndex(..), }, ), }, @@ -4312,6 +4931,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 3280..3284, }, ), @@ -4322,13 +4942,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3285..3321, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3291..3295, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3291..3292, id: Name("x"), ctx: Load, @@ -4336,6 +4959,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3294..3295, id: Name("y"), ctx: Load, @@ -4349,14 +4973,17 @@ Module( cases: [ MatchCase { range: 3301..3321, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 3306..3307, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("z"), range: 3306..3307, + node_index: AtomicNodeIndex(..), }, ), }, @@ -4365,6 +4992,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 3317..3321, }, ), @@ -4375,13 +5003,16 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3322..3359, subject: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 3328..3333, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3328..3329, id: Name("x"), ctx: Load, @@ -4389,6 +5020,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3331..3332, id: Name("y"), ctx: Load, @@ -4402,14 +5034,17 @@ Module( cases: [ MatchCase { range: 3339..3359, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 3344..3345, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("z"), range: 3344..3345, + node_index: AtomicNodeIndex(..), }, ), }, @@ -4418,6 +5053,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 3355..3359, }, ), @@ -4428,9 +5064,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3385..3475, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3391..3392, id: Name("x"), ctx: Load, @@ -4439,9 +5077,11 @@ Module( cases: [ MatchCase { range: 3398..3420, + node_index: AtomicNodeIndex(..), pattern: MatchSingleton( PatternMatchSingleton { range: 3403..3407, + node_index: AtomicNodeIndex(..), value: None, }, ), @@ -4449,9 +5089,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3417..3420, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3417..3420, }, ), @@ -4461,9 +5103,11 @@ Module( }, MatchCase { range: 3425..3447, + node_index: AtomicNodeIndex(..), pattern: MatchSingleton( PatternMatchSingleton { range: 3430..3434, + node_index: AtomicNodeIndex(..), value: True, }, ), @@ -4471,9 +5115,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3444..3447, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3444..3447, }, ), @@ -4483,9 +5129,11 @@ Module( }, MatchCase { range: 3452..3475, + node_index: AtomicNodeIndex(..), pattern: MatchSingleton( PatternMatchSingleton { range: 3457..3462, + node_index: AtomicNodeIndex(..), value: False, }, ), @@ -4493,9 +5141,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3472..3475, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3472..3475, }, ), @@ -4508,9 +5158,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3497..3821, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3503..3504, id: Name("x"), ctx: Load, @@ -4519,14 +5171,18 @@ Module( cases: [ MatchCase { range: 3510..3531, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3515..3518, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 3515..3518, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3515..3516, id: Name("a"), ctx: Load, @@ -4535,6 +5191,7 @@ Module( attr: Identifier { id: Name("b"), range: 3517..3518, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -4545,9 +5202,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3528..3531, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3528..3531, }, ), @@ -4557,17 +5216,22 @@ Module( }, MatchCase { range: 3536..3559, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3541..3546, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 3541..3546, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 3541..3544, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3541..3542, id: Name("a"), ctx: Load, @@ -4576,6 +5240,7 @@ Module( attr: Identifier { id: Name("b"), range: 3543..3544, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -4583,6 +5248,7 @@ Module( attr: Identifier { id: Name("c"), range: 3545..3546, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -4593,9 +5259,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3556..3559, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3556..3559, }, ), @@ -4605,16 +5273,20 @@ Module( }, MatchCase { range: 3564..3584, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3569..3571, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 3569..3571, value: StringLiteralValue { inner: Single( StringLiteral { range: 3569..3571, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, @@ -4632,9 +5304,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3581..3584, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3581..3584, }, ), @@ -4644,16 +5318,20 @@ Module( }, MatchCase { range: 3589..3610, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3594..3597, + node_index: AtomicNodeIndex(..), value: BytesLiteral( ExprBytesLiteral { + node_index: AtomicNodeIndex(..), range: 3594..3597, value: BytesLiteralValue { inner: Single( BytesLiteral { range: 3594..3597, + node_index: AtomicNodeIndex(..), value: [], flags: BytesLiteralFlags { quote_style: Single, @@ -4671,9 +5349,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3607..3610, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3607..3610, }, ), @@ -4683,11 +5363,14 @@ Module( }, MatchCase { range: 3615..3634, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3620..3621, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3620..3621, value: Int( 1, @@ -4700,9 +5383,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3631..3634, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3631..3634, }, ), @@ -4712,11 +5397,14 @@ Module( }, MatchCase { range: 3639..3660, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3644..3647, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3644..3647, value: Float( 1.0, @@ -4729,9 +5417,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3657..3660, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3657..3660, }, ), @@ -4741,11 +5431,14 @@ Module( }, MatchCase { range: 3665..3687, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3670..3674, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3670..3674, value: Complex { real: 0.0, @@ -4759,9 +5452,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3684..3687, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3684..3687, }, ), @@ -4771,14 +5466,18 @@ Module( }, MatchCase { range: 3692..3716, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3697..3703, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 3697..3703, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3697..3698, value: Int( 1, @@ -4788,6 +5487,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3701..3703, value: Complex { real: 0.0, @@ -4803,9 +5503,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3713..3716, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3713..3716, }, ), @@ -4815,15 +5517,19 @@ Module( }, MatchCase { range: 3721..3741, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3726..3728, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 3726..3728, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3727..3728, value: Int( 1, @@ -4838,9 +5544,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3738..3741, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3738..3741, }, ), @@ -4850,15 +5558,19 @@ Module( }, MatchCase { range: 3746..3767, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3751..3754, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 3751..3754, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3752..3754, value: Float( 1.0, @@ -4873,9 +5585,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3764..3767, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3764..3767, }, ), @@ -4885,15 +5599,19 @@ Module( }, MatchCase { range: 3772..3795, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3777..3782, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 3777..3782, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3778..3782, value: Int( 1, @@ -4908,9 +5626,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3792..3795, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3792..3795, }, ), @@ -4920,11 +5640,14 @@ Module( }, MatchCase { range: 3800..3821, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 3806..3807, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3806..3807, value: Int( 1, @@ -4937,9 +5660,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3818..3821, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3818..3821, }, ), @@ -4952,9 +5677,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3840..3927, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3846..3847, id: Name("x"), ctx: Load, @@ -4963,15 +5690,19 @@ Module( cases: [ MatchCase { range: 3853..3876, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 3858..3863, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 3858..3859, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3858..3859, value: Int( 1, @@ -4983,8 +5714,10 @@ Module( MatchValue( PatternMatchValue { range: 3862..3863, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3862..3863, value: Int( 2, @@ -5000,9 +5733,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3873..3876, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3873..3876, }, ), @@ -5012,20 +5747,25 @@ Module( }, MatchCase { range: 3881..3927, + node_index: AtomicNodeIndex(..), pattern: MatchOr( PatternMatchOr { range: 3886..3914, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 3886..3888, + node_index: AtomicNodeIndex(..), value: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 3886..3888, value: StringLiteralValue { inner: Single( StringLiteral { range: 3886..3888, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, @@ -5042,8 +5782,10 @@ Module( MatchValue( PatternMatchValue { range: 3891..3894, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3891..3894, value: Float( 1.1, @@ -5055,12 +5797,15 @@ Module( MatchValue( PatternMatchValue { range: 3897..3899, + node_index: AtomicNodeIndex(..), value: UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 3897..3899, op: USub, operand: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3898..3899, value: Int( 1, @@ -5074,11 +5819,14 @@ Module( MatchValue( PatternMatchValue { range: 3902..3908, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 3902..3908, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3902..3903, value: Int( 1, @@ -5088,6 +5836,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 3906..3908, value: Complex { real: 0.0, @@ -5102,11 +5851,14 @@ Module( MatchValue( PatternMatchValue { range: 3911..3914, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 3911..3914, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3911..3912, id: Name("a"), ctx: Load, @@ -5115,6 +5867,7 @@ Module( attr: Identifier { id: Name("b"), range: 3913..3914, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -5128,9 +5881,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3924..3927, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3924..3927, }, ), @@ -5143,9 +5898,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3946..3978, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3952..3953, id: Name("x"), ctx: Load, @@ -5154,14 +5911,17 @@ Module( cases: [ MatchCase { range: 3959..3978, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 3964..3965, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 3964..3965, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5170,9 +5930,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 3975..3978, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 3975..3978, }, ), @@ -5185,9 +5947,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 3979..4016, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 3985..3986, id: Name("x"), ctx: Load, @@ -5196,18 +5960,22 @@ Module( cases: [ MatchCase { range: 3992..4016, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 3997..4003, + node_index: AtomicNodeIndex(..), pattern: Some( MatchAs( PatternMatchAs { range: 3997..3998, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 3997..3998, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5217,6 +5985,7 @@ Module( Identifier { id: Name("b"), range: 4002..4003, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5225,9 +5994,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4013..4016, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4013..4016, }, ), @@ -5240,9 +6011,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 4017..4157, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4023..4024, id: Name("x"), ctx: Load, @@ -5251,19 +6024,24 @@ Module( cases: [ MatchCase { range: 4030..4060, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 4035..4047, + node_index: AtomicNodeIndex(..), pattern: Some( MatchOr( PatternMatchOr { range: 4035..4040, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4035..4036, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4035..4036, value: Int( 1, @@ -5275,8 +6053,10 @@ Module( MatchValue( PatternMatchValue { range: 4039..4040, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4039..4040, value: Int( 2, @@ -5293,6 +6073,7 @@ Module( Identifier { id: Name("two"), range: 4044..4047, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5301,9 +6082,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4057..4060, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4057..4060, }, ), @@ -5313,18 +6096,23 @@ Module( }, MatchCase { range: 4065..4096, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 4070..4083, + node_index: AtomicNodeIndex(..), pattern: Some( MatchValue( PatternMatchValue { range: 4070..4076, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 4070..4076, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4070..4071, value: Int( 1, @@ -5334,6 +6122,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4074..4076, value: Complex { real: 0.0, @@ -5350,6 +6139,7 @@ Module( Identifier { id: Name("sum"), range: 4080..4083, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5358,9 +6148,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4093..4096, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4093..4096, }, ), @@ -5370,18 +6162,23 @@ Module( }, MatchCase { range: 4101..4128, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 4106..4115, + node_index: AtomicNodeIndex(..), pattern: Some( MatchValue( PatternMatchValue { range: 4106..4109, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 4106..4109, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4106..4107, id: Name("a"), ctx: Load, @@ -5390,6 +6187,7 @@ Module( attr: Identifier { id: Name("b"), range: 4108..4109, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -5401,6 +6199,7 @@ Module( Identifier { id: Name("ab"), range: 4113..4115, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5409,9 +6208,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4125..4128, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4125..4128, }, ), @@ -5421,13 +6222,16 @@ Module( }, MatchCase { range: 4133..4157, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 4138..4144, + node_index: AtomicNodeIndex(..), pattern: Some( MatchAs( PatternMatchAs { range: 4138..4139, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -5437,6 +6241,7 @@ Module( Identifier { id: Name("x"), range: 4143..4144, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5445,9 +6250,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4154..4157, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4154..4157, }, ), @@ -5460,9 +6267,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 4158..4190, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4164..4165, id: Name("x"), ctx: Load, @@ -5471,9 +6280,11 @@ Module( cases: [ MatchCase { range: 4171..4190, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 4176..4177, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -5482,9 +6293,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4187..4190, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4187..4190, }, ), @@ -5497,9 +6310,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 4215..4466, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4221..4222, id: Name("x"), ctx: Load, @@ -5508,15 +6323,19 @@ Module( cases: [ MatchCase { range: 4228..4253, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4233..4240, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4233..4234, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4233..4234, value: Int( 1, @@ -5528,8 +6347,10 @@ Module( MatchValue( PatternMatchValue { range: 4236..4237, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4236..4237, value: Int( 2, @@ -5541,8 +6362,10 @@ Module( MatchValue( PatternMatchValue { range: 4239..4240, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4239..4240, value: Int( 3, @@ -5558,9 +6381,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4250..4253, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4250..4253, }, ), @@ -5570,15 +6395,19 @@ Module( }, MatchCase { range: 4258..4286, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4263..4273, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4264..4265, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4264..4265, value: Int( 1, @@ -5590,8 +6419,10 @@ Module( MatchValue( PatternMatchValue { range: 4267..4268, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4267..4268, value: Int( 2, @@ -5603,8 +6434,10 @@ Module( MatchValue( PatternMatchValue { range: 4270..4271, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4270..4271, value: Int( 3, @@ -5620,9 +6453,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4283..4286, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4283..4286, }, ), @@ -5632,18 +6467,23 @@ Module( }, MatchCase { range: 4291..4331, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4296..4318, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4297..4303, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 4297..4303, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4297..4298, value: Int( 1, @@ -5653,6 +6493,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4301..4303, value: Complex { real: 0.0, @@ -5667,11 +6508,13 @@ Module( MatchAs( PatternMatchAs { range: 4305..4306, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 4305..4306, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5679,17 +6522,21 @@ Module( MatchSingleton( PatternMatchSingleton { range: 4308..4312, + node_index: AtomicNodeIndex(..), value: None, }, ), MatchValue( PatternMatchValue { range: 4314..4317, + node_index: AtomicNodeIndex(..), value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 4314..4317, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4314..4315, id: Name("a"), ctx: Load, @@ -5698,6 +6545,7 @@ Module( attr: Identifier { id: Name("b"), range: 4316..4317, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -5711,9 +6559,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4328..4331, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4328..4331, }, ), @@ -5723,23 +6573,29 @@ Module( }, MatchCase { range: 4336..4370, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 4341..4357, + node_index: AtomicNodeIndex(..), pattern: Some( MatchSequence( PatternMatchSequence { range: 4341..4352, + node_index: AtomicNodeIndex(..), patterns: [ MatchAs( PatternMatchAs { range: 4342..4348, + node_index: AtomicNodeIndex(..), pattern: Some( MatchValue( PatternMatchValue { range: 4342..4343, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4342..4343, value: Int( 1, @@ -5753,6 +6609,7 @@ Module( Identifier { id: Name("X"), range: 4347..4348, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5760,11 +6617,13 @@ Module( MatchAs( PatternMatchAs { range: 4350..4351, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("b"), range: 4350..4351, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5777,6 +6636,7 @@ Module( Identifier { id: Name("S"), range: 4356..4357, + node_index: AtomicNodeIndex(..), }, ), }, @@ -5785,9 +6645,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4367..4370, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4367..4370, }, ), @@ -5797,15 +6659,19 @@ Module( }, MatchCase { range: 4375..4407, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4380..4394, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4381..4382, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4381..4382, value: Int( 1, @@ -5817,8 +6683,10 @@ Module( MatchValue( PatternMatchValue { range: 4384..4385, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4384..4385, value: Int( 2, @@ -5830,11 +6698,14 @@ Module( MatchValue( PatternMatchValue { range: 4387..4393, + node_index: AtomicNodeIndex(..), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 4387..4393, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4387..4388, value: Int( 3, @@ -5844,6 +6715,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4391..4393, value: Complex { real: 0.0, @@ -5862,9 +6734,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4404..4407, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4404..4407, }, ), @@ -5874,19 +6748,24 @@ Module( }, MatchCase { range: 4412..4440, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4417..4427, + node_index: AtomicNodeIndex(..), patterns: [ MatchSequence( PatternMatchSequence { range: 4418..4423, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4419..4420, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4419..4420, value: Int( 1, @@ -5898,8 +6777,10 @@ Module( MatchValue( PatternMatchValue { range: 4421..4422, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4421..4422, value: Int( 2, @@ -5914,8 +6795,10 @@ Module( MatchValue( PatternMatchValue { range: 4425..4426, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4425..4426, value: Int( 3, @@ -5931,9 +6814,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4437..4440, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4437..4440, }, ), @@ -5943,15 +6828,19 @@ Module( }, MatchCase { range: 4445..4466, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4450..4453, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4451..4452, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4451..4452, value: Int( 1, @@ -5967,9 +6856,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4463..4466, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4463..4466, }, ), @@ -5982,9 +6873,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 4487..4616, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4493..4494, id: Name("x"), ctx: Load, @@ -5993,17 +6886,21 @@ Module( cases: [ MatchCase { range: 4500..4521, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4505..4508, + node_index: AtomicNodeIndex(..), patterns: [ MatchStar( PatternMatchStar { range: 4505..4507, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("a"), range: 4506..4507, + node_index: AtomicNodeIndex(..), }, ), }, @@ -6015,9 +6912,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4518..4521, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4518..4521, }, ), @@ -6027,13 +6926,16 @@ Module( }, MatchCase { range: 4526..4547, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4531..4534, + node_index: AtomicNodeIndex(..), patterns: [ MatchStar( PatternMatchStar { range: 4531..4533, + node_index: AtomicNodeIndex(..), name: None, }, ), @@ -6044,9 +6946,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4544..4547, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4544..4547, }, ), @@ -6056,15 +6960,19 @@ Module( }, MatchCase { range: 4552..4583, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4557..4570, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4558..4559, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4558..4559, value: Int( 1, @@ -6076,8 +6984,10 @@ Module( MatchValue( PatternMatchValue { range: 4561..4562, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4561..4562, value: Int( 2, @@ -6089,10 +6999,12 @@ Module( MatchStar( PatternMatchStar { range: 4564..4569, + node_index: AtomicNodeIndex(..), name: Some( Identifier { id: Name("rest"), range: 4565..4569, + node_index: AtomicNodeIndex(..), }, ), }, @@ -6104,9 +7016,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4580..4583, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4580..4583, }, ), @@ -6116,21 +7030,26 @@ Module( }, MatchCase { range: 4588..4616, + node_index: AtomicNodeIndex(..), pattern: MatchSequence( PatternMatchSequence { range: 4593..4603, + node_index: AtomicNodeIndex(..), patterns: [ MatchStar( PatternMatchStar { range: 4594..4596, + node_index: AtomicNodeIndex(..), name: None, }, ), MatchValue( PatternMatchValue { range: 4598..4599, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4598..4599, value: Int( 1, @@ -6142,8 +7061,10 @@ Module( MatchValue( PatternMatchValue { range: 4601..4602, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4601..4602, value: Int( 2, @@ -6159,9 +7080,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4613..4616, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4613..4616, }, ), @@ -6174,9 +7097,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 4638..4910, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4644..4645, id: Name("x"), ctx: Load, @@ -6185,11 +7110,14 @@ Module( cases: [ MatchCase { range: 4651..4676, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 4656..4663, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4656..4661, id: Name("Point"), ctx: Load, @@ -6197,6 +7125,7 @@ Module( ), arguments: PatternArguments { range: 4661..4663, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [], }, @@ -6206,9 +7135,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4673..4676, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4673..4676, }, ), @@ -6218,17 +7149,22 @@ Module( }, MatchCase { range: 4681..4710, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 4686..4697, + node_index: AtomicNodeIndex(..), cls: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 4686..4695, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 4686..4689, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4686..4687, id: Name("a"), ctx: Load, @@ -6237,6 +7173,7 @@ Module( attr: Identifier { id: Name("b"), range: 4688..4689, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -6244,12 +7181,14 @@ Module( attr: Identifier { id: Name("Point"), range: 4690..4695, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: PatternArguments { range: 4695..4697, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [], }, @@ -6259,9 +7198,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4707..4710, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4707..4710, }, ), @@ -6271,11 +7212,14 @@ Module( }, MatchCase { range: 4715..4745, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 4720..4732, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4720..4727, id: Name("Point2D"), ctx: Load, @@ -6283,19 +7227,24 @@ Module( ), arguments: PatternArguments { range: 4727..4732, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 4728..4731, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 4728..4729, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 4730..4731, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4730..4731, value: Int( 0, @@ -6313,9 +7262,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4742..4745, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4742..4745, }, ), @@ -6325,11 +7276,14 @@ Module( }, MatchCase { range: 4750..4786, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 4755..4773, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4755..4762, id: Name("Point2D"), ctx: Load, @@ -6337,19 +7291,24 @@ Module( ), arguments: PatternArguments { range: 4762..4773, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 4763..4766, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 4763..4764, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 4765..4766, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4765..4766, value: Int( 0, @@ -6361,15 +7320,19 @@ Module( }, PatternKeyword { range: 4768..4771, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("y"), range: 4768..4769, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 4770..4771, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4770..4771, value: Int( 0, @@ -6387,9 +7350,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4783..4786, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4783..4786, }, ), @@ -6399,11 +7364,14 @@ Module( }, MatchCase { range: 4791..4822, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 4796..4809, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4796..4803, id: Name("Point2D"), ctx: Load, @@ -6411,12 +7379,15 @@ Module( ), arguments: PatternArguments { range: 4803..4809, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4804..4805, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4804..4805, value: Int( 0, @@ -6428,8 +7399,10 @@ Module( MatchValue( PatternMatchValue { range: 4807..4808, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4807..4808, value: Int( 1, @@ -6447,9 +7420,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4819..4822, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4819..4822, }, ), @@ -6459,11 +7434,14 @@ Module( }, MatchCase { range: 4827..4865, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 4832..4852, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4832..4839, id: Name("Point2D"), ctx: Load, @@ -6471,16 +7449,20 @@ Module( ), arguments: PatternArguments { range: 4839..4852, + node_index: AtomicNodeIndex(..), patterns: [ MatchSequence( PatternMatchSequence { range: 4840..4846, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4841..4842, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4841..4842, value: Int( 0, @@ -6492,8 +7474,10 @@ Module( MatchValue( PatternMatchValue { range: 4844..4845, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4844..4845, value: Int( 1, @@ -6509,15 +7493,19 @@ Module( keywords: [ PatternKeyword { range: 4848..4851, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("y"), range: 4848..4849, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 4850..4851, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4850..4851, value: Int( 1, @@ -6535,9 +7523,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4862..4865, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4862..4865, }, ), @@ -6547,11 +7537,14 @@ Module( }, MatchCase { range: 4870..4910, + node_index: AtomicNodeIndex(..), pattern: MatchClass( PatternMatchClass { range: 4875..4897, + node_index: AtomicNodeIndex(..), cls: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4875..4882, id: Name("Point2D"), ctx: Load, @@ -6559,23 +7552,29 @@ Module( ), arguments: PatternArguments { range: 4882..4897, + node_index: AtomicNodeIndex(..), patterns: [], keywords: [ PatternKeyword { range: 4883..4891, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("x"), range: 4883..4884, + node_index: AtomicNodeIndex(..), }, pattern: MatchSequence( PatternMatchSequence { range: 4885..4891, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 4886..4887, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4886..4887, value: Int( 0, @@ -6587,8 +7586,10 @@ Module( MatchValue( PatternMatchValue { range: 4889..4890, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4889..4890, value: Int( 1, @@ -6603,15 +7604,19 @@ Module( }, PatternKeyword { range: 4893..4896, + node_index: AtomicNodeIndex(..), attr: Identifier { id: Name("y"), range: 4893..4894, + node_index: AtomicNodeIndex(..), }, pattern: MatchValue( PatternMatchValue { range: 4895..4896, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4895..4896, value: Int( 1, @@ -6629,9 +7634,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4907..4910, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4907..4910, }, ), @@ -6644,12 +7651,15 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 4934..5028, subject: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 4940..4946, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4940..4941, id: Name("x"), ctx: Store, @@ -6657,6 +7667,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 4945..4946, id: Name("b"), ctx: Load, @@ -6667,12 +7678,15 @@ Module( cases: [ MatchCase { range: 4952..4976, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 4957..4963, + node_index: AtomicNodeIndex(..), keys: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 4958..4959, value: Int( 1, @@ -6684,6 +7698,7 @@ Module( MatchAs( PatternMatchAs { range: 4961..4962, + node_index: AtomicNodeIndex(..), pattern: None, name: None, }, @@ -6696,9 +7711,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 4973..4976, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 4973..4976, }, ), @@ -6708,17 +7725,21 @@ Module( }, MatchCase { range: 4981..5028, + node_index: AtomicNodeIndex(..), pattern: MatchMapping( PatternMatchMapping { range: 4986..5015, + node_index: AtomicNodeIndex(..), keys: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 4987..4989, value: StringLiteralValue { inner: Single( StringLiteral { range: 4987..4989, + node_index: AtomicNodeIndex(..), value: "", flags: StringLiteralFlags { quote_style: Single, @@ -6732,6 +7753,7 @@ Module( ), NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 4994..4998, }, ), @@ -6740,11 +7762,13 @@ Module( MatchAs( PatternMatchAs { range: 4991..4992, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 4991..4992, + node_index: AtomicNodeIndex(..), }, ), }, @@ -6752,12 +7776,15 @@ Module( MatchSequence( PatternMatchSequence { range: 5000..5006, + node_index: AtomicNodeIndex(..), patterns: [ MatchValue( PatternMatchValue { range: 5001..5002, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5001..5002, value: Int( 1, @@ -6769,8 +7796,10 @@ Module( MatchValue( PatternMatchValue { range: 5004..5005, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5004..5005, value: Int( 2, @@ -6787,6 +7816,7 @@ Module( Identifier { id: Name("rest"), range: 5010..5014, + node_index: AtomicNodeIndex(..), }, ), }, @@ -6795,9 +7825,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5025..5028, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 5025..5028, }, ), @@ -6810,9 +7842,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 5046..5106, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5052..5053, id: Name("y"), ctx: Load, @@ -6821,14 +7855,17 @@ Module( cases: [ MatchCase { range: 5059..5080, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 5064..5065, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("a"), range: 5064..5065, + node_index: AtomicNodeIndex(..), }, ), }, @@ -6836,9 +7873,11 @@ Module( guard: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 5069..5075, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5069..5070, id: Name("b"), ctx: Store, @@ -6846,6 +7885,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5074..5075, id: Name("c"), ctx: Load, @@ -6857,9 +7897,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5077..5080, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 5077..5080, }, ), @@ -6869,14 +7911,17 @@ Module( }, MatchCase { range: 5085..5106, + node_index: AtomicNodeIndex(..), pattern: MatchAs( PatternMatchAs { range: 5090..5091, + node_index: AtomicNodeIndex(..), pattern: None, name: Some( Identifier { id: Name("e"), range: 5090..5091, + node_index: AtomicNodeIndex(..), }, ), }, @@ -6884,9 +7929,11 @@ Module( guard: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 5096..5101, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5096..5097, value: Int( 1, @@ -6899,6 +7946,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5100..5101, value: Int( 2, @@ -6912,9 +7960,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5103..5106, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 5103..5106, }, ), @@ -6927,19 +7977,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5135..5150, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 5135..5150, elts: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5135..5147, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5135..5143, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5135..5140, id: Name("match"), ctx: Load, @@ -6948,6 +8003,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5142..5143, id: Name("a"), ctx: Load, @@ -6958,6 +8014,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5146..5147, id: Name("b"), ctx: Load, @@ -6967,6 +8024,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5149..5150, id: Name("c"), ctx: Load, @@ -6981,16 +8039,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5176..5193, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 5176..5193, elts: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5176..5190, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5176..5181, id: Name("match"), ctx: Load, @@ -6999,9 +8061,11 @@ Module( op: Mult, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5184..5189, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5184..5185, id: Name("a"), ctx: Load, @@ -7010,6 +8074,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5188..5189, id: Name("b"), ctx: Load, @@ -7021,6 +8086,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5192..5193, id: Name("c"), ctx: Load, @@ -7035,12 +8101,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5219..5236, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5219..5236, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5219..5224, id: Name("match"), ctx: Load, @@ -7048,15 +8117,19 @@ Module( ), arguments: Arguments { range: 5225..5236, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 5226..5232, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5227..5232, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5227..5228, id: Name("a"), ctx: Load, @@ -7065,6 +8138,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5231..5232, id: Name("b"), ctx: Load, @@ -7077,6 +8151,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5234..5235, id: Name("c"), ctx: Load, @@ -7091,15 +8166,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5263..5279, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5263..5279, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5263..5275, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5263..5268, id: Name("match"), ctx: Load, @@ -7108,9 +8187,11 @@ Module( op: Sub, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5270..5275, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5270..5271, id: Name("a"), ctx: Load, @@ -7119,6 +8200,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5274..5275, id: Name("b"), ctx: Load, @@ -7131,6 +8213,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5278..5279, id: Name("c"), ctx: Load, @@ -7142,15 +8225,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5306..5324, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5306..5324, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5306..5320, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5306..5311, id: Name("match"), ctx: Load, @@ -7159,9 +8246,11 @@ Module( op: Sub, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5314..5319, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5314..5315, id: Name("a"), ctx: Load, @@ -7170,6 +8259,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5318..5319, id: Name("b"), ctx: Load, @@ -7182,6 +8272,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5323..5324, id: Name("c"), ctx: Load, @@ -7193,18 +8284,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5351..5369, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5351..5369, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 5351..5365, left: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5351..5361, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5351..5356, id: Name("match"), ctx: Load, @@ -7212,13 +8308,16 @@ Module( ), arguments: Arguments { range: 5357..5361, + node_index: AtomicNodeIndex(..), args: [ UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 5358..5360, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5359..5360, id: Name("a"), ctx: Load, @@ -7234,6 +8333,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5364..5365, id: Name("b"), ctx: Load, @@ -7244,6 +8344,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5368..5369, id: Name("c"), ctx: Load, @@ -7255,15 +8356,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5397..5407, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 5397..5407, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5397..5405, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5397..5402, id: Name("match"), ctx: Load, @@ -7271,6 +8376,7 @@ Module( ), arguments: Arguments { range: 5403..5405, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -7279,6 +8385,7 @@ Module( attr: Identifier { id: Name("a"), range: 5406..5407, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -7287,15 +8394,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5424..5436, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 5424..5436, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5424..5434, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5424..5429, id: Name("match"), ctx: Load, @@ -7303,9 +8414,11 @@ Module( ), arguments: Arguments { range: 5430..5434, + node_index: AtomicNodeIndex(..), args: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 5431..5433, elts: [], ctx: Load, @@ -7320,6 +8433,7 @@ Module( attr: Identifier { id: Name("a"), range: 5435..5436, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -7328,15 +8442,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5455..5468, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 5455..5468, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5455..5466, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5455..5460, id: Name("match"), ctx: Load, @@ -7344,9 +8462,11 @@ Module( ), arguments: Arguments { range: 5461..5466, + node_index: AtomicNodeIndex(..), args: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 5462..5464, elts: [], ctx: Load, @@ -7361,6 +8481,7 @@ Module( attr: Identifier { id: Name("a"), range: 5467..5468, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -7369,15 +8490,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5487..5498, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 5487..5498, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 5487..5496, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5487..5492, id: Name("match"), ctx: Load, @@ -7385,6 +8510,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5494..5495, id: Name("a"), ctx: Load, @@ -7396,6 +8522,7 @@ Module( attr: Identifier { id: Name("b"), range: 5497..5498, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -7404,15 +8531,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5516..5528, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 5516..5528, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 5516..5526, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5516..5521, id: Name("match"), ctx: Load, @@ -7420,10 +8551,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 5523..5525, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5523..5524, id: Name("a"), ctx: Load, @@ -7440,6 +8573,7 @@ Module( attr: Identifier { id: Name("b"), range: 5527..5528, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -7448,15 +8582,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5569..5583, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 5569..5583, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 5569..5581, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5569..5574, id: Name("match"), ctx: Load, @@ -7464,10 +8602,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 5576..5580, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5577..5578, id: Name("a"), ctx: Load, @@ -7484,6 +8624,7 @@ Module( attr: Identifier { id: Name("b"), range: 5582..5583, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -7492,15 +8633,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5604..5621, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 5604..5621, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5604..5611, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5604..5609, id: Name("match"), ctx: Load, @@ -7508,6 +8653,7 @@ Module( ), arguments: Arguments { range: 5609..5611, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -7515,10 +8661,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 5612..5620, lower: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5612..5613, id: Name("a"), ctx: Load, @@ -7528,6 +8676,7 @@ Module( upper: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5619..5620, id: Name("b"), ctx: Load, @@ -7544,12 +8693,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 5641..5660, test: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 5644..5654, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5644..5649, id: Name("match"), ctx: Store, @@ -7557,6 +8709,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5653..5654, value: Int( 1, @@ -7568,6 +8721,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 5656..5660, }, ), @@ -7577,9 +8731,11 @@ Module( ), Match( StmtMatch { + node_index: AtomicNodeIndex(..), range: 5661..5715, subject: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5667..5672, id: Name("match"), ctx: Load, @@ -7588,11 +8744,14 @@ Module( cases: [ MatchCase { range: 5678..5690, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 5683..5684, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5683..5684, value: Int( 1, @@ -7605,6 +8764,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 5686..5690, }, ), @@ -7612,11 +8772,14 @@ Module( }, MatchCase { range: 5695..5715, + node_index: AtomicNodeIndex(..), pattern: MatchValue( PatternMatchValue { range: 5700..5701, + node_index: AtomicNodeIndex(..), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5700..5701, value: Int( 2, @@ -7629,6 +8792,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 5711..5715, }, ), @@ -7639,10 +8803,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 5716..5752, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5716..5721, id: Name("match"), ctx: Store, @@ -7651,19 +8817,26 @@ Module( ], value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 5724..5752, parameters: Some( Parameters { range: 5731..5736, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 5731..5736, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 5731..5736, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("query"), range: 5731..5736, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -7677,9 +8850,11 @@ Module( ), body: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 5738..5752, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5738..5743, id: Name("query"), ctx: Load, @@ -7691,6 +8866,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5747..5752, id: Name("event"), ctx: Load, @@ -7705,12 +8881,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 5753..5769, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5753..5769, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5753..5758, id: Name("print"), ctx: Load, @@ -7718,12 +8897,15 @@ Module( ), arguments: Arguments { range: 5758..5769, + node_index: AtomicNodeIndex(..), args: [ Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 5759..5768, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5759..5764, id: Name("match"), ctx: Load, @@ -7731,9 +8913,11 @@ Module( ), arguments: Arguments { range: 5764..5768, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 5765..5767, value: Int( 12, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__raise.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__raise.py.snap index 1796953d2a..7329f1e3a9 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__raise.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__raise.py.snap @@ -1,17 +1,18 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/raise.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..289, body: [ Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 8..13, exc: None, cause: None, @@ -19,10 +20,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 14..21, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 20..21, id: Name("a"), ctx: Load, @@ -34,14 +37,17 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 22..34, exc: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 28..34, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 29..30, id: Name("a"), ctx: Load, @@ -49,6 +55,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 32..33, id: Name("b"), ctx: Load, @@ -65,13 +72,16 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 35..46, exc: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 41..46, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 41..42, value: Int( 1, @@ -84,6 +94,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 45..46, value: Int( 2, @@ -99,15 +110,18 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 47..60, exc: Some( BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 53..60, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..54, id: Name("a"), ctx: Load, @@ -115,6 +129,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..60, id: Name("b"), ctx: Load, @@ -129,23 +144,31 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 61..78, exc: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 67..78, parameters: Some( Parameters { range: 74..75, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 74..75, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 74..75, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 74..75, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -159,6 +182,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..78, id: Name("y"), ctx: Load, @@ -172,13 +196,16 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 79..92, exc: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 85..92, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 91..92, id: Name("x"), ctx: Load, @@ -192,19 +219,23 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 93..115, exc: Some( If( ExprIf { + node_index: AtomicNodeIndex(..), range: 99..115, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 104..108, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 99..100, id: Name("x"), ctx: Load, @@ -212,6 +243,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 114..115, id: Name("y"), ctx: Load, @@ -225,10 +257,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 138..152, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 144..145, id: Name("x"), ctx: Load, @@ -238,6 +272,7 @@ Module( cause: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 151..152, id: Name("a"), ctx: Load, @@ -248,10 +283,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 153..172, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 159..160, id: Name("x"), ctx: Load, @@ -261,10 +298,12 @@ Module( cause: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 166..172, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 167..168, id: Name("a"), ctx: Load, @@ -272,6 +311,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..171, id: Name("b"), ctx: Load, @@ -287,10 +327,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 173..191, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 179..180, id: Name("x"), ctx: Load, @@ -300,9 +342,11 @@ Module( cause: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 186..191, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 186..187, value: Int( 1, @@ -315,6 +359,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 190..191, value: Int( 2, @@ -329,10 +374,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 192..212, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 198..199, id: Name("x"), ctx: Load, @@ -342,11 +389,13 @@ Module( cause: Some( BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 205..212, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 205..206, id: Name("a"), ctx: Load, @@ -354,6 +403,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 211..212, id: Name("b"), ctx: Load, @@ -367,10 +417,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 213..237, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 219..220, id: Name("x"), ctx: Load, @@ -380,19 +432,26 @@ Module( cause: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 226..237, parameters: Some( Parameters { range: 233..234, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 233..234, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 233..234, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 233..234, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -406,6 +465,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..237, id: Name("y"), ctx: Load, @@ -418,10 +478,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 238..258, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 244..245, id: Name("x"), ctx: Load, @@ -431,9 +493,11 @@ Module( cause: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 251..258, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 257..258, id: Name("x"), ctx: Load, @@ -446,10 +510,12 @@ Module( ), Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 259..288, exc: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 265..266, id: Name("x"), ctx: Load, @@ -459,15 +525,18 @@ Module( cause: Some( If( ExprIf { + node_index: AtomicNodeIndex(..), range: 272..288, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 277..281, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 272..273, id: Name("x"), ctx: Load, @@ -475,6 +544,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 287..288, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__return.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__return.py.snap index 162b1c9c34..7cb3690ead 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__return.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__return.py.snap @@ -7,20 +7,24 @@ input_file: crates/ruff_python_parser/resources/valid/statement/return.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..167, body: [ Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 0..6, value: None, }, ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 7..15, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..15, id: Name("x"), ctx: Load, @@ -31,17 +35,21 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 16..29, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 23..29, elts: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 23..25, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 24..25, id: Name("x"), ctx: Load, @@ -52,9 +60,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 27..29, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..29, id: Name("y"), ctx: Load, @@ -73,13 +83,16 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 30..45, value: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 38..44, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..39, id: Name("x"), ctx: Store, @@ -87,6 +100,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 43..44, value: Int( 1, @@ -100,10 +114,12 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 46..57, value: Some( NoneLiteral( ExprNoneLiteral { + node_index: AtomicNodeIndex(..), range: 53..57, }, ), @@ -112,15 +128,18 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 58..72, value: Some( BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 65..72, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 65..66, id: Name("x"), ctx: Load, @@ -128,6 +147,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 71..72, id: Name("y"), ctx: Load, @@ -141,13 +161,16 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 73..85, value: Some( Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 80..85, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 80..81, value: Int( 1, @@ -160,6 +183,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 84..85, value: Int( 2, @@ -174,14 +198,17 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 86..98, value: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 93..98, elts: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 93..94, value: Int( 1, @@ -190,6 +217,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 96..97, value: Int( 2, @@ -206,13 +234,16 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 99..112, value: Some( Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 106..112, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 106..110, id: Name("call"), ctx: Load, @@ -220,6 +251,7 @@ Module( ), arguments: Arguments { range: 110..112, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -230,16 +262,20 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 113..132, value: Some( Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 120..132, func: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 120..130, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..124, id: Name("attr"), ctx: Load, @@ -248,12 +284,14 @@ Module( attr: Identifier { id: Name("value"), range: 125..130, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, ), arguments: Arguments { range: 130..132, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -264,13 +302,16 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 133..147, value: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 140..147, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 146..147, id: Name("x"), ctx: Load, @@ -283,23 +324,31 @@ Module( ), Return( StmtReturn { + node_index: AtomicNodeIndex(..), range: 148..166, value: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 155..166, parameters: Some( Parameters { range: 162..163, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 162..163, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 162..163, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 162..163, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -313,6 +362,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 165..166, id: Name("y"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__simple.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__simple.py.snap index 31c90f2119..3865245dce 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__simple.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__simple.py.snap @@ -1,30 +1,34 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/simple.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..172, body: [ Continue( StmtContinue { + node_index: AtomicNodeIndex(..), range: 61..69, }, ), Break( StmtBreak { + node_index: AtomicNodeIndex(..), range: 70..75, }, ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 77..86, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 80..81, id: Name("x"), ctx: Load, @@ -33,9 +37,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 83..86, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 83..86, }, ), @@ -47,9 +53,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 87..100, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 90..94, value: true, }, @@ -57,6 +65,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 96..100, }, ), @@ -66,9 +75,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 101..102, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 101..102, value: Int( 1, @@ -79,9 +90,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 104..105, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 104..105, value: Int( 2, @@ -92,14 +105,17 @@ Module( ), Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 107..111, }, ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 112..113, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 112..113, value: Int( 1, @@ -110,9 +126,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 115..118, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 115..118, }, ), @@ -120,12 +138,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 120..133, value: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 120..133, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 125..126, id: Name("b"), ctx: Load, @@ -133,6 +154,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 120..121, id: Name("a"), ctx: Load, @@ -140,6 +162,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 132..133, id: Name("c"), ctx: Load, @@ -151,9 +174,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 135..157, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 138..139, id: Name("c"), ctx: Load, @@ -162,9 +187,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 141..142, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 141..142, id: Name("B"), ctx: Load, @@ -174,10 +201,12 @@ Module( ), Delete( StmtDelete { + node_index: AtomicNodeIndex(..), range: 144..149, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 148..149, id: Name("A"), ctx: Del, @@ -190,13 +219,16 @@ Module( elif_else_clauses: [ ElifElseClause { range: 150..157, + node_index: AtomicNodeIndex(..), test: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 156..157, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 156..157, id: Name("C"), ctx: Load, @@ -211,9 +243,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 158..171, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 161..162, id: Name("x"), ctx: Load, @@ -222,13 +256,16 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 164..171, value: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 164..171, value: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 170..171, id: Name("x"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__try.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__try.py.snap index 2413f26d90..e6021299e9 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__try.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__try.py.snap @@ -7,17 +7,21 @@ input_file: crates/ruff_python_parser/resources/valid/statement/try.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..1223, body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 0..28, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 9..12, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 9..12, }, ), @@ -28,14 +32,17 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 13..28, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 25..28, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 25..28, }, ), @@ -52,13 +59,16 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 30..106, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 39..42, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 39..42, }, ), @@ -69,9 +79,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 43..74, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 50..60, id: Name("Exception1"), ctx: Load, @@ -82,14 +94,17 @@ Module( Identifier { id: Name("e"), range: 64..65, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 71..74, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 71..74, }, ), @@ -101,9 +116,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 75..106, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..92, id: Name("Exception2"), ctx: Load, @@ -114,14 +131,17 @@ Module( Identifier { id: Name("e"), range: 96..97, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 103..106, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 103..106, }, ), @@ -138,13 +158,16 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 108..184, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 117..120, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 117..120, }, ), @@ -155,9 +178,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 121..151, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 128..137, id: Name("Exception"), ctx: Load, @@ -168,14 +193,17 @@ Module( Identifier { id: Name("e"), range: 141..142, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 148..151, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 148..151, }, ), @@ -187,14 +215,17 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 152..167, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 164..167, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 164..167, }, ), @@ -208,9 +239,11 @@ Module( finalbody: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 181..184, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 181..184, }, ), @@ -222,13 +255,16 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 186..228, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 195..198, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 195..198, }, ), @@ -239,14 +275,17 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 199..214, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 211..214, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 211..214, }, ), @@ -259,9 +298,11 @@ Module( orelse: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 225..228, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 225..228, }, ), @@ -274,13 +315,16 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 230..289, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 239..242, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 239..242, }, ), @@ -291,14 +335,17 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 243..258, + node_index: AtomicNodeIndex(..), type_: None, name: None, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 255..258, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 255..258, }, ), @@ -311,9 +358,11 @@ Module( orelse: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 269..272, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 269..272, }, ), @@ -323,9 +372,11 @@ Module( finalbody: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 286..289, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 286..289, }, ), @@ -337,13 +388,16 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 291..320, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 300..303, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 300..303, }, ), @@ -355,9 +409,11 @@ Module( finalbody: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 317..320, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 317..320, }, ), @@ -369,13 +425,16 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 322..365, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 331..334, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 331..334, }, ), @@ -386,9 +445,11 @@ Module( orelse: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 345..348, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 345..348, }, ), @@ -398,9 +459,11 @@ Module( finalbody: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 362..365, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 362..365, }, ), @@ -412,13 +475,16 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 367..441, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 376..379, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 376..379, }, ), @@ -429,9 +495,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 380..409, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 388..394, id: Name("GroupA"), ctx: Load, @@ -442,14 +510,17 @@ Module( Identifier { id: Name("eg"), range: 398..400, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 406..409, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 406..409, }, ), @@ -461,9 +532,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 410..441, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 418..432, id: Name("ExceptionGroup"), ctx: Load, @@ -474,9 +547,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 438..441, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 438..441, }, ), @@ -493,17 +568,21 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 443..577, body: [ Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 452..471, exc: Some( Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 458..471, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 458..468, id: Name("ValueError"), ctx: Load, @@ -511,9 +590,11 @@ Module( ), arguments: Arguments { range: 468..471, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 469..470, value: Int( 1, @@ -534,9 +615,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 472..525, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 479..488, id: Name("TypeError"), ctx: Load, @@ -547,17 +630,21 @@ Module( Identifier { id: Name("e"), range: 492..493, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 499..525, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 499..525, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 499..504, id: Name("print"), ctx: Load, @@ -565,30 +652,37 @@ Module( ), arguments: Arguments { range: 504..525, + node_index: AtomicNodeIndex(..), args: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 505..524, value: FStringValue { inner: Single( FString( FString { range: 505..524, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 507..514, + node_index: AtomicNodeIndex(..), value: "caught ", }, ), Interpolation( InterpolatedElement { range: 514..523, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 515..522, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 515..519, id: Name("type"), ctx: Load, @@ -596,9 +690,11 @@ Module( ), arguments: Arguments { range: 519..522, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 520..521, id: Name("e"), ctx: Load, @@ -639,9 +735,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 526..577, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 533..540, id: Name("OSError"), ctx: Load, @@ -652,17 +750,21 @@ Module( Identifier { id: Name("e"), range: 544..545, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 551..577, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 551..577, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 551..556, id: Name("print"), ctx: Load, @@ -670,30 +772,37 @@ Module( ), arguments: Arguments { range: 556..577, + node_index: AtomicNodeIndex(..), args: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 557..576, value: FStringValue { inner: Single( FString( FString { range: 557..576, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 559..566, + node_index: AtomicNodeIndex(..), value: "caught ", }, ), Interpolation( InterpolatedElement { range: 566..575, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 567..574, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 567..571, id: Name("type"), ctx: Load, @@ -701,9 +810,11 @@ Module( ), arguments: Arguments { range: 571..574, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 572..573, id: Name("e"), ctx: Load, @@ -749,17 +860,21 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 579..831, body: [ Raise( StmtRaise { + node_index: AtomicNodeIndex(..), range: 588..669, exc: Some( Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 594..669, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 594..608, id: Name("ExceptionGroup"), ctx: Load, @@ -767,14 +882,17 @@ Module( ), arguments: Arguments { range: 608..669, + node_index: AtomicNodeIndex(..), args: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 609..613, value: StringLiteralValue { inner: Single( StringLiteral { range: 609..613, + node_index: AtomicNodeIndex(..), value: "eg", flags: StringLiteralFlags { quote_style: Double, @@ -788,13 +906,16 @@ Module( ), List( ExprList { + node_index: AtomicNodeIndex(..), range: 615..668, elts: [ Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 616..629, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 616..626, id: Name("ValueError"), ctx: Load, @@ -802,9 +923,11 @@ Module( ), arguments: Arguments { range: 626..629, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 627..628, value: Int( 1, @@ -818,9 +941,11 @@ Module( ), Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 631..643, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 631..640, id: Name("TypeError"), ctx: Load, @@ -828,9 +953,11 @@ Module( ), arguments: Arguments { range: 640..643, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 641..642, value: Int( 2, @@ -844,9 +971,11 @@ Module( ), Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 645..655, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 645..652, id: Name("OSError"), ctx: Load, @@ -854,9 +983,11 @@ Module( ), arguments: Arguments { range: 652..655, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 653..654, value: Int( 3, @@ -870,9 +1001,11 @@ Module( ), Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 657..667, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 657..664, id: Name("OSError"), ctx: Load, @@ -880,9 +1013,11 @@ Module( ), arguments: Arguments { range: 664..667, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 665..666, value: Int( 4, @@ -912,9 +1047,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 670..751, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 678..687, id: Name("TypeError"), ctx: Load, @@ -925,17 +1062,21 @@ Module( Identifier { id: Name("e"), range: 691..692, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 698..751, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 698..751, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 698..703, id: Name("print"), ctx: Load, @@ -943,30 +1084,37 @@ Module( ), arguments: Arguments { range: 703..751, + node_index: AtomicNodeIndex(..), args: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 704..750, value: FStringValue { inner: Single( FString( FString { range: 704..750, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 706..713, + node_index: AtomicNodeIndex(..), value: "caught ", }, ), Interpolation( InterpolatedElement { range: 713..722, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 714..721, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 714..718, id: Name("type"), ctx: Load, @@ -974,9 +1122,11 @@ Module( ), arguments: Arguments { range: 718..721, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 719..720, id: Name("e"), ctx: Load, @@ -995,17 +1145,21 @@ Module( Literal( InterpolatedStringLiteralElement { range: 722..735, + node_index: AtomicNodeIndex(..), value: " with nested ", }, ), Interpolation( InterpolatedElement { range: 735..749, + node_index: AtomicNodeIndex(..), expression: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 736..748, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 736..737, id: Name("e"), ctx: Load, @@ -1014,6 +1168,7 @@ Module( attr: Identifier { id: Name("exceptions"), range: 738..748, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -1048,9 +1203,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 752..831, + node_index: AtomicNodeIndex(..), type_: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 760..767, id: Name("OSError"), ctx: Load, @@ -1061,17 +1218,21 @@ Module( Identifier { id: Name("e"), range: 771..772, + node_index: AtomicNodeIndex(..), }, ), body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 778..831, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 778..831, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 778..783, id: Name("print"), ctx: Load, @@ -1079,30 +1240,37 @@ Module( ), arguments: Arguments { range: 783..831, + node_index: AtomicNodeIndex(..), args: [ FString( ExprFString { + node_index: AtomicNodeIndex(..), range: 784..830, value: FStringValue { inner: Single( FString( FString { range: 784..830, + node_index: AtomicNodeIndex(..), elements: [ Literal( InterpolatedStringLiteralElement { range: 786..793, + node_index: AtomicNodeIndex(..), value: "caught ", }, ), Interpolation( InterpolatedElement { range: 793..802, + node_index: AtomicNodeIndex(..), expression: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 794..801, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 794..798, id: Name("type"), ctx: Load, @@ -1110,9 +1278,11 @@ Module( ), arguments: Arguments { range: 798..801, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 799..800, id: Name("e"), ctx: Load, @@ -1131,17 +1301,21 @@ Module( Literal( InterpolatedStringLiteralElement { range: 802..815, + node_index: AtomicNodeIndex(..), value: " with nested ", }, ), Interpolation( InterpolatedElement { range: 815..829, + node_index: AtomicNodeIndex(..), expression: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 816..828, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 816..817, id: Name("e"), ctx: Load, @@ -1150,6 +1324,7 @@ Module( attr: Identifier { id: Name("exceptions"), range: 818..828, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -1189,10 +1364,12 @@ Module( ), Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 833..1075, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 842..846, }, ), @@ -1201,14 +1378,17 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 847..875, + node_index: AtomicNodeIndex(..), type_: Some( StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 854..865, value: StringLiteralValue { inner: Single( StringLiteral { range: 854..865, + node_index: AtomicNodeIndex(..), value: "exception", flags: StringLiteralFlags { quote_style: Double, @@ -1225,6 +1405,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 871..875, }, ), @@ -1234,9 +1415,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 876..894, + node_index: AtomicNodeIndex(..), type_: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 883..884, value: Int( 1, @@ -1248,6 +1431,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 890..894, }, ), @@ -1257,9 +1441,11 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 895..916, + node_index: AtomicNodeIndex(..), type_: Some( BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 902..906, value: true, }, @@ -1269,6 +1455,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 912..916, }, ), @@ -1278,12 +1465,15 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 917..939, + node_index: AtomicNodeIndex(..), type_: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 924..929, left: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 924..925, value: Int( 1, @@ -1293,6 +1483,7 @@ Module( op: Add, right: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 928..929, value: Int( 1, @@ -1306,6 +1497,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 935..939, }, ), @@ -1315,12 +1507,15 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 940..962, + node_index: AtomicNodeIndex(..), type_: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 947..952, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 947..948, id: Name("a"), ctx: Load, @@ -1329,6 +1524,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 951..952, id: Name("b"), ctx: Load, @@ -1341,6 +1537,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 958..962, }, ), @@ -1350,14 +1547,17 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 963..987, + node_index: AtomicNodeIndex(..), type_: Some( BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 970..977, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 970..971, id: Name("x"), ctx: Load, @@ -1365,6 +1565,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 976..977, id: Name("y"), ctx: Load, @@ -1378,6 +1579,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 983..987, }, ), @@ -1387,12 +1589,15 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 988..1012, + node_index: AtomicNodeIndex(..), type_: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 995..1002, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1001..1002, id: Name("x"), ctx: Load, @@ -1405,6 +1610,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1008..1012, }, ), @@ -1414,22 +1620,30 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 1013..1041, + node_index: AtomicNodeIndex(..), type_: Some( Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 1020..1031, parameters: Some( Parameters { range: 1027..1028, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1027..1028, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1027..1028, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 1027..1028, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -1443,6 +1657,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1030..1031, id: Name("x"), ctx: Load, @@ -1455,6 +1670,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1037..1041, }, ), @@ -1464,18 +1680,22 @@ Module( ExceptHandler( ExceptHandlerExceptHandler { range: 1042..1075, + node_index: AtomicNodeIndex(..), type_: Some( If( ExprIf { + node_index: AtomicNodeIndex(..), range: 1049..1065, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 1054..1058, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1049..1050, id: Name("x"), ctx: Load, @@ -1483,6 +1703,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1064..1065, id: Name("y"), ctx: Load, @@ -1495,6 +1716,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1071..1075, }, ), @@ -1509,9 +1731,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 1077..1222, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 1080..1084, value: true, }, @@ -1519,10 +1743,12 @@ Module( body: [ Try( StmtTry { + node_index: AtomicNodeIndex(..), range: 1090..1133, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1103..1107, }, ), @@ -1532,6 +1758,7 @@ Module( finalbody: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1129..1133, }, ), @@ -1543,10 +1770,12 @@ Module( elif_else_clauses: [ ElifElseClause { range: 1208..1222, + node_index: AtomicNodeIndex(..), test: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1218..1222, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__type.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__type.py.snap index 817ab6399e..ca837dcde3 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__type.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__type.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/type.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..1828, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..12, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,6 +25,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 9..12, id: Name("int"), ctx: Load, @@ -32,9 +35,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 13..31, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 18..19, id: Name("X"), ctx: Store, @@ -43,9 +48,11 @@ Module( type_params: None, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 22..31, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 22..25, id: Name("int"), ctx: Load, @@ -54,6 +61,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 28..31, id: Name("str"), ctx: Load, @@ -65,9 +73,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 32..60, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 37..38, id: Name("X"), ctx: Store, @@ -76,9 +86,11 @@ Module( type_params: None, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 41..60, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 41..44, id: Name("int"), ctx: Load, @@ -87,11 +99,13 @@ Module( op: BitOr, right: StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 47..60, value: StringLiteralValue { inner: Single( StringLiteral { range: 47..60, + node_index: AtomicNodeIndex(..), value: "ForwardRefY", flags: StringLiteralFlags { quote_style: Double, @@ -109,9 +123,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 61..87, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..67, id: Name("X"), ctx: Store, @@ -120,13 +136,16 @@ Module( type_params: Some( TypeParams { range: 67..70, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 68..69, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 68..69, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -137,9 +156,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 73..87, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..74, id: Name("T"), ctx: Load, @@ -148,9 +169,11 @@ Module( op: BitOr, right: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 77..87, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 77..81, id: Name("list"), ctx: Load, @@ -158,9 +181,11 @@ Module( ), slice: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 82..86, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 82..83, id: Name("X"), ctx: Load, @@ -168,6 +193,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..85, id: Name("T"), ctx: Load, @@ -185,9 +211,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 101..116, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 106..107, id: Name("X"), ctx: Store, @@ -196,13 +224,16 @@ Module( type_params: Some( TypeParams { range: 107..110, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 108..109, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 108..109, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -213,6 +244,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 113..116, id: Name("int"), ctx: Load, @@ -222,9 +254,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 117..145, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 122..123, id: Name("X"), ctx: Store, @@ -233,13 +267,16 @@ Module( type_params: Some( TypeParams { range: 123..126, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 124..125, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 124..125, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -250,12 +287,15 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 129..145, left: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 129..136, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..133, id: Name("list"), ctx: Load, @@ -263,6 +303,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 134..135, id: Name("T"), ctx: Load, @@ -274,9 +315,11 @@ Module( op: BitOr, right: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 139..145, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 139..142, id: Name("set"), ctx: Load, @@ -284,6 +327,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 143..144, id: Name("T"), ctx: Load, @@ -298,9 +342,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 146..178, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 151..152, id: Name("X"), ctx: Store, @@ -309,13 +355,16 @@ Module( type_params: Some( TypeParams { range: 152..165, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 153..154, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 153..154, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -324,9 +373,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 156..159, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 157..159, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -334,9 +385,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 161..164, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 163..164, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -346,10 +399,12 @@ Module( ), value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 168..178, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 169..170, id: Name("T"), ctx: Load, @@ -357,6 +412,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 172..174, id: Name("Ts"), ctx: Load, @@ -364,6 +420,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 176..177, id: Name("P"), ctx: Load, @@ -378,9 +435,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 179..216, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 184..185, id: Name("X"), ctx: Store, @@ -389,17 +448,21 @@ Module( type_params: Some( TypeParams { range: 185..203, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 186..192, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 186..187, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 189..192, id: Name("int"), ctx: Load, @@ -412,9 +475,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 194..197, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 195..197, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -422,9 +487,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 199..202, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 201..202, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -434,10 +501,12 @@ Module( ), value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 206..216, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 207..208, id: Name("T"), ctx: Load, @@ -445,6 +514,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 210..212, id: Name("Ts"), ctx: Load, @@ -452,6 +522,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 214..215, id: Name("P"), ctx: Load, @@ -466,9 +537,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 217..261, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 222..223, id: Name("X"), ctx: Store, @@ -477,21 +550,26 @@ Module( type_params: Some( TypeParams { range: 223..248, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 224..237, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 224..225, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 227..237, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 228..231, id: Name("int"), ctx: Load, @@ -499,6 +577,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 233..236, id: Name("str"), ctx: Load, @@ -516,9 +595,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 239..242, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 240..242, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -526,9 +607,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 244..247, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 246..247, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -538,10 +621,12 @@ Module( ), value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 251..261, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 252..253, id: Name("T"), ctx: Load, @@ -549,6 +634,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 255..257, id: Name("Ts"), ctx: Load, @@ -556,6 +642,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 259..260, id: Name("P"), ctx: Load, @@ -570,9 +657,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 262..287, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 267..268, id: Name("X"), ctx: Store, @@ -581,18 +670,22 @@ Module( type_params: Some( TypeParams { range: 268..277, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 269..276, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 269..270, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 273..276, id: Name("int"), ctx: Load, @@ -606,9 +699,11 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 280..287, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 280..281, id: Name("T"), ctx: Load, @@ -617,6 +712,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 284..287, id: Name("str"), ctx: Load, @@ -628,9 +724,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 288..330, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 293..294, id: Name("X"), ctx: Store, @@ -639,20 +737,25 @@ Module( type_params: Some( TypeParams { range: 294..314, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 295..313, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 295..296, + node_index: AtomicNodeIndex(..), }, bound: Some( BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 298..307, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 298..301, id: Name("int"), ctx: Load, @@ -661,6 +764,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 304..307, id: Name("str"), ctx: Load, @@ -672,6 +776,7 @@ Module( default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 310..313, id: Name("int"), ctx: Load, @@ -685,12 +790,15 @@ Module( ), value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 317..330, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 317..324, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 317..318, id: Name("T"), ctx: Load, @@ -699,6 +807,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 321..324, id: Name("int"), ctx: Load, @@ -709,6 +818,7 @@ Module( op: BitOr, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 327..330, id: Name("str"), ctx: Load, @@ -720,9 +830,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 331..384, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 336..337, id: Name("X"), ctx: Store, @@ -731,23 +843,29 @@ Module( type_params: Some( TypeParams { range: 337..361, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 338..360, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 339..341, + node_index: AtomicNodeIndex(..), }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 344..360, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 345..360, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 345..350, id: Name("tuple"), ctx: Load, @@ -755,10 +873,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 351..359, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 351..354, id: Name("int"), ctx: Load, @@ -766,6 +886,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 356..359, id: Name("str"), ctx: Load, @@ -790,9 +911,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 364..384, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 364..369, id: Name("tuple"), ctx: Load, @@ -800,10 +923,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 370..383, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 370..373, id: Name("int"), ctx: Load, @@ -811,9 +936,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 375..378, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 376..378, id: Name("Ts"), ctx: Load, @@ -824,6 +951,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 380..383, id: Name("str"), ctx: Load, @@ -841,9 +969,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 385..428, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 390..391, id: Name("X"), ctx: Store, @@ -852,21 +982,26 @@ Module( type_params: Some( TypeParams { range: 391..409, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 392..408, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 394..395, + node_index: AtomicNodeIndex(..), }, default: Some( List( ExprList { + node_index: AtomicNodeIndex(..), range: 398..408, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 399..402, id: Name("int"), ctx: Load, @@ -874,6 +1009,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 404..407, id: Name("str"), ctx: Load, @@ -891,9 +1027,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 412..428, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 412..420, id: Name("Callable"), ctx: Load, @@ -901,10 +1039,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 421..427, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 421..422, id: Name("P"), ctx: Load, @@ -912,6 +1052,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 424..427, id: Name("str"), ctx: Load, @@ -929,9 +1070,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 459..474, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 464..468, id: Name("type"), ctx: Store, @@ -940,6 +1083,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 471..474, id: Name("int"), ctx: Load, @@ -949,9 +1093,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 475..491, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 480..485, id: Name("match"), ctx: Store, @@ -960,6 +1106,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 488..491, id: Name("int"), ctx: Load, @@ -969,9 +1116,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 492..507, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 497..501, id: Name("case"), ctx: Store, @@ -980,6 +1129,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 504..507, id: Name("int"), ctx: Load, @@ -989,9 +1139,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 533..548, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 538..541, id: Name("foo"), ctx: Store, @@ -1000,6 +1152,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 544..548, id: Name("type"), ctx: Load, @@ -1009,9 +1162,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 549..565, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 554..557, id: Name("foo"), ctx: Store, @@ -1020,6 +1175,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 560..565, id: Name("match"), ctx: Load, @@ -1029,9 +1185,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 566..581, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 571..574, id: Name("foo"), ctx: Store, @@ -1040,6 +1198,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 577..581, id: Name("case"), ctx: Load, @@ -1049,9 +1208,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 605..620, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 613..614, id: Name("X"), ctx: Store, @@ -1060,6 +1221,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 617..620, id: Name("int"), ctx: Load, @@ -1069,9 +1231,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 621..636, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 626..627, id: Name("X"), ctx: Store, @@ -1080,6 +1244,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 633..636, id: Name("int"), ctx: Load, @@ -1089,9 +1254,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 637..652, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 642..643, id: Name("X"), ctx: Store, @@ -1100,6 +1267,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 649..652, id: Name("int"), ctx: Load, @@ -1109,9 +1277,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 653..673, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 658..659, id: Name("X"), ctx: Store, @@ -1120,6 +1290,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 668..671, id: Name("int"), ctx: Load, @@ -1129,9 +1300,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 674..693, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 685..686, id: Name("X"), ctx: Store, @@ -1140,13 +1313,16 @@ Module( type_params: Some( TypeParams { range: 686..689, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 687..688, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 687..688, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -1157,6 +1333,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 692..693, id: Name("T"), ctx: Load, @@ -1166,9 +1343,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 694..714, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 699..700, id: Name("X"), ctx: Store, @@ -1177,13 +1356,16 @@ Module( type_params: Some( TypeParams { range: 707..710, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 708..709, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 708..709, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -1194,6 +1376,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 713..714, id: Name("T"), ctx: Load, @@ -1203,9 +1386,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 715..734, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 720..721, id: Name("X"), ctx: Store, @@ -1214,13 +1399,16 @@ Module( type_params: Some( TypeParams { range: 721..724, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 722..723, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 722..723, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -1231,6 +1419,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 733..734, id: Name("T"), ctx: Load, @@ -1240,9 +1429,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 756..768, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 761..762, id: Name("X"), ctx: Store, @@ -1251,6 +1442,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 765..768, id: Name("int"), ctx: Load, @@ -1260,9 +1452,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 770..782, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 775..776, id: Name("X"), ctx: Store, @@ -1271,6 +1465,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 779..782, id: Name("str"), ctx: Load, @@ -1280,9 +1475,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 784..797, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 789..790, id: Name("X"), ctx: Store, @@ -1291,6 +1488,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 793..797, id: Name("type"), ctx: Load, @@ -1300,20 +1498,24 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 798..819, decorator_list: [], name: Identifier { id: Name("X"), range: 804..805, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: None, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 807..819, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 812..813, id: Name("X"), ctx: Store, @@ -1322,6 +1524,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 816..819, id: Name("int"), ctx: Load, @@ -1334,9 +1537,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 821..853, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 826..831, id: Name("Point"), ctx: Store, @@ -1345,9 +1550,11 @@ Module( type_params: None, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 834..853, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 834..839, id: Name("tuple"), ctx: Load, @@ -1355,10 +1562,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 840..852, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 840..845, id: Name("float"), ctx: Load, @@ -1366,6 +1575,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 847..852, id: Name("float"), ctx: Load, @@ -1383,9 +1593,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 854..881, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 859..864, id: Name("Point"), ctx: Store, @@ -1394,13 +1606,16 @@ Module( type_params: Some( TypeParams { range: 864..867, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 865..866, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 865..866, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -1411,9 +1626,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 870..881, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 870..875, id: Name("tuple"), ctx: Load, @@ -1421,10 +1638,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 876..880, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 876..877, id: Name("T"), ctx: Load, @@ -1432,6 +1651,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 879..880, id: Name("T"), ctx: Load, @@ -1449,9 +1669,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 882..918, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 887..894, id: Name("IntFunc"), ctx: Store, @@ -1460,13 +1682,16 @@ Module( type_params: Some( TypeParams { range: 894..899, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 895..898, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 897..898, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -1476,9 +1701,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 902..918, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 902..910, id: Name("Callable"), ctx: Load, @@ -1486,10 +1713,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 911..917, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 911..912, id: Name("P"), ctx: Load, @@ -1497,6 +1726,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 914..917, id: Name("int"), ctx: Load, @@ -1514,9 +1744,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 932..972, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 937..949, id: Name("LabeledTuple"), ctx: Store, @@ -1525,13 +1757,16 @@ Module( type_params: Some( TypeParams { range: 949..954, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 950..953, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 951..953, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -1541,9 +1776,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 957..972, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 957..962, id: Name("tuple"), ctx: Load, @@ -1551,10 +1788,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 963..971, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 963..966, id: Name("str"), ctx: Load, @@ -1562,9 +1801,11 @@ Module( ), Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 968..971, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 969..971, id: Name("Ts"), ctx: Load, @@ -1585,9 +1826,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 989..1037, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 994..1010, id: Name("HashableSequence"), ctx: Store, @@ -1596,17 +1839,21 @@ Module( type_params: Some( TypeParams { range: 1010..1023, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 1011..1022, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 1011..1012, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1014..1022, id: Name("Hashable"), ctx: Load, @@ -1621,9 +1868,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1026..1037, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1026..1034, id: Name("Sequence"), ctx: Load, @@ -1631,6 +1880,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1035..1036, id: Name("T"), ctx: Load, @@ -1643,9 +1893,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 1060..1110, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1065..1081, id: Name("IntOrStrSequence"), ctx: Store, @@ -1654,21 +1906,26 @@ Module( type_params: Some( TypeParams { range: 1081..1096, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 1082..1095, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 1082..1083, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1085..1095, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1086..1089, id: Name("int"), ctx: Load, @@ -1676,6 +1933,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1091..1094, id: Name("str"), ctx: Load, @@ -1695,9 +1953,11 @@ Module( ), value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1099..1110, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1099..1107, id: Name("Sequence"), ctx: Load, @@ -1705,6 +1965,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1108..1109, id: Name("T"), ctx: Load, @@ -1717,19 +1978,24 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1164..1178, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1164..1178, elts: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1164..1175, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1164..1171, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1164..1168, id: Name("type"), ctx: Load, @@ -1738,6 +2004,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1170..1171, id: Name("a"), ctx: Load, @@ -1748,6 +2015,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1174..1175, id: Name("b"), ctx: Load, @@ -1757,6 +2025,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1177..1178, id: Name("c"), ctx: Load, @@ -1771,16 +2040,20 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1203..1219, value: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1203..1219, elts: [ BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1203..1216, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1203..1207, id: Name("type"), ctx: Load, @@ -1789,9 +2062,11 @@ Module( op: Mult, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1210..1215, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1210..1211, id: Name("a"), ctx: Load, @@ -1800,6 +2075,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1214..1215, id: Name("b"), ctx: Load, @@ -1811,6 +2087,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1218..1219, id: Name("c"), ctx: Load, @@ -1825,12 +2102,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1244..1260, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1244..1260, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1244..1248, id: Name("type"), ctx: Load, @@ -1838,15 +2118,19 @@ Module( ), arguments: Arguments { range: 1249..1260, + node_index: AtomicNodeIndex(..), args: [ Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 1250..1256, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1251..1256, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1251..1252, id: Name("a"), ctx: Load, @@ -1855,6 +2139,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1255..1256, id: Name("b"), ctx: Load, @@ -1867,6 +2152,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1258..1259, id: Name("c"), ctx: Load, @@ -1881,15 +2167,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1286..1301, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1286..1301, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1286..1297, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1286..1290, id: Name("type"), ctx: Load, @@ -1898,9 +2188,11 @@ Module( op: Sub, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1292..1297, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1292..1293, id: Name("a"), ctx: Load, @@ -1909,6 +2201,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1296..1297, id: Name("b"), ctx: Load, @@ -1921,6 +2214,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1300..1301, id: Name("c"), ctx: Load, @@ -1932,15 +2226,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1327..1344, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1327..1344, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1327..1340, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1327..1331, id: Name("type"), ctx: Load, @@ -1949,9 +2247,11 @@ Module( op: Sub, right: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1334..1339, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1334..1335, id: Name("a"), ctx: Load, @@ -1960,6 +2260,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1338..1339, id: Name("b"), ctx: Load, @@ -1972,6 +2273,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1343..1344, id: Name("c"), ctx: Load, @@ -1983,18 +2285,23 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1370..1387, value: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1370..1387, left: BinOp( ExprBinOp { + node_index: AtomicNodeIndex(..), range: 1370..1383, left: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1370..1379, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1370..1374, id: Name("type"), ctx: Load, @@ -2002,13 +2309,16 @@ Module( ), arguments: Arguments { range: 1375..1379, + node_index: AtomicNodeIndex(..), args: [ UnaryOp( ExprUnaryOp { + node_index: AtomicNodeIndex(..), range: 1376..1378, op: USub, operand: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1377..1378, id: Name("a"), ctx: Load, @@ -2024,6 +2334,7 @@ Module( op: Mult, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1382..1383, id: Name("b"), ctx: Load, @@ -2034,6 +2345,7 @@ Module( op: Add, right: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1386..1387, id: Name("c"), ctx: Load, @@ -2045,15 +2357,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1414..1423, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1414..1423, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1414..1421, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1414..1418, id: Name("type"), ctx: Load, @@ -2061,6 +2377,7 @@ Module( ), arguments: Arguments { range: 1419..1421, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -2069,6 +2386,7 @@ Module( attr: Identifier { id: Name("a"), range: 1422..1423, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2077,15 +2395,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1439..1450, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1439..1450, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1439..1448, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1439..1443, id: Name("type"), ctx: Load, @@ -2093,9 +2415,11 @@ Module( ), arguments: Arguments { range: 1444..1448, + node_index: AtomicNodeIndex(..), args: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1445..1447, elts: [], ctx: Load, @@ -2110,6 +2434,7 @@ Module( attr: Identifier { id: Name("a"), range: 1449..1450, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2118,15 +2443,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1468..1480, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1468..1480, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1468..1478, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1468..1472, id: Name("type"), ctx: Load, @@ -2134,9 +2463,11 @@ Module( ), arguments: Arguments { range: 1473..1478, + node_index: AtomicNodeIndex(..), args: [ Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1474..1476, elts: [], ctx: Load, @@ -2151,6 +2482,7 @@ Module( attr: Identifier { id: Name("a"), range: 1479..1480, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2159,15 +2491,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1498..1508, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1498..1508, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1498..1506, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1498..1502, id: Name("type"), ctx: Load, @@ -2175,6 +2511,7 @@ Module( ), slice: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1504..1505, id: Name("a"), ctx: Load, @@ -2186,6 +2523,7 @@ Module( attr: Identifier { id: Name("b"), range: 1507..1508, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2194,15 +2532,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1525..1536, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1525..1536, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1525..1534, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1525..1529, id: Name("type"), ctx: Load, @@ -2210,10 +2552,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1531..1533, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1531..1532, id: Name("a"), ctx: Load, @@ -2230,6 +2574,7 @@ Module( attr: Identifier { id: Name("b"), range: 1535..1536, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2238,15 +2583,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1575..1588, value: Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 1575..1588, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1575..1586, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1575..1579, id: Name("type"), ctx: Load, @@ -2254,10 +2603,12 @@ Module( ), slice: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 1581..1585, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1582..1583, id: Name("a"), ctx: Load, @@ -2274,6 +2625,7 @@ Module( attr: Identifier { id: Name("b"), range: 1587..1588, + node_index: AtomicNodeIndex(..), }, ctx: Load, }, @@ -2282,15 +2634,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1608..1624, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 1608..1624, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1608..1614, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1608..1612, id: Name("type"), ctx: Load, @@ -2298,6 +2654,7 @@ Module( ), arguments: Arguments { range: 1612..1614, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -2305,10 +2662,12 @@ Module( ), slice: Slice( ExprSlice { + node_index: AtomicNodeIndex(..), range: 1615..1623, lower: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1615..1616, id: Name("a"), ctx: Load, @@ -2318,6 +2677,7 @@ Module( upper: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1622..1623, id: Name("b"), ctx: Load, @@ -2334,12 +2694,15 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 1643..1661, test: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 1646..1655, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1646..1650, id: Name("type"), ctx: Store, @@ -2347,6 +2710,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1654..1655, value: Int( 1, @@ -2358,6 +2722,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 1657..1661, }, ), @@ -2367,10 +2732,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1662..1697, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1662..1666, id: Name("type"), ctx: Store, @@ -2379,19 +2746,26 @@ Module( ], value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 1669..1697, parameters: Some( Parameters { range: 1676..1681, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1676..1681, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1676..1681, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("query"), range: 1676..1681, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2405,9 +2779,11 @@ Module( ), body: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 1683..1697, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1683..1688, id: Name("query"), ctx: Load, @@ -2419,6 +2795,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1692..1697, id: Name("event"), ctx: Load, @@ -2433,12 +2810,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1698..1713, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1698..1713, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1698..1703, id: Name("print"), ctx: Load, @@ -2446,12 +2826,15 @@ Module( ), arguments: Arguments { range: 1703..1713, + node_index: AtomicNodeIndex(..), args: [ Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1704..1712, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1704..1708, id: Name("type"), ctx: Load, @@ -2459,9 +2842,11 @@ Module( ), arguments: Arguments { range: 1708..1712, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1709..1711, value: Int( 12, @@ -2482,12 +2867,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1714..1724, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1714..1724, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1714..1718, id: Name("type"), ctx: Load, @@ -2495,9 +2883,11 @@ Module( ), arguments: Arguments { range: 1718..1724, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1719..1723, id: Name("type"), ctx: Load, @@ -2512,10 +2902,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1725..1743, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1725..1726, id: Name("a"), ctx: Store, @@ -2524,9 +2916,11 @@ Module( ], value: Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 1732..1741, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1732..1736, id: Name("type"), ctx: Load, @@ -2538,6 +2932,7 @@ Module( comparators: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1740..1741, id: Name("C"), ctx: Load, @@ -2550,10 +2945,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1744..1760, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1744..1745, id: Name("a"), ctx: Store, @@ -2562,9 +2959,11 @@ Module( ], value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1751..1758, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1751..1755, id: Name("type"), ctx: Load, @@ -2572,9 +2971,11 @@ Module( ), arguments: Arguments { range: 1755..1758, + node_index: AtomicNodeIndex(..), args: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1756..1757, id: Name("b"), ctx: Load, @@ -2589,12 +2990,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1761..1778, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 1761..1778, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1761..1765, id: Name("type"), ctx: Load, @@ -2602,18 +3006,22 @@ Module( ), arguments: Arguments { range: 1766..1778, + node_index: AtomicNodeIndex(..), args: [], keywords: [ Keyword { range: 1769..1776, + node_index: AtomicNodeIndex(..), arg: Some( Identifier { id: Name("X"), range: 1769..1770, + node_index: AtomicNodeIndex(..), }, ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1773..1776, id: Name("int"), ctx: Load, @@ -2628,10 +3036,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1779..1787, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1779..1783, id: Name("type"), ctx: Store, @@ -2640,6 +3050,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1786..1787, value: Int( 1, @@ -2650,10 +3061,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1788..1800, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1788..1792, id: Name("type"), ctx: Store, @@ -2661,6 +3074,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1795..1796, id: Name("x"), ctx: Store, @@ -2669,6 +3083,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1799..1800, value: Int( 1, @@ -2679,10 +3094,12 @@ Module( ), Assign( StmtAssign { + node_index: AtomicNodeIndex(..), range: 1801..1813, targets: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1801..1802, id: Name("x"), ctx: Store, @@ -2690,6 +3107,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1805..1809, id: Name("type"), ctx: Store, @@ -2698,6 +3116,7 @@ Module( ], value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 1812..1813, value: Int( 1, @@ -2708,22 +3127,30 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 1814..1828, value: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 1814..1828, parameters: Some( Parameters { range: 1821..1822, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 1821..1822, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 1821..1822, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 1821..1822, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -2737,6 +3164,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 1824..1828, id: Name("type"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__while.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__while.py.snap index a70b73cc90..5c2e2603e1 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__while.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__while.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/while.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..314, body: [ While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 0..16, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 6..7, id: Name("x"), ctx: Load, @@ -23,9 +25,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 13..16, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 13..16, }, ), @@ -37,17 +41,21 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 18..61, test: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 24..37, op: And, values: [ Compare( ExprCompare { + node_index: AtomicNodeIndex(..), range: 25..30, left: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 25..26, id: Name("x"), ctx: Load, @@ -59,6 +67,7 @@ Module( comparators: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 29..30, value: Int( 1, @@ -70,6 +79,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 36..37, id: Name("y"), ctx: Load, @@ -81,6 +91,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 43..47, }, ), @@ -88,9 +99,11 @@ Module( orelse: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..61, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 58..61, }, ), @@ -101,14 +114,17 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 63..152, test: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 69..76, op: And, values: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 69..70, id: Name("x"), ctx: Load, @@ -116,6 +132,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 75..76, id: Name("y"), ctx: Load, @@ -127,9 +144,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 82..85, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 82..85, }, ), @@ -137,12 +156,15 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 90..111, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 90..111, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..95, id: Name("print"), ctx: Load, @@ -150,14 +172,17 @@ Module( ), arguments: Arguments { range: 95..111, + node_index: AtomicNodeIndex(..), args: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 96..110, value: StringLiteralValue { inner: Single( StringLiteral { range: 96..110, + node_index: AtomicNodeIndex(..), value: "Hello World!", flags: StringLiteralFlags { quote_style: Single, @@ -180,12 +205,15 @@ Module( orelse: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 123..144, value: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 123..144, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 123..128, id: Name("print"), ctx: Load, @@ -193,14 +221,17 @@ Module( ), arguments: Arguments { range: 128..144, + node_index: AtomicNodeIndex(..), args: [ StringLiteral( ExprStringLiteral { + node_index: AtomicNodeIndex(..), range: 129..143, value: StringLiteralValue { inner: Single( StringLiteral { range: 129..143, + node_index: AtomicNodeIndex(..), value: "Olá, Mundo!", flags: StringLiteralFlags { quote_style: Single, @@ -221,9 +252,11 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 149..152, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 149..152, }, ), @@ -234,12 +267,15 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 154..171, test: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 160..166, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 160..161, id: Name("a"), ctx: Store, @@ -247,6 +283,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 165..166, id: Name("b"), ctx: Load, @@ -257,9 +294,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 168..171, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 168..171, }, ), @@ -271,17 +310,21 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 172..197, test: BoolOp( ExprBoolOp { + node_index: AtomicNodeIndex(..), range: 178..192, op: And, values: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 179..185, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 179..180, id: Name("a"), ctx: Store, @@ -289,6 +332,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 184..185, id: Name("b"), ctx: Load, @@ -298,6 +342,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 191..192, id: Name("c"), ctx: Load, @@ -309,9 +354,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 194..197, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 194..197, }, ), @@ -323,22 +370,30 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 198..220, test: Lambda( ExprLambda { + node_index: AtomicNodeIndex(..), range: 204..215, parameters: Some( Parameters { range: 211..212, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 211..212, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 211..212, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 211..212, + node_index: AtomicNodeIndex(..), }, annotation: None, }, @@ -352,6 +407,7 @@ Module( ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 214..215, id: Name("x"), ctx: Load, @@ -362,9 +418,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 217..220, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 217..220, }, ), @@ -376,12 +434,15 @@ Module( ), While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 221..239, test: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 227..234, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 233..234, id: Name("x"), ctx: Load, @@ -392,9 +453,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 236..239, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 236..239, }, ), @@ -406,9 +469,11 @@ Module( ), If( StmtIf { + node_index: AtomicNodeIndex(..), range: 241..313, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 244..248, value: true, }, @@ -416,9 +481,11 @@ Module( body: [ While( StmtWhile { + node_index: AtomicNodeIndex(..), range: 254..298, test: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 260..261, id: Name("x"), ctx: Load, @@ -427,6 +494,7 @@ Module( body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 271..275, }, ), @@ -434,6 +502,7 @@ Module( orelse: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 294..298, }, ), @@ -444,10 +513,12 @@ Module( elif_else_clauses: [ ElifElseClause { range: 299..313, + node_index: AtomicNodeIndex(..), test: None, body: [ Pass( StmtPass { + node_index: AtomicNodeIndex(..), range: 309..313, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__with.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__with.py.snap index 260f39d072..993b8cc48a 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__with.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@statement__with.py.snap @@ -1,24 +1,27 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/valid/statement/with.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..361, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 137..151, is_async: false, items: [ WithItem { range: 142..146, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 142..146, id: Name("item"), ctx: Load, @@ -30,9 +33,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 148..151, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 148..151, }, ), @@ -43,13 +48,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 152..171, is_async: false, items: [ WithItem { range: 157..166, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 157..161, id: Name("item"), ctx: Load, @@ -58,6 +66,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 165..166, id: Name("f"), ctx: Store, @@ -69,9 +78,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 168..171, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 168..171, }, ), @@ -82,13 +93,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 172..194, is_async: false, items: [ WithItem { range: 177..182, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 177..182, id: Name("item1"), ctx: Load, @@ -98,8 +112,10 @@ Module( }, WithItem { range: 184..189, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 184..189, id: Name("item2"), ctx: Load, @@ -111,9 +127,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 191..194, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 191..194, }, ), @@ -124,13 +142,16 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 195..229, is_async: false, items: [ WithItem { range: 200..211, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 200..205, id: Name("item1"), ctx: Load, @@ -139,6 +160,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 209..211, id: Name("f1"), ctx: Store, @@ -148,8 +170,10 @@ Module( }, WithItem { range: 213..224, + node_index: AtomicNodeIndex(..), context_expr: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 213..218, id: Name("item2"), ctx: Load, @@ -158,6 +182,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 222..224, id: Name("f2"), ctx: Store, @@ -169,9 +194,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 226..229, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 226..229, }, ), @@ -182,22 +209,27 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 231..257, is_async: false, items: [ WithItem { range: 236..252, + node_index: AtomicNodeIndex(..), context_expr: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 236..252, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 241..245, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 236..237, id: Name("x"), ctx: Load, @@ -205,6 +237,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 251..252, id: Name("y"), ctx: Load, @@ -218,9 +251,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 254..257, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 254..257, }, ), @@ -231,22 +266,27 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 258..289, is_async: false, items: [ WithItem { range: 263..284, + node_index: AtomicNodeIndex(..), context_expr: If( ExprIf { + node_index: AtomicNodeIndex(..), range: 263..279, test: BooleanLiteral( ExprBooleanLiteral { + node_index: AtomicNodeIndex(..), range: 268..272, value: true, }, ), body: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 263..264, id: Name("x"), ctx: Load, @@ -254,6 +294,7 @@ Module( ), orelse: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 278..279, id: Name("y"), ctx: Load, @@ -264,6 +305,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 283..284, id: Name("f"), ctx: Store, @@ -275,9 +317,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 286..289, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 286..289, }, ), @@ -288,16 +332,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 313..334, is_async: false, items: [ WithItem { range: 318..329, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 318..324, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 318..322, id: Name("open"), ctx: Load, @@ -305,6 +353,7 @@ Module( ), arguments: Arguments { range: 322..324, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -313,6 +362,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 328..329, id: Name("f"), ctx: Store, @@ -324,9 +374,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 331..334, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 331..334, }, ), @@ -337,16 +389,20 @@ Module( ), With( StmtWith { + node_index: AtomicNodeIndex(..), range: 335..361, is_async: false, items: [ WithItem { range: 340..356, + node_index: AtomicNodeIndex(..), context_expr: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 340..346, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 340..344, id: Name("open"), ctx: Load, @@ -354,6 +410,7 @@ Module( ), arguments: Arguments { range: 344..346, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -362,9 +419,11 @@ Module( optional_vars: Some( Attribute( ExprAttribute { + node_index: AtomicNodeIndex(..), range: 350..356, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 350..351, id: Name("f"), ctx: Load, @@ -373,6 +432,7 @@ Module( attr: Identifier { id: Name("attr"), range: 352..356, + node_index: AtomicNodeIndex(..), }, ctx: Store, }, @@ -383,9 +443,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 358..361, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 358..361, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@tuple_context_manager_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@tuple_context_manager_py38.py.snap index 7018039415..46550ad231 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@tuple_context_manager_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@tuple_context_manager_py38.py.snap @@ -7,21 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/tuple_context_manager_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..85, body: [ With( StmtWith { + node_index: AtomicNodeIndex(..), range: 43..84, is_async: false, items: [ WithItem { range: 48..79, + node_index: AtomicNodeIndex(..), context_expr: Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 48..72, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 52..55, id: Name("foo"), ctx: Load, @@ -29,6 +34,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..62, id: Name("bar"), ctx: Load, @@ -36,6 +42,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 66..69, id: Name("baz"), ctx: Load, @@ -49,6 +56,7 @@ Module( optional_vars: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..79, id: Name("tup"), ctx: Store, @@ -60,9 +68,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 81..84, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 81..84, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_default_py313.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_default_py313.py.snap index 010da9ab55..8387c4e874 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_default_py313.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_default_py313.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/type_param_default_py3 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..112, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 44..65, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("X"), ctx: Store, @@ -22,18 +25,22 @@ Module( type_params: Some( TypeParams { range: 50..59, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 51..58, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 51..52, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 55..58, id: Name("int"), ctx: Load, @@ -47,6 +54,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 62..65, id: Name("int"), ctx: Load, @@ -56,28 +64,34 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 66..87, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 70..71, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 71..80, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 72..79, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 72..73, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..79, id: Name("int"), ctx: Load, @@ -91,6 +105,9 @@ Module( ), parameters: Parameters { range: 80..82, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -101,9 +118,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 84..87, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 84..87, }, ), @@ -114,27 +133,33 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 88..111, decorator_list: [], name: Identifier { id: Name("C"), range: 94..95, + node_index: AtomicNodeIndex(..), }, type_params: Some( TypeParams { range: 95..104, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 96..103, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 96..97, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 100..103, id: Name("int"), ctx: Load, @@ -149,6 +174,7 @@ Module( arguments: Some( Arguments { range: 104..106, + node_index: AtomicNodeIndex(..), args: [], keywords: [], }, @@ -156,9 +182,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 108..111, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 108..111, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_param_spec.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_param_spec.py.snap index ad273b844c..18801458d7 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_param_spec.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_param_spec.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/type_param_param_spec.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..90, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..17, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..11, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 7..10, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 9..10, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -39,6 +44,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -48,9 +54,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 18..41, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("X"), ctx: Store, @@ -59,17 +67,21 @@ Module( type_params: Some( TypeParams { range: 24..35, + node_index: AtomicNodeIndex(..), type_params: [ ParamSpec( TypeParamParamSpec { range: 25..34, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 27..28, + node_index: AtomicNodeIndex(..), }, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 31..34, id: Name("int"), ctx: Load, @@ -83,6 +95,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..41, id: Name("int"), ctx: Load, @@ -92,9 +105,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 42..62, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("X"), ctx: Store, @@ -103,13 +118,16 @@ Module( type_params: Some( TypeParams { range: 48..56, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 49..50, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 49..50, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -118,9 +136,11 @@ Module( ParamSpec( TypeParamParamSpec { range: 52..55, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 54..55, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -130,6 +150,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..62, id: Name("int"), ctx: Load, @@ -139,9 +160,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 63..89, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 68..69, id: Name("X"), ctx: Store, @@ -150,13 +173,16 @@ Module( type_params: Some( TypeParams { range: 69..83, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 70..71, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 70..71, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -165,13 +191,16 @@ Module( ParamSpec( TypeParamParamSpec { range: 73..82, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("P"), range: 75..76, + node_index: AtomicNodeIndex(..), }, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 79..82, id: Name("int"), ctx: Load, @@ -185,6 +214,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 86..89, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_type_var.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_type_var.py.snap index 5f5cf396a8..1e340b41b1 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_type_var.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_type_var.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/type_param_type_var.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..147, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..15, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..9, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 7..8, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 7..8, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -40,6 +45,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 12..15, id: Name("int"), ctx: Load, @@ -49,9 +55,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 16..37, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 21..22, id: Name("X"), ctx: Store, @@ -60,18 +68,22 @@ Module( type_params: Some( TypeParams { range: 22..31, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 23..30, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 23..24, + node_index: AtomicNodeIndex(..), }, bound: None, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 27..30, id: Name("int"), ctx: Load, @@ -85,6 +97,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 34..37, id: Name("int"), ctx: Load, @@ -94,9 +107,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 38..64, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..44, id: Name("X"), ctx: Store, @@ -105,17 +120,21 @@ Module( type_params: Some( TypeParams { range: 44..58, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 45..57, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 45..46, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..51, id: Name("int"), ctx: Load, @@ -125,6 +144,7 @@ Module( default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 54..57, id: Name("int"), ctx: Load, @@ -138,6 +158,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 61..64, id: Name("int"), ctx: Load, @@ -147,9 +168,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 65..98, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 70..71, id: Name("X"), ctx: Store, @@ -158,21 +181,26 @@ Module( type_params: Some( TypeParams { range: 71..92, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 72..91, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 72..73, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 75..85, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 76..79, id: Name("int"), ctx: Load, @@ -180,6 +208,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..84, id: Name("int"), ctx: Load, @@ -194,6 +223,7 @@ Module( default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 88..91, id: Name("int"), ctx: Load, @@ -207,6 +237,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 95..98, id: Name("int"), ctx: Load, @@ -216,9 +247,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 99..146, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..105, id: Name("X"), ctx: Store, @@ -227,17 +260,21 @@ Module( type_params: Some( TypeParams { range: 105..140, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 106..118, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 106..107, + node_index: AtomicNodeIndex(..), }, bound: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 109..112, id: Name("int"), ctx: Load, @@ -247,6 +284,7 @@ Module( default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 115..118, id: Name("int"), ctx: Load, @@ -258,17 +296,21 @@ Module( TypeVar( TypeParamTypeVar { range: 120..139, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("U"), range: 120..121, + node_index: AtomicNodeIndex(..), }, bound: Some( Tuple( ExprTuple { + node_index: AtomicNodeIndex(..), range: 123..133, elts: [ Name( ExprName { + node_index: AtomicNodeIndex(..), range: 124..127, id: Name("int"), ctx: Load, @@ -276,6 +318,7 @@ Module( ), Name( ExprName { + node_index: AtomicNodeIndex(..), range: 129..132, id: Name("int"), ctx: Load, @@ -290,6 +333,7 @@ Module( default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 136..139, id: Name("int"), ctx: Load, @@ -303,6 +347,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 143..146, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_type_var_tuple.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_type_var_tuple.py.snap index 93e16848e4..aa50926d78 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_type_var_tuple.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_param_type_var_tuple.py.snap @@ -1,20 +1,22 @@ --- source: crates/ruff_python_parser/tests/fixtures.rs input_file: crates/ruff_python_parser/resources/inline/ok/type_param_type_var_tuple.py -snapshot_kind: text --- ## AST ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..115, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 0..17, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 5..6, id: Name("X"), ctx: Store, @@ -23,13 +25,16 @@ Module( type_params: Some( TypeParams { range: 6..11, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 7..10, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 8..10, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -39,6 +44,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 14..17, id: Name("int"), ctx: Load, @@ -48,9 +54,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 18..41, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 23..24, id: Name("X"), ctx: Store, @@ -59,17 +67,21 @@ Module( type_params: Some( TypeParams { range: 24..35, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 25..34, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 26..28, + node_index: AtomicNodeIndex(..), }, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 31..34, id: Name("int"), ctx: Load, @@ -83,6 +95,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 38..41, id: Name("int"), ctx: Load, @@ -92,9 +105,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 42..66, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("X"), ctx: Store, @@ -103,20 +118,25 @@ Module( type_params: Some( TypeParams { range: 48..60, + node_index: AtomicNodeIndex(..), type_params: [ TypeVarTuple( TypeParamTypeVarTuple { range: 49..59, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 50..52, + node_index: AtomicNodeIndex(..), }, default: Some( Starred( ExprStarred { + node_index: AtomicNodeIndex(..), range: 55..59, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..59, id: Name("int"), ctx: Load, @@ -133,6 +153,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 63..66, id: Name("int"), ctx: Load, @@ -142,9 +163,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 67..87, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 72..73, id: Name("X"), ctx: Store, @@ -153,13 +176,16 @@ Module( type_params: Some( TypeParams { range: 73..81, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 74..75, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 74..75, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -168,9 +194,11 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 77..80, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 78..80, + node_index: AtomicNodeIndex(..), }, default: None, }, @@ -180,6 +208,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 84..87, id: Name("int"), ctx: Load, @@ -189,9 +218,11 @@ Module( ), TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 88..114, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 93..94, id: Name("X"), ctx: Store, @@ -200,13 +231,16 @@ Module( type_params: Some( TypeParams { range: 94..108, + node_index: AtomicNodeIndex(..), type_params: [ TypeVar( TypeParamTypeVar { range: 95..96, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("T"), range: 95..96, + node_index: AtomicNodeIndex(..), }, bound: None, default: None, @@ -215,13 +249,16 @@ Module( TypeVarTuple( TypeParamTypeVarTuple { range: 98..107, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("Ts"), range: 99..101, + node_index: AtomicNodeIndex(..), }, default: Some( Name( ExprName { + node_index: AtomicNodeIndex(..), range: 104..107, id: Name("int"), ctx: Load, @@ -235,6 +272,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 111..114, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_stmt_py312.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_stmt_py312.py.snap index 62eeead56c..7e590b4515 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_stmt_py312.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@type_stmt_py312.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/type_stmt_py312.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..57, body: [ TypeAlias( StmtTypeAlias { + node_index: AtomicNodeIndex(..), range: 44..56, name: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 49..50, id: Name("x"), ctx: Store, @@ -22,6 +25,7 @@ Module( type_params: None, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 53..56, id: Name("int"), ctx: Load, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@unparenthesized_named_expr_index_py39.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@unparenthesized_named_expr_index_py39.py.snap index e3329425de..92c7cefb86 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@unparenthesized_named_expr_index_py39.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@unparenthesized_named_expr_index_py39.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/ok/unparenthesized_named_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..53, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..52, value: Subscript( ExprSubscript { + node_index: AtomicNodeIndex(..), range: 43..52, value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 43..46, id: Name("lst"), ctx: Load, @@ -24,9 +28,11 @@ Module( ), slice: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 47..51, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 47..48, id: Name("x"), ctx: Store, @@ -34,6 +40,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 50..51, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@unparenthesized_named_expr_py39.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@unparenthesized_named_expr_py39.py.snap index 33d284c9b5..0f8b9f47b7 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@unparenthesized_named_expr_py39.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@unparenthesized_named_expr_py39.py.snap @@ -7,20 +7,25 @@ input_file: crates/ruff_python_parser/resources/inline/ok/unparenthesized_named_ ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..88, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 43..57, value: Set( ExprSet { + node_index: AtomicNodeIndex(..), range: 43..57, elts: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 44..50, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("x"), ctx: Store, @@ -28,6 +33,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 49..50, value: Int( 1, @@ -38,6 +44,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 52..53, value: Int( 2, @@ -46,6 +53,7 @@ Module( ), NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 55..56, value: Int( 3, @@ -59,15 +67,19 @@ Module( ), Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 58..87, value: SetComp( ExprSetComp { + node_index: AtomicNodeIndex(..), range: 58..87, elt: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 59..68, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 59..63, id: Name("last"), ctx: Store, @@ -75,6 +87,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 67..68, id: Name("x"), ctx: Load, @@ -85,8 +98,10 @@ Module( generators: [ Comprehension { range: 69..86, + node_index: AtomicNodeIndex(..), target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..74, id: Name("x"), ctx: Store, @@ -94,9 +109,11 @@ Module( ), iter: Call( ExprCall { + node_index: AtomicNodeIndex(..), range: 78..86, func: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 78..83, id: Name("range"), ctx: Load, @@ -104,9 +121,11 @@ Module( ), arguments: Arguments { range: 83..86, + node_index: AtomicNodeIndex(..), args: [ NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 84..85, value: Int( 3, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_class.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_class.py.snap index feeea973fb..f4de814c8d 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_class.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_class.py.snap @@ -7,26 +7,32 @@ input_file: crates/ruff_python_parser/resources/inline/ok/valid_annotation_class ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..137, body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 0..23, decorator_list: [], name: Identifier { id: Name("F"), range: 6..7, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 7..18, + node_index: AtomicNodeIndex(..), args: [ Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 8..17, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 8..9, id: Name("y"), ctx: Store, @@ -34,6 +40,7 @@ Module( ), value: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 13..17, id: Name("list"), ctx: Load, @@ -48,9 +55,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 20..23, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 20..23, }, ), @@ -61,16 +70,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 24..93, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 28..29, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 29..31, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -81,23 +95,28 @@ Module( body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 37..60, decorator_list: [], name: Identifier { id: Name("G"), range: 43..44, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 44..55, + node_index: AtomicNodeIndex(..), args: [ Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 46..53, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 52..53, value: Int( 1, @@ -114,9 +133,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 57..60, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 57..60, }, ), @@ -127,22 +148,27 @@ Module( ), ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 65..93, decorator_list: [], name: Identifier { id: Name("H"), range: 71..72, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 72..88, + node_index: AtomicNodeIndex(..), args: [ YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 74..86, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 85..86, value: Int( 1, @@ -158,9 +184,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 90..93, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 90..93, }, ), @@ -174,16 +202,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 94..136, is_async: true, decorator_list: [], name: Identifier { id: Name("f"), range: 104..105, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 105..107, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -194,22 +227,27 @@ Module( body: [ ClassDef( StmtClassDef { + node_index: AtomicNodeIndex(..), range: 113..136, decorator_list: [], name: Identifier { id: Name("G"), range: 119..120, + node_index: AtomicNodeIndex(..), }, type_params: None, arguments: Some( Arguments { range: 120..131, + node_index: AtomicNodeIndex(..), args: [ Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 122..129, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 128..129, value: Int( 1, @@ -225,9 +263,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..136, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 133..136, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_function_py313.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_function_py313.py.snap index 1a58dffba2..c1c32f5605 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_function_py313.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_function_py313.py.snap @@ -7,20 +7,26 @@ input_file: crates/ruff_python_parser/resources/inline/ok/valid_annotation_funct ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..316, body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 44..68, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 48..49, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 49..51, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -30,9 +36,11 @@ Module( returns: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 56..62, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 56..57, id: Name("y"), ctx: Store, @@ -40,6 +48,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 61..62, value: Int( 3, @@ -52,9 +61,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 65..68, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 65..68, }, ), @@ -65,32 +76,42 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 69..94, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 73..74, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 74..89, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 75..88, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 75..88, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 75..78, + node_index: AtomicNodeIndex(..), }, annotation: Some( Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 81..87, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 81..82, id: Name("x"), ctx: Store, @@ -98,6 +119,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 86..87, value: Int( 1, @@ -119,9 +141,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 91..94, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 91..94, }, ), @@ -132,16 +156,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 95..235, is_async: false, decorator_list: [], name: Identifier { id: Name("outer"), range: 99..104, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 104..106, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -152,33 +181,43 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 112..136, is_async: false, decorator_list: [], name: Identifier { id: Name("i"), range: 116..117, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 117..131, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 118..130, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 118..130, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 118..119, + node_index: AtomicNodeIndex(..), }, annotation: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 122..129, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 128..129, value: Int( 1, @@ -201,9 +240,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 133..136, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 133..136, }, ), @@ -214,16 +255,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 141..166, is_async: false, decorator_list: [], name: Identifier { id: Name("k"), range: 145..146, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 146..148, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -233,10 +279,12 @@ Module( returns: Some( Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 153..160, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 159..160, value: Int( 1, @@ -250,9 +298,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 163..166, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 163..166, }, ), @@ -263,32 +313,42 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 171..200, is_async: false, decorator_list: [], name: Identifier { id: Name("m"), range: 175..176, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 176..195, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 177..194, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 177..194, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("x"), range: 177..178, + node_index: AtomicNodeIndex(..), }, annotation: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 181..193, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 192..193, value: Int( 1, @@ -310,9 +370,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 197..200, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 197..200, }, ), @@ -323,16 +385,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 205..235, is_async: false, decorator_list: [], name: Identifier { id: Name("o"), range: 209..210, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 210..212, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -342,9 +409,11 @@ Module( returns: Some( YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 217..229, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 228..229, value: Int( 1, @@ -357,9 +426,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 232..235, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 232..235, }, ), @@ -373,16 +444,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 236..315, is_async: true, decorator_list: [], name: Identifier { id: Name("outer"), range: 246..251, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 251..253, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -393,16 +469,21 @@ Module( body: [ FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 259..284, is_async: false, decorator_list: [], name: Identifier { id: Name("f"), range: 263..264, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 264..266, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -412,9 +493,11 @@ Module( returns: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 271..278, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 277..278, value: Int( 1, @@ -427,9 +510,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 281..284, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 281..284, }, ), @@ -440,32 +525,42 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 289..315, is_async: false, decorator_list: [], name: Identifier { id: Name("g"), range: 293..294, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 294..310, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [ ParameterWithDefault { range: 295..309, + node_index: AtomicNodeIndex(..), parameter: Parameter { range: 295..309, + node_index: AtomicNodeIndex(..), name: Identifier { id: Name("arg"), range: 295..298, + node_index: AtomicNodeIndex(..), }, annotation: Some( Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 301..308, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 307..308, value: Int( 1, @@ -487,9 +582,11 @@ Module( body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 312..315, value: EllipsisLiteral( ExprEllipsisLiteral { + node_index: AtomicNodeIndex(..), range: 312..315, }, ), diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_py313.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_py313.py.snap index 9119467d84..be4b3961e8 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_py313.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@valid_annotation_py313.py.snap @@ -7,13 +7,16 @@ input_file: crates/ruff_python_parser/resources/inline/ok/valid_annotation_py313 ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..144, body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 44..55, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 44..45, id: Name("a"), ctx: Store, @@ -21,9 +24,11 @@ Module( ), annotation: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 48..54, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 48..49, id: Name("x"), ctx: Store, @@ -31,6 +36,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 53..54, value: Int( 1, @@ -45,16 +51,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 56..107, is_async: false, decorator_list: [], name: Identifier { id: Name("outer"), range: 60..65, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 65..67, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -65,9 +76,11 @@ Module( body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 73..85, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 73..74, id: Name("b"), ctx: Store, @@ -75,10 +88,12 @@ Module( ), annotation: Yield( ExprYield { + node_index: AtomicNodeIndex(..), range: 77..84, value: Some( NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 83..84, value: Int( 1, @@ -94,9 +109,11 @@ Module( ), AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 90..107, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 90..91, id: Name("c"), ctx: Store, @@ -104,9 +121,11 @@ Module( ), annotation: YieldFrom( ExprYieldFrom { + node_index: AtomicNodeIndex(..), range: 94..106, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 105..106, value: Int( 1, @@ -124,16 +143,21 @@ Module( ), FunctionDef( StmtFunctionDef { + node_index: AtomicNodeIndex(..), range: 108..143, is_async: true, decorator_list: [], name: Identifier { id: Name("outer"), range: 118..123, + node_index: AtomicNodeIndex(..), }, type_params: None, parameters: Parameters { range: 123..125, + node_index: AtomicNodeIndex( + 0, + ), posonlyargs: [], args: [], vararg: None, @@ -144,9 +168,11 @@ Module( body: [ AnnAssign( StmtAnnAssign { + node_index: AtomicNodeIndex(..), range: 131..143, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 131..132, id: Name("d"), ctx: Store, @@ -154,9 +180,11 @@ Module( ), annotation: Await( ExprAwait { + node_index: AtomicNodeIndex(..), range: 135..142, value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 141..142, value: Int( 1, diff --git a/crates/ruff_python_parser/tests/snapshots/valid_syntax@walrus_py38.py.snap b/crates/ruff_python_parser/tests/snapshots/valid_syntax@walrus_py38.py.snap index b0dfb2c4db..16008f3821 100644 --- a/crates/ruff_python_parser/tests/snapshots/valid_syntax@walrus_py38.py.snap +++ b/crates/ruff_python_parser/tests/snapshots/valid_syntax@walrus_py38.py.snap @@ -7,16 +7,20 @@ input_file: crates/ruff_python_parser/resources/inline/ok/walrus_py38.py ``` Module( ModModule { + node_index: AtomicNodeIndex(..), range: 0..54, body: [ Expr( StmtExpr { + node_index: AtomicNodeIndex(..), range: 45..53, value: Named( ExprNamed { + node_index: AtomicNodeIndex(..), range: 46..52, target: Name( ExprName { + node_index: AtomicNodeIndex(..), range: 46..47, id: Name("x"), ctx: Store, @@ -24,6 +28,7 @@ Module( ), value: NumberLiteral( ExprNumberLiteral { + node_index: AtomicNodeIndex(..), range: 51..52, value: Int( 1, diff --git a/crates/ruff_python_semantic/src/analyze/function_type.rs b/crates/ruff_python_semantic/src/analyze/function_type.rs index be9cac6c60..5949b71c88 100644 --- a/crates/ruff_python_semantic/src/analyze/function_type.rs +++ b/crates/ruff_python_semantic/src/analyze/function_type.rs @@ -136,7 +136,11 @@ fn is_class_method( pub fn is_stub(function_def: &StmtFunctionDef, semantic: &SemanticModel) -> bool { function_def.body.iter().all(|stmt| match stmt { Stmt::Pass(_) => true, - Stmt::Expr(StmtExpr { value, range: _ }) => { + Stmt::Expr(StmtExpr { + value, + range: _, + node_index: _, + }) => { matches!( value.as_ref(), Expr::StringLiteral(_) | Expr::EllipsisLiteral(_) @@ -144,6 +148,7 @@ pub fn is_stub(function_def: &StmtFunctionDef, semantic: &SemanticModel) -> bool } Stmt::Raise(StmtRaise { range: _, + node_index: _, exc: exception, cause: _, }) => exception.as_ref().is_some_and(|exc| { diff --git a/crates/ruff_python_semantic/src/analyze/imports.rs b/crates/ruff_python_semantic/src/analyze/imports.rs index 60313eba14..e5f20f04d6 100644 --- a/crates/ruff_python_semantic/src/analyze/imports.rs +++ b/crates/ruff_python_semantic/src/analyze/imports.rs @@ -12,7 +12,11 @@ use crate::SemanticModel; /// ``` pub fn is_sys_path_modification(stmt: &Stmt, semantic: &SemanticModel) -> bool { match stmt { - Stmt::Expr(ast::StmtExpr { value, range: _ }) => match value.as_ref() { + Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) => match value.as_ref() { Expr::Call(ast::ExprCall { func, .. }) => semantic .resolve_qualified_name(func.as_ref()) .is_some_and(|qualified_name| { @@ -96,7 +100,12 @@ pub fn is_os_environ_modification(stmt: &Stmt, semantic: &SemanticModel) -> bool /// matplotlib.use("Agg") /// ``` pub fn is_matplotlib_activation(stmt: &Stmt, semantic: &SemanticModel) -> bool { - let Stmt::Expr(ast::StmtExpr { value, range: _ }) = stmt else { + let Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) = stmt + else { return false; }; let Expr::Call(ast::ExprCall { func, .. }) = value.as_ref() else { diff --git a/crates/ruff_python_semantic/src/analyze/typing.rs b/crates/ruff_python_semantic/src/analyze/typing.rs index 90594a15ef..7038d267d4 100644 --- a/crates/ruff_python_semantic/src/analyze/typing.rs +++ b/crates/ruff_python_semantic/src/analyze/typing.rs @@ -287,6 +287,7 @@ pub fn is_immutable_annotation( op: Operator::BitOr, right, range: _, + node_index: _, }) => { is_immutable_annotation(left, semantic, extend_immutable_calls) && is_immutable_annotation(right, semantic, extend_immutable_calls) @@ -442,6 +443,7 @@ where left, right, range: _, + node_index: _, }) = expr { // The union data structure usually looks like this: diff --git a/crates/ruff_python_semantic/src/globals.rs b/crates/ruff_python_semantic/src/globals.rs index 9f9ff62566..3a5e830733 100644 --- a/crates/ruff_python_semantic/src/globals.rs +++ b/crates/ruff_python_semantic/src/globals.rs @@ -74,7 +74,11 @@ impl<'a> GlobalsVisitor<'a> { impl<'a> StatementVisitor<'a> for GlobalsVisitor<'a> { fn visit_stmt(&mut self, stmt: &'a Stmt) { match stmt { - Stmt::Global(ast::StmtGlobal { names, range: _ }) => { + Stmt::Global(ast::StmtGlobal { + names, + range: _, + node_index: _, + }) => { for name in names { self.0.insert(name.as_str(), name.range()); } diff --git a/crates/ruff_python_semantic/src/imports.rs b/crates/ruff_python_semantic/src/imports.rs index fd4d682336..4cc55123cb 100644 --- a/crates/ruff_python_semantic/src/imports.rs +++ b/crates/ruff_python_semantic/src/imports.rs @@ -230,6 +230,7 @@ impl<'de> serde::de::Deserialize<'de> for NameImports { names, level, range: _, + node_index: _, }) => names .iter() .map(|name| { @@ -243,7 +244,11 @@ impl<'de> serde::de::Deserialize<'de> for NameImports { }) }) .collect(), - Stmt::Import(ast::StmtImport { names, range: _ }) => names + Stmt::Import(ast::StmtImport { + names, + range: _, + node_index: _, + }) => names .iter() .map(|name| { NameImport::Import(ModuleNameImport { diff --git a/crates/ruff_python_semantic/src/model/all.rs b/crates/ruff_python_semantic/src/model/all.rs index ba2d1ddb3c..bc05d96efe 100644 --- a/crates/ruff_python_semantic/src/model/all.rs +++ b/crates/ruff_python_semantic/src/model/all.rs @@ -82,7 +82,12 @@ impl SemanticModel<'_> { flags: &mut DunderAllFlags, ) { for elt in elts { - if let Expr::StringLiteral(ast::ExprStringLiteral { value, range }) = elt { + if let Expr::StringLiteral(ast::ExprStringLiteral { + value, + range, + node_index: _, + }) = elt + { names.push(DunderAllName { name: value.to_str(), range: *range, diff --git a/crates/ty_project/src/lib.rs b/crates/ty_project/src/lib.rs index bc9daff46e..924785ca2d 100644 --- a/crates/ty_project/src/lib.rs +++ b/crates/ty_project/src/lib.rs @@ -253,7 +253,7 @@ impl Project { tracing::debug_span!(parent: project_span, "check_file", ?file); let _entered = check_file_span.entered(); - let result = check_file_impl(&db, file); + let result = self.check_file_impl(&db, file); file_diagnostics.lock().unwrap().extend(result); reporter.report_file(&file); @@ -282,7 +282,7 @@ impl Project { .map(OptionDiagnostic::to_diagnostic) .collect(); - let check_diagnostics = check_file_impl(db, file); + let check_diagnostics = self.check_file_impl(db, file); file_diagnostics.extend(check_diagnostics); file_diagnostics @@ -461,61 +461,75 @@ impl Project { self.set_file_set(db).to(IndexedFiles::lazy()); } } -} -fn check_file_impl(db: &dyn Db, file: File) -> Vec { - let mut diagnostics: Vec = Vec::new(); + fn check_file_impl(self, db: &dyn Db, file: File) -> Vec { + let mut diagnostics: Vec = Vec::new(); - // Abort checking if there are IO errors. - let source = source_text(db.upcast(), file); + // Abort checking if there are IO errors. + let source = source_text(db.upcast(), file); - if let Some(read_error) = source.read_error() { - diagnostics.push( - IOErrorDiagnostic { - file: Some(file), - error: read_error.clone().into(), - } - .to_diagnostic(), - ); - return diagnostics; - } - - let parsed = parsed_module(db.upcast(), file); - - let parsed_ref = parsed.load(db.upcast()); - diagnostics.extend( - parsed_ref - .errors() - .iter() - .map(|error| create_parse_diagnostic(file, error)), - ); - - diagnostics.extend(parsed_ref.unsupported_syntax_errors().iter().map(|error| { - let mut error = create_unsupported_syntax_diagnostic(file, error); - add_inferred_python_version_hint_to_diagnostic(db.upcast(), &mut error, "parsing syntax"); - error - })); - - { - let db = AssertUnwindSafe(db); - match catch(&**db, file, || check_types(db.upcast(), file)) { - Ok(Some(type_check_diagnostics)) => { - diagnostics.extend(type_check_diagnostics.into_iter().cloned()); - } - Ok(None) => {} - Err(diagnostic) => diagnostics.push(diagnostic), + if let Some(read_error) = source.read_error() { + diagnostics.push( + IOErrorDiagnostic { + file: Some(file), + error: read_error.clone().into(), + } + .to_diagnostic(), + ); + return diagnostics; } + + let parsed = parsed_module(db.upcast(), file); + + let parsed_ref = parsed.load(db.upcast()); + diagnostics.extend( + parsed_ref + .errors() + .iter() + .map(|error| create_parse_diagnostic(file, error)), + ); + + diagnostics.extend(parsed_ref.unsupported_syntax_errors().iter().map(|error| { + let mut error = create_unsupported_syntax_diagnostic(file, error); + add_inferred_python_version_hint_to_diagnostic( + db.upcast(), + &mut error, + "parsing syntax", + ); + error + })); + + { + let db = AssertUnwindSafe(db); + match catch(&**db, file, || check_types(db.upcast(), file)) { + Ok(Some(type_check_diagnostics)) => { + diagnostics.extend(type_check_diagnostics.into_iter().cloned()); + } + Ok(None) => {} + Err(diagnostic) => diagnostics.push(diagnostic), + } + } + + if self + .open_fileset(db) + .is_none_or(|files| !files.contains(&file)) + { + // Drop the AST now that we are done checking this file. It is not currently open, + // so it is unlikely to be accessed again soon. If any queries need to access the AST + // from across files, it will be re-parsed. + parsed.clear(); + } + + diagnostics.sort_unstable_by_key(|diagnostic| { + diagnostic + .primary_span() + .and_then(|span| span.range()) + .unwrap_or_default() + .start() + }); + + diagnostics } - - diagnostics.sort_unstable_by_key(|diagnostic| { - diagnostic - .primary_span() - .and_then(|span| span.range()) - .unwrap_or_default() - .start() - }); - - diagnostics } #[derive(Debug)] @@ -686,8 +700,9 @@ where #[cfg(test)] mod tests { + use crate::Db; + use crate::ProjectMetadata; use crate::db::tests::TestDb; - use crate::{ProjectMetadata, check_file_impl}; use ruff_db::files::system_path_to_file; use ruff_db::source::source_text; use ruff_db::system::{DbWithTestSystem, DbWithWritableSystem as _, SystemPath, SystemPathBuf}; @@ -723,7 +738,8 @@ mod tests { assert_eq!(source_text(&db, file).as_str(), ""); assert_eq!( - check_file_impl(&db, file) + db.project() + .check_file_impl(&db, file) .into_iter() .map(|diagnostic| diagnostic.primary_message().to_string()) .collect::>(), @@ -739,7 +755,8 @@ mod tests { assert_eq!(source_text(&db, file).as_str(), ""); assert_eq!( - check_file_impl(&db, file) + db.project() + .check_file_impl(&db, file) .into_iter() .map(|diagnostic| diagnostic.primary_message().to_string()) .collect::>(), diff --git a/crates/ty_python_semantic/src/ast_node_ref.rs b/crates/ty_python_semantic/src/ast_node_ref.rs index fd3e1726dc..3c15435f92 100644 --- a/crates/ty_python_semantic/src/ast_node_ref.rs +++ b/crates/ty_python_semantic/src/ast_node_ref.rs @@ -1,17 +1,17 @@ -use std::sync::Arc; +use std::fmt::Debug; +use std::marker::PhantomData; use ruff_db::parsed::ParsedModuleRef; +use ruff_python_ast::{AnyNodeRef, NodeIndex}; +use ruff_python_ast::{AnyRootNodeRef, HasNodeIndex}; +use ruff_text_size::Ranged; -/// Ref-counted owned reference to an AST node. +/// Reference to an AST node. /// -/// The type holds an owned reference to the node's ref-counted [`ParsedModuleRef`]. -/// Holding on to the node's [`ParsedModuleRef`] guarantees that the reference to the -/// node must still be valid. -/// -/// Holding on to any [`AstNodeRef`] prevents the [`ParsedModuleRef`] from being released. -/// -/// ## Equality -/// Two `AstNodeRef` are considered equal if their pointer addresses are equal. +/// This type acts as a reference to an AST node within a given module that remains +/// stable regardless of whether the AST is garbage collected. As such, accessing a +/// node through the [`AstNodeRef`] requires a reference to the current [`ParsedModuleRef`] +/// for the module containing the node. /// /// ## Usage in salsa tracked structs /// It's important that [`AstNodeRef`] fields in salsa tracked structs are tracked fields @@ -32,54 +32,83 @@ use ruff_db::parsed::ParsedModuleRef; /// run on every AST change. All other queries only run when the expression's identity changes. #[derive(Clone)] pub struct AstNodeRef { - /// Owned reference to the node's [`ParsedModuleRef`]. - /// - /// The node's reference is guaranteed to remain valid as long as it's enclosing - /// [`ParsedModuleRef`] is alive. - parsed: ParsedModuleRef, + /// A pointer to the [`ruff_db::parsed::ParsedModule`] that this node was created from. + module_ptr: *const (), - /// Pointer to the referenced node. - node: std::ptr::NonNull, + /// Debug information. + #[cfg(debug_assertions)] + kind: ruff_python_ast::NodeKind, + #[cfg(debug_assertions)] + range: ruff_text_size::TextRange, + + /// The index of the node in the AST. + index: NodeIndex, + + _node: PhantomData, } -#[expect(unsafe_code)] -impl AstNodeRef { - /// Creates a new `AstNodeRef` that references `node`. The `parsed` is the [`ParsedModuleRef`] to - /// which the `AstNodeRef` belongs. +impl AstNodeRef +where + T: HasNodeIndex + Ranged + PartialEq + Debug, + for<'ast> AnyNodeRef<'ast>: From<&'ast T>, + for<'ast> &'ast T: TryFrom>, +{ + /// Creates a new `AstNodeRef` that references `node`. /// - /// ## Safety - /// - /// Dereferencing the `node` can result in undefined behavior if `parsed` isn't the - /// [`ParsedModuleRef`] to which `node` belongs. It's the caller's responsibility to ensure that - /// the invariant `node belongs to parsed` is upheld. - pub(super) unsafe fn new(parsed: ParsedModuleRef, node: &T) -> Self { + /// This method may panic or produce unspecified results if the provided module is from a + /// different file or Salsa revision than the module to which the node belongs. + pub(super) fn new(module_ref: &ParsedModuleRef, node: &T) -> Self { + let index = node.node_index().load(); + debug_assert_eq!(module_ref.get_by_index(index).try_into().ok(), Some(node)); + Self { - parsed, - node: std::ptr::NonNull::from(node), + index, + module_ptr: module_ref.module().as_ptr(), + #[cfg(debug_assertions)] + kind: AnyNodeRef::from(node).kind(), + #[cfg(debug_assertions)] + range: node.range(), + _node: PhantomData, } } /// Returns a reference to the wrapped node. /// - /// Note that this method will panic if the provided module is from a different file or Salsa revision - /// than the module this node was created with. - pub fn node<'ast>(&self, parsed: &'ast ParsedModuleRef) -> &'ast T { - debug_assert!(Arc::ptr_eq(self.parsed.as_arc(), parsed.as_arc())); + /// This method may panic or produce unspecified results if the provided module is from a + /// different file or Salsa revision than the module to which the node belongs. + pub fn node<'ast>(&self, module_ref: &'ast ParsedModuleRef) -> &'ast T { + debug_assert_eq!(module_ref.module().as_ptr(), self.module_ptr); - // SAFETY: Holding on to `parsed` ensures that the AST to which `node` belongs is still - // alive and not moved. - unsafe { self.node.as_ref() } + // Note that the module pointer is guaranteed to be stable within the Salsa + // revision, so the file contents cannot have changed by the above assertion. + module_ref + .get_by_index(self.index) + .try_into() + .ok() + .expect("AST indices should never change within the same revision") } } -impl std::fmt::Debug for AstNodeRef +#[allow(clippy::missing_fields_in_debug)] +impl Debug for AstNodeRef where - T: std::fmt::Debug, + T: Debug, + for<'ast> &'ast T: TryFrom>, { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_tuple("AstNodeRef") - .field(self.node(&self.parsed)) - .finish() + #[cfg(debug_assertions)] + { + f.debug_struct("AstNodeRef") + .field("kind", &self.kind) + .field("range", &self.range) + .finish() + } + + #[cfg(not(debug_assertions))] + { + // Unfortunately we have no access to the AST here. + f.debug_tuple("AstNodeRef").finish_non_exhaustive() + } } } @@ -88,9 +117,10 @@ unsafe impl salsa::Update for AstNodeRef { unsafe fn maybe_update(old_pointer: *mut Self, new_value: Self) -> bool { let old_ref = unsafe { &mut (*old_pointer) }; - if Arc::ptr_eq(old_ref.parsed.as_arc(), new_value.parsed.as_arc()) - && old_ref.node.eq(&new_value.node) - { + // Two nodes are guaranteed to be equal as long as they refer to the same node index + // within the same module. Note that the module pointer is guaranteed to be stable + // within the Salsa revision, so the file contents cannot have changed. + if old_ref.module_ptr == new_value.module_ptr && old_ref.index == new_value.index { false } else { *old_ref = new_value; @@ -99,6 +129,7 @@ unsafe impl salsa::Update for AstNodeRef { } } +// SAFETY: The `module_ptr` is only used for pointer equality and never accessed directly. #[expect(unsafe_code)] unsafe impl Send for AstNodeRef where T: Send {} #[expect(unsafe_code)] diff --git a/crates/ty_python_semantic/src/module_name.rs b/crates/ty_python_semantic/src/module_name.rs index 48162fe3d9..2111a64b83 100644 --- a/crates/ty_python_semantic/src/module_name.rs +++ b/crates/ty_python_semantic/src/module_name.rs @@ -222,6 +222,7 @@ impl ModuleName { level, names: _, range: _, + node_index: _, } = node; let module = module.as_deref(); diff --git a/crates/ty_python_semantic/src/node_key.rs b/crates/ty_python_semantic/src/node_key.rs index 4c2ade0b7e..470ef35df2 100644 --- a/crates/ty_python_semantic/src/node_key.rs +++ b/crates/ty_python_semantic/src/node_key.rs @@ -1,21 +1,14 @@ -use ruff_python_ast::AnyNodeRef; +use ruff_python_ast::{HasNodeIndex, NodeIndex}; /// Compact key for a node for use in a hash map. -/// -/// Stores the memory address of the node, because using the range and the kind -/// of the node is not enough to uniquely identify them in ASTs resulting from -/// invalid syntax. For example, parsing the input `for` results in a `StmtFor` -/// AST node where both the `target` and the `iter` field are `ExprName` nodes -/// with the same (empty) range `3..3`. #[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] -pub(super) struct NodeKey(usize); +pub(super) struct NodeKey(NodeIndex); impl NodeKey { - pub(super) fn from_node<'a, N>(node: N) -> Self + pub(super) fn from_node(node: N) -> Self where - N: Into>, + N: HasNodeIndex, { - let node = node.into(); - NodeKey(node.as_ptr().as_ptr() as usize) + NodeKey(node.node_index().load()) } } diff --git a/crates/ty_python_semantic/src/semantic_index/builder.rs b/crates/ty_python_semantic/src/semantic_index/builder.rs index 5c0c5dc7ff..b8e3dc5d0e 100644 --- a/crates/ty_python_semantic/src/semantic_index/builder.rs +++ b/crates/ty_python_semantic/src/semantic_index/builder.rs @@ -241,9 +241,8 @@ impl<'db, 'ast> SemanticIndexBuilder<'db, 'ast> { ) { let children_start = self.scopes.next_index() + 1; - // SAFETY: `node` is guaranteed to be a child of `self.module` - #[expect(unsafe_code)] - let node_with_kind = unsafe { node.to_kind(self.module.clone()) }; + // Note `node` is guaranteed to be a child of `self.module` + let node_with_kind = node.to_kind(self.module); let scope = Scope::new( parent, @@ -473,9 +472,8 @@ impl<'db, 'ast> SemanticIndexBuilder<'db, 'ast> { ) -> (Definition<'db>, usize) { let definition_node: DefinitionNodeRef<'ast, 'db> = definition_node.into(); - #[expect(unsafe_code)] - // SAFETY: `definition_node` is guaranteed to be a child of `self.module` - let kind = unsafe { definition_node.into_owned(self.module.clone()) }; + // Note `definition_node` is guaranteed to be a child of `self.module` + let kind = definition_node.into_owned(self.module); let category = kind.category(self.source_type.is_stub(), self.module); let is_reexported = kind.is_reexported(); @@ -782,13 +780,8 @@ impl<'db, 'ast> SemanticIndexBuilder<'db, 'ast> { self.db, self.file, self.current_scope(), - #[expect(unsafe_code)] - unsafe { - AstNodeRef::new(self.module.clone(), expression_node) - }, - #[expect(unsafe_code)] - assigned_to - .map(|assigned_to| unsafe { AstNodeRef::new(self.module.clone(), assigned_to) }), + AstNodeRef::new(self.module, expression_node), + assigned_to.map(|assigned_to| AstNodeRef::new(self.module, assigned_to)), expression_kind, countme::Count::default(), ); @@ -810,6 +803,7 @@ impl<'db, 'ast> SemanticIndexBuilder<'db, 'ast> { let (name, bound, default) = match type_param { ast::TypeParam::TypeVar(ast::TypeParamTypeVar { range: _, + node_index: _, name, bound, default, @@ -989,11 +983,8 @@ impl<'db, 'ast> SemanticIndexBuilder<'db, 'ast> { self.file, value_file_scope, self.current_scope(), - // SAFETY: `target` belongs to the `self.module` tree - #[expect(unsafe_code)] - unsafe { - AstNodeRef::new(self.module.clone(), target) - }, + // Note `target` belongs to the `self.module` tree + AstNodeRef::new(self.module, target), UnpackValue::new(unpackable.kind(), value), countme::Count::default(), )); @@ -1103,6 +1094,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { body, is_async: _, range: _, + node_index: _, } = function_def; for decorator in decorator_list { self.visit_decorator(decorator); @@ -1377,6 +1369,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { test, msg, range: _, + node_index: _, }) => { // We model an `assert test, msg` statement here. Conceptually, we can think of // this as being equivalent to the following: @@ -1447,6 +1440,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { ast::Stmt::AugAssign( aug_assign @ ast::StmtAugAssign { range: _, + node_index: _, target, op, value, @@ -1553,6 +1547,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { body, orelse, range: _, + node_index: _, }) => { self.visit_expr(test); @@ -1620,6 +1615,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { }) => { for item @ ast::WithItem { range: _, + node_index: _, context_expr, optional_vars, } in items @@ -1643,6 +1639,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { ast::Stmt::For( for_stmt @ ast::StmtFor { range: _, + node_index: _, is_async: _, target, iter, @@ -1680,6 +1677,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { subject, cases, range: _, + node_index: _, }) => { debug_assert_eq!(self.current_match_case, None); @@ -1767,6 +1765,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { finalbody, is_star, range: _, + node_index: _, }) => { self.record_ambiguous_visibility(); @@ -1814,6 +1813,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { type_: handled_exceptions, body: handler_body, range: _, + node_index: _, } = except_handler; if let Some(handled_exceptions) = handled_exceptions { @@ -1892,7 +1892,11 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { // Everything in the current block after a terminal statement is unreachable. self.mark_unreachable(); } - ast::Stmt::Global(ast::StmtGlobal { range: _, names }) => { + ast::Stmt::Global(ast::StmtGlobal { + range: _, + node_index: _, + names, + }) => { for name in names { let symbol_id = self.add_symbol(name.id.clone()); let symbol_table = self.current_place_table(); @@ -1915,7 +1919,11 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { } walk_stmt(self, stmt); } - ast::Stmt::Delete(ast::StmtDelete { targets, range: _ }) => { + ast::Stmt::Delete(ast::StmtDelete { + targets, + range: _, + node_index: _, + }) => { // We will check the target expressions and then delete them. walk_stmt(self, stmt); for target in targets { @@ -1926,7 +1934,11 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { } } } - ast::Stmt::Expr(ast::StmtExpr { value, range: _ }) if self.in_module_scope() => { + ast::Stmt::Expr(ast::StmtExpr { + value, + range: _, + node_index: _, + }) if self.in_module_scope() => { if let Some(expr) = dunder_all_extend_argument(value) { self.add_standalone_expression(expr); } @@ -2186,6 +2198,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { ast::Expr::BoolOp(ast::ExprBoolOp { values, range: _, + node_index: _, op, }) => { let pre_op = self.flow_snapshot(); @@ -2273,6 +2286,7 @@ impl<'ast> Visitor<'ast> for SemanticIndexBuilder<'_, 'ast> { if let ast::Pattern::MatchStar(ast::PatternMatchStar { name: Some(name), range: _, + node_index: _, }) = pattern { let symbol = self.add_symbol(name.id().clone()); @@ -2556,6 +2570,7 @@ fn dunder_all_extend_argument(value: &ast::Expr) -> Option<&ast::Expr> { args, keywords, range: _, + node_index: _, }, .. } = value.as_call_expr()?; diff --git a/crates/ty_python_semantic/src/semantic_index/definition.rs b/crates/ty_python_semantic/src/semantic_index/definition.rs index 391bbf87eb..9e1e6a89cf 100644 --- a/crates/ty_python_semantic/src/semantic_index/definition.rs +++ b/crates/ty_python_semantic/src/semantic_index/definition.rs @@ -333,15 +333,14 @@ pub(crate) struct MatchPatternDefinitionNodeRef<'ast> { } impl<'db> DefinitionNodeRef<'_, 'db> { - #[expect(unsafe_code)] - pub(super) unsafe fn into_owned(self, parsed: ParsedModuleRef) -> DefinitionKind<'db> { + pub(super) fn into_owned(self, parsed: &ParsedModuleRef) -> DefinitionKind<'db> { match self { DefinitionNodeRef::Import(ImportDefinitionNodeRef { node, alias_index, is_reexported, }) => DefinitionKind::Import(ImportDefinitionKind { - node: unsafe { AstNodeRef::new(parsed, node) }, + node: AstNodeRef::new(parsed, node), alias_index, is_reexported, }), @@ -351,28 +350,28 @@ impl<'db> DefinitionNodeRef<'_, 'db> { alias_index, is_reexported, }) => DefinitionKind::ImportFrom(ImportFromDefinitionKind { - node: unsafe { AstNodeRef::new(parsed, node) }, + node: AstNodeRef::new(parsed, node), alias_index, is_reexported, }), DefinitionNodeRef::ImportStar(star_import) => { let StarImportDefinitionNodeRef { node, place_id } = star_import; DefinitionKind::StarImport(StarImportDefinitionKind { - node: unsafe { AstNodeRef::new(parsed, node) }, + node: AstNodeRef::new(parsed, node), place_id, }) } DefinitionNodeRef::Function(function) => { - DefinitionKind::Function(unsafe { AstNodeRef::new(parsed, function) }) + DefinitionKind::Function(AstNodeRef::new(parsed, function)) } DefinitionNodeRef::Class(class) => { - DefinitionKind::Class(unsafe { AstNodeRef::new(parsed, class) }) + DefinitionKind::Class(AstNodeRef::new(parsed, class)) } DefinitionNodeRef::TypeAlias(type_alias) => { - DefinitionKind::TypeAlias(unsafe { AstNodeRef::new(parsed, type_alias) }) + DefinitionKind::TypeAlias(AstNodeRef::new(parsed, type_alias)) } DefinitionNodeRef::NamedExpression(named) => { - DefinitionKind::NamedExpression(unsafe { AstNodeRef::new(parsed, named) }) + DefinitionKind::NamedExpression(AstNodeRef::new(parsed, named)) } DefinitionNodeRef::Assignment(AssignmentDefinitionNodeRef { unpack, @@ -380,8 +379,8 @@ impl<'db> DefinitionNodeRef<'_, 'db> { target, }) => DefinitionKind::Assignment(AssignmentDefinitionKind { target_kind: TargetKind::from(unpack), - value: unsafe { AstNodeRef::new(parsed.clone(), value) }, - target: unsafe { AstNodeRef::new(parsed, target) }, + value: AstNodeRef::new(parsed, value), + target: AstNodeRef::new(parsed, target), }), DefinitionNodeRef::AnnotatedAssignment(AnnotatedAssignmentDefinitionNodeRef { node: _, @@ -389,14 +388,12 @@ impl<'db> DefinitionNodeRef<'_, 'db> { value, target, }) => DefinitionKind::AnnotatedAssignment(AnnotatedAssignmentDefinitionKind { - target: unsafe { AstNodeRef::new(parsed.clone(), target) }, - annotation: unsafe { AstNodeRef::new(parsed.clone(), annotation) }, - value: value.map(|v| unsafe { AstNodeRef::new(parsed, v) }), + target: AstNodeRef::new(parsed, target), + annotation: AstNodeRef::new(parsed, annotation), + value: value.map(|v| AstNodeRef::new(parsed, v)), }), DefinitionNodeRef::AugmentedAssignment(augmented_assignment) => { - DefinitionKind::AugmentedAssignment(unsafe { - AstNodeRef::new(parsed, augmented_assignment) - }) + DefinitionKind::AugmentedAssignment(AstNodeRef::new(parsed, augmented_assignment)) } DefinitionNodeRef::For(ForStmtDefinitionNodeRef { unpack, @@ -405,8 +402,8 @@ impl<'db> DefinitionNodeRef<'_, 'db> { is_async, }) => DefinitionKind::For(ForStmtDefinitionKind { target_kind: TargetKind::from(unpack), - iterable: unsafe { AstNodeRef::new(parsed.clone(), iterable) }, - target: unsafe { AstNodeRef::new(parsed, target) }, + iterable: AstNodeRef::new(parsed, iterable), + target: AstNodeRef::new(parsed, target), is_async, }), DefinitionNodeRef::Comprehension(ComprehensionDefinitionNodeRef { @@ -417,23 +414,19 @@ impl<'db> DefinitionNodeRef<'_, 'db> { is_async, }) => DefinitionKind::Comprehension(ComprehensionDefinitionKind { target_kind: TargetKind::from(unpack), - iterable: unsafe { AstNodeRef::new(parsed.clone(), iterable) }, - target: unsafe { AstNodeRef::new(parsed, target) }, + iterable: AstNodeRef::new(parsed, iterable), + target: AstNodeRef::new(parsed, target), first, is_async, }), DefinitionNodeRef::VariadicPositionalParameter(parameter) => { - DefinitionKind::VariadicPositionalParameter(unsafe { - AstNodeRef::new(parsed, parameter) - }) + DefinitionKind::VariadicPositionalParameter(AstNodeRef::new(parsed, parameter)) } DefinitionNodeRef::VariadicKeywordParameter(parameter) => { - DefinitionKind::VariadicKeywordParameter(unsafe { - AstNodeRef::new(parsed, parameter) - }) + DefinitionKind::VariadicKeywordParameter(AstNodeRef::new(parsed, parameter)) } DefinitionNodeRef::Parameter(parameter) => { - DefinitionKind::Parameter(unsafe { AstNodeRef::new(parsed, parameter) }) + DefinitionKind::Parameter(AstNodeRef::new(parsed, parameter)) } DefinitionNodeRef::WithItem(WithItemDefinitionNodeRef { unpack, @@ -442,8 +435,8 @@ impl<'db> DefinitionNodeRef<'_, 'db> { is_async, }) => DefinitionKind::WithItem(WithItemDefinitionKind { target_kind: TargetKind::from(unpack), - context_expr: unsafe { AstNodeRef::new(parsed.clone(), context_expr) }, - target: unsafe { AstNodeRef::new(parsed, target) }, + context_expr: AstNodeRef::new(parsed, context_expr), + target: AstNodeRef::new(parsed, target), is_async, }), DefinitionNodeRef::MatchPattern(MatchPatternDefinitionNodeRef { @@ -451,25 +444,25 @@ impl<'db> DefinitionNodeRef<'_, 'db> { identifier, index, }) => DefinitionKind::MatchPattern(MatchPatternDefinitionKind { - pattern: unsafe { AstNodeRef::new(parsed.clone(), pattern) }, - identifier: unsafe { AstNodeRef::new(parsed, identifier) }, + pattern: AstNodeRef::new(parsed, pattern), + identifier: AstNodeRef::new(parsed, identifier), index, }), DefinitionNodeRef::ExceptHandler(ExceptHandlerDefinitionNodeRef { handler, is_star, }) => DefinitionKind::ExceptHandler(ExceptHandlerDefinitionKind { - handler: unsafe { AstNodeRef::new(parsed, handler) }, + handler: AstNodeRef::new(parsed, handler), is_star, }), DefinitionNodeRef::TypeVar(node) => { - DefinitionKind::TypeVar(unsafe { AstNodeRef::new(parsed, node) }) + DefinitionKind::TypeVar(AstNodeRef::new(parsed, node)) } DefinitionNodeRef::ParamSpec(node) => { - DefinitionKind::ParamSpec(unsafe { AstNodeRef::new(parsed, node) }) + DefinitionKind::ParamSpec(AstNodeRef::new(parsed, node)) } DefinitionNodeRef::TypeVarTuple(node) => { - DefinitionKind::TypeVarTuple(unsafe { AstNodeRef::new(parsed, node) }) + DefinitionKind::TypeVarTuple(AstNodeRef::new(parsed, node)) } } } diff --git a/crates/ty_python_semantic/src/semantic_index/place.rs b/crates/ty_python_semantic/src/semantic_index/place.rs index d8295ef50e..f8fa9e1474 100644 --- a/crates/ty_python_semantic/src/semantic_index/place.rs +++ b/crates/ty_python_semantic/src/semantic_index/place.rs @@ -778,46 +778,42 @@ pub(crate) enum NodeWithScopeRef<'a> { impl NodeWithScopeRef<'_> { /// Converts the unowned reference to an owned [`NodeWithScopeKind`]. /// - /// # Safety - /// The node wrapped by `self` must be a child of `module`. - #[expect(unsafe_code)] - pub(super) unsafe fn to_kind(self, module: ParsedModuleRef) -> NodeWithScopeKind { - unsafe { - match self { - NodeWithScopeRef::Module => NodeWithScopeKind::Module, - NodeWithScopeRef::Class(class) => { - NodeWithScopeKind::Class(AstNodeRef::new(module, class)) - } - NodeWithScopeRef::Function(function) => { - NodeWithScopeKind::Function(AstNodeRef::new(module, function)) - } - NodeWithScopeRef::TypeAlias(type_alias) => { - NodeWithScopeKind::TypeAlias(AstNodeRef::new(module, type_alias)) - } - NodeWithScopeRef::TypeAliasTypeParameters(type_alias) => { - NodeWithScopeKind::TypeAliasTypeParameters(AstNodeRef::new(module, type_alias)) - } - NodeWithScopeRef::Lambda(lambda) => { - NodeWithScopeKind::Lambda(AstNodeRef::new(module, lambda)) - } - NodeWithScopeRef::FunctionTypeParameters(function) => { - NodeWithScopeKind::FunctionTypeParameters(AstNodeRef::new(module, function)) - } - NodeWithScopeRef::ClassTypeParameters(class) => { - NodeWithScopeKind::ClassTypeParameters(AstNodeRef::new(module, class)) - } - NodeWithScopeRef::ListComprehension(comprehension) => { - NodeWithScopeKind::ListComprehension(AstNodeRef::new(module, comprehension)) - } - NodeWithScopeRef::SetComprehension(comprehension) => { - NodeWithScopeKind::SetComprehension(AstNodeRef::new(module, comprehension)) - } - NodeWithScopeRef::DictComprehension(comprehension) => { - NodeWithScopeKind::DictComprehension(AstNodeRef::new(module, comprehension)) - } - NodeWithScopeRef::GeneratorExpression(generator) => { - NodeWithScopeKind::GeneratorExpression(AstNodeRef::new(module, generator)) - } + /// Note that node wrapped by `self` must be a child of `module`. + pub(super) fn to_kind(self, module: &ParsedModuleRef) -> NodeWithScopeKind { + match self { + NodeWithScopeRef::Module => NodeWithScopeKind::Module, + NodeWithScopeRef::Class(class) => { + NodeWithScopeKind::Class(AstNodeRef::new(module, class)) + } + NodeWithScopeRef::Function(function) => { + NodeWithScopeKind::Function(AstNodeRef::new(module, function)) + } + NodeWithScopeRef::TypeAlias(type_alias) => { + NodeWithScopeKind::TypeAlias(AstNodeRef::new(module, type_alias)) + } + NodeWithScopeRef::TypeAliasTypeParameters(type_alias) => { + NodeWithScopeKind::TypeAliasTypeParameters(AstNodeRef::new(module, type_alias)) + } + NodeWithScopeRef::Lambda(lambda) => { + NodeWithScopeKind::Lambda(AstNodeRef::new(module, lambda)) + } + NodeWithScopeRef::FunctionTypeParameters(function) => { + NodeWithScopeKind::FunctionTypeParameters(AstNodeRef::new(module, function)) + } + NodeWithScopeRef::ClassTypeParameters(class) => { + NodeWithScopeKind::ClassTypeParameters(AstNodeRef::new(module, class)) + } + NodeWithScopeRef::ListComprehension(comprehension) => { + NodeWithScopeKind::ListComprehension(AstNodeRef::new(module, comprehension)) + } + NodeWithScopeRef::SetComprehension(comprehension) => { + NodeWithScopeKind::SetComprehension(AstNodeRef::new(module, comprehension)) + } + NodeWithScopeRef::DictComprehension(comprehension) => { + NodeWithScopeKind::DictComprehension(AstNodeRef::new(module, comprehension)) + } + NodeWithScopeRef::GeneratorExpression(generator) => { + NodeWithScopeKind::GeneratorExpression(AstNodeRef::new(module, generator)) } } } diff --git a/crates/ty_python_semantic/src/semantic_index/re_exports.rs b/crates/ty_python_semantic/src/semantic_index/re_exports.rs index 1f31e05f7d..275e13d7a7 100644 --- a/crates/ty_python_semantic/src/semantic_index/re_exports.rs +++ b/crates/ty_python_semantic/src/semantic_index/re_exports.rs @@ -104,6 +104,7 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { name, asname, range: _, + node_index: _, } = alias; let name = &name.id; @@ -126,6 +127,7 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { pattern, name, range: _, + node_index: _, }) => { if let Some(pattern) = pattern { self.visit_pattern(pattern); @@ -145,6 +147,7 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { rest, keys: _, range: _, + node_index: _, }) => { for pattern in patterns { self.visit_pattern(pattern); @@ -153,7 +156,11 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { self.possibly_add_export(&rest.id, PossibleExportKind::Normal); } } - ast::Pattern::MatchStar(ast::PatternMatchStar { name, range: _ }) => { + ast::Pattern::MatchStar(ast::PatternMatchStar { + name, + range: _, + node_index: _, + }) => { if let Some(name) = name { self.possibly_add_export(&name.id, PossibleExportKind::Normal); } @@ -176,6 +183,7 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { type_params: _, // We don't want to visit the type params of the class body: _, // We don't want to visit the body of the class range: _, + node_index: _, }) => { self.possibly_add_export(&name.id, PossibleExportKind::Normal); for decorator in decorator_list { @@ -194,6 +202,7 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { type_params: _, // We don't want to visit the type params of the function body: _, // We don't want to visit the body of the function range: _, + node_index: _, is_async: _, }) => { self.possibly_add_export(&name.id, PossibleExportKind::Normal); @@ -212,6 +221,7 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { annotation, simple: _, range: _, + node_index: _, }) => { if value.is_some() || self.visiting_stub_file { self.visit_expr(target); @@ -227,6 +237,7 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { type_params: _, value: _, range: _, + node_index: _, }) => { self.visit_expr(name); // Neither walrus expressions nor statements cannot appear in type aliases; @@ -286,7 +297,12 @@ impl<'db> Visitor<'db> for ExportFinder<'db> { fn visit_expr(&mut self, expr: &'db ast::Expr) { match expr { - ast::Expr::Name(ast::ExprName { id, ctx, range: _ }) => { + ast::Expr::Name(ast::ExprName { + id, + ctx, + range: _, + node_index: _, + }) => { if ctx.is_store() { self.possibly_add_export(id, PossibleExportKind::Normal); } @@ -359,11 +375,13 @@ impl<'db> Visitor<'db> for WalrusFinder<'_, 'db> { target, value: _, range: _, + node_index: _, }) => { if let ast::Expr::Name(ast::ExprName { id, ctx: ast::ExprContext::Store, range: _, + node_index: _, }) = &**target { self.export_finder diff --git a/crates/ty_python_semantic/src/types/infer.rs b/crates/ty_python_semantic/src/types/infer.rs index c0897c8009..7b3b79472f 100644 --- a/crates/ty_python_semantic/src/types/infer.rs +++ b/crates/ty_python_semantic/src/types/infer.rs @@ -1984,7 +1984,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { match statement { ast::Stmt::FunctionDef(function) => self.infer_function_definition_statement(function), ast::Stmt::ClassDef(class) => self.infer_class_definition_statement(class), - ast::Stmt::Expr(ast::StmtExpr { range: _, value }) => { + ast::Stmt::Expr(ast::StmtExpr { + range: _, + node_index: _, + value, + }) => { self.infer_expression(value); } ast::Stmt::If(if_statement) => self.infer_if_statement(if_statement), @@ -2033,6 +2037,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ) { let ast::StmtFunctionDef { range: _, + node_index: _, is_async: _, name, type_params, @@ -2165,6 +2170,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_parameters(&mut self, parameters: &ast::Parameters) { let ast::Parameters { range: _, + node_index: _, posonlyargs: _, args: _, vararg, @@ -2186,6 +2192,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_parameter_with_default(&mut self, parameter_with_default: &ast::ParameterWithDefault) { let ast::ParameterWithDefault { range: _, + node_index: _, parameter, default: _, } = parameter_with_default; @@ -2199,6 +2206,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_parameter(&mut self, parameter: &ast::Parameter) { let ast::Parameter { range: _, + node_index: _, name: _, annotation, } = parameter; @@ -2244,6 +2252,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { parameter, default, range: _, + node_index: _, } = parameter_with_default; let default_ty = default .as_ref() @@ -2378,6 +2387,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ) { let ast::StmtClassDef { range: _, + node_index: _, name, type_params, decorator_list, @@ -2509,6 +2519,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_if_statement(&mut self, if_statement: &ast::StmtIf) { let ast::StmtIf { range: _, + node_index: _, test, body, elif_else_clauses, @@ -2525,6 +2536,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { for clause in elif_else_clauses { let ast::ElifElseClause { range: _, + node_index: _, test, body, } = clause; @@ -2544,6 +2556,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_try_statement(&mut self, try_statement: &ast::StmtTry) { let ast::StmtTry { range: _, + node_index: _, body, handlers, orelse, @@ -2560,6 +2573,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { name: symbol_name, body, range: _, + node_index: _, } = handler; // If `symbol_name` is `Some()` and `handled_exceptions` is `None`, @@ -2582,6 +2596,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_with_statement(&mut self, with_statement: &ast::StmtWith) { let ast::StmtWith { range: _, + node_index: _, is_async, items, body, @@ -2781,6 +2796,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ) { let ast::TypeParamTypeVar { range: _, + node_index: _, name, bound, default, @@ -2848,6 +2864,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ) { let ast::TypeParamParamSpec { range: _, + node_index: _, name: _, default, } = node; @@ -2867,6 +2884,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ) { let ast::TypeParamTypeVarTuple { range: _, + node_index: _, name: _, default, } = node; @@ -2882,6 +2900,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_match_statement(&mut self, match_statement: &ast::StmtMatch) { let ast::StmtMatch { range: _, + node_index: _, subject, cases, } = match_statement; @@ -2891,6 +2910,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { for case in cases { let ast::MatchCase { range: _, + node_index: _, body, pattern, guard, @@ -2958,6 +2978,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ast::Pattern::MatchClass(match_class) => { let ast::PatternMatchClass { range: _, + node_index: _, cls, arguments, } = match_class; @@ -2993,6 +3014,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ast::Pattern::MatchMapping(match_mapping) => { let ast::PatternMatchMapping { range: _, + node_index: _, keys, patterns, rest: _, @@ -3007,6 +3029,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ast::Pattern::MatchClass(match_class) => { let ast::PatternMatchClass { range: _, + node_index: _, cls, arguments, } = match_class; @@ -3035,6 +3058,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_assignment_statement(&mut self, assignment: &ast::StmtAssign) { let ast::StmtAssign { range: _, + node_index: _, targets, value, } = assignment; @@ -3652,6 +3676,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { // Non-name assignment targets are inferred as ordinary expressions, not definitions. let ast::StmtAnnAssign { range: _, + node_index: _, annotation, value, target, @@ -3853,6 +3878,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_augment_assignment(&mut self, assignment: &ast::StmtAugAssign) -> Type<'db> { let ast::StmtAugAssign { range: _, + node_index: _, target, op: _, value, @@ -3889,6 +3915,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_for_statement(&mut self, for_statement: &ast::StmtFor) { let ast::StmtFor { range: _, + node_index: _, target, iter, body, @@ -3945,6 +3972,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_while_statement(&mut self, while_statement: &ast::StmtWhile) { let ast::StmtWhile { range: _, + node_index: _, test, body, orelse, @@ -3961,7 +3989,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { } fn infer_import_statement(&mut self, import: &ast::StmtImport) { - let ast::StmtImport { range: _, names } = import; + let ast::StmtImport { + range: _, + node_index: _, + names, + } = import; for alias in names { self.infer_definition(alias); @@ -4028,6 +4060,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ) { let ast::Alias { range: _, + node_index: _, name, asname, } = alias; @@ -4077,6 +4110,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_import_from_statement(&mut self, import: &ast::StmtImportFrom) { let ast::StmtImportFrom { range: _, + node_index: _, module: _, names, level: _, @@ -4094,6 +4128,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_assert_statement(&mut self, assert: &ast::StmtAssert) { let ast::StmtAssert { range: _, + node_index: _, test, msg, } = assert; @@ -4110,6 +4145,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_raise_statement(&mut self, raise: &ast::StmtRaise) { let ast::StmtRaise { range: _, + node_index: _, exc, cause, } = raise; @@ -4350,7 +4386,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { } fn infer_delete_statement(&mut self, delete: &ast::StmtDelete) { - let ast::StmtDelete { range: _, targets } = delete; + let ast::StmtDelete { + range: _, + node_index: _, + targets, + } = delete; for target in targets { self.infer_expression(target); } @@ -4364,6 +4404,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_decorator(&mut self, decorator: &ast::Decorator) -> Type<'db> { let ast::Decorator { range: _, + node_index: _, expression, } = decorator; @@ -4467,7 +4508,10 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_expression_impl(&mut self, expression: &ast::Expr) -> Type<'db> { let ty = match expression { - ast::Expr::NoneLiteral(ast::ExprNoneLiteral { range: _ }) => Type::none(self.db()), + ast::Expr::NoneLiteral(ast::ExprNoneLiteral { + range: _, + node_index: _, + }) => Type::none(self.db()), ast::Expr::NumberLiteral(literal) => self.infer_number_literal_expression(literal), ast::Expr::BooleanLiteral(literal) => self.infer_boolean_literal_expression(literal), ast::Expr::StringLiteral(literal) => self.infer_string_literal_expression(literal), @@ -4526,7 +4570,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { } fn infer_number_literal_expression(&mut self, literal: &ast::ExprNumberLiteral) -> Type<'db> { - let ast::ExprNumberLiteral { range: _, value } = literal; + let ast::ExprNumberLiteral { + range: _, + node_index: _, + value, + } = literal; let db = self.db(); match value { @@ -4541,7 +4589,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { #[expect(clippy::unused_self)] fn infer_boolean_literal_expression(&mut self, literal: &ast::ExprBooleanLiteral) -> Type<'db> { - let ast::ExprBooleanLiteral { range: _, value } = literal; + let ast::ExprBooleanLiteral { + range: _, + node_index: _, + value, + } = literal; Type::BooleanLiteral(*value) } @@ -4561,7 +4613,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { } fn infer_fstring_expression(&mut self, fstring: &ast::ExprFString) -> Type<'db> { - let ast::ExprFString { range: _, value } = fstring; + let ast::ExprFString { + range: _, + node_index: _, + value, + } = fstring; let mut collector = StringPartsCollector::new(); for part in value { @@ -4577,6 +4633,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ast::InterpolatedStringElement::Interpolation(expression) => { let ast::InterpolatedElement { range: _, + node_index: _, expression, debug_text: _, conversion, @@ -4678,6 +4735,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_tuple_expression(&mut self, tuple: &ast::ExprTuple) -> Type<'db> { let ast::ExprTuple { range: _, + node_index: _, elts, ctx: _, parenthesized: _, @@ -4694,6 +4752,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_list_expression(&mut self, list: &ast::ExprList) -> Type<'db> { let ast::ExprList { range: _, + node_index: _, elts, ctx: _, } = list; @@ -4707,7 +4766,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { } fn infer_set_expression(&mut self, set: &ast::ExprSet) -> Type<'db> { - let ast::ExprSet { range: _, elts } = set; + let ast::ExprSet { + range: _, + node_index: _, + elts, + } = set; for elt in elts { self.infer_expression(elt); @@ -4718,7 +4781,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { } fn infer_dict_expression(&mut self, dict: &ast::ExprDict) -> Type<'db> { - let ast::ExprDict { range: _, items } = dict; + let ast::ExprDict { + range: _, + node_index: _, + items, + } = dict; for item in items { self.infer_optional_expression(item.key.as_ref()); @@ -4741,6 +4808,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_generator_expression(&mut self, generator: &ast::ExprGenerator) -> Type<'db> { let ast::ExprGenerator { range: _, + node_index: _, elt: _, generators, parenthesized: _, @@ -4754,6 +4822,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_list_comprehension_expression(&mut self, listcomp: &ast::ExprListComp) -> Type<'db> { let ast::ExprListComp { range: _, + node_index: _, elt: _, generators, } = listcomp; @@ -4766,6 +4835,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_dict_comprehension_expression(&mut self, dictcomp: &ast::ExprDictComp) -> Type<'db> { let ast::ExprDictComp { range: _, + node_index: _, key: _, value: _, generators, @@ -4779,6 +4849,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_set_comprehension_expression(&mut self, setcomp: &ast::ExprSetComp) -> Type<'db> { let ast::ExprSetComp { range: _, + node_index: _, elt: _, generators, } = setcomp; @@ -4791,6 +4862,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_generator_expression_scope(&mut self, generator: &ast::ExprGenerator) { let ast::ExprGenerator { range: _, + node_index: _, elt, generators, parenthesized: _, @@ -4803,6 +4875,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_list_comprehension_expression_scope(&mut self, listcomp: &ast::ExprListComp) { let ast::ExprListComp { range: _, + node_index: _, elt, generators, } = listcomp; @@ -4814,6 +4887,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_dict_comprehension_expression_scope(&mut self, dictcomp: &ast::ExprDictComp) { let ast::ExprDictComp { range: _, + node_index: _, key, value, generators, @@ -4827,6 +4901,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_set_comprehension_expression_scope(&mut self, setcomp: &ast::ExprSetComp) { let ast::ExprSetComp { range: _, + node_index: _, elt, generators, } = setcomp; @@ -4849,6 +4924,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_comprehension(&mut self, comprehension: &ast::Comprehension, is_first: bool) { let ast::Comprehension { range: _, + node_index: _, target, iter, ifs, @@ -4959,6 +5035,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ) -> Type<'db> { let ast::ExprNamed { range: _, + node_index: _, target, value, } = named; @@ -4974,6 +5051,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_if_expression(&mut self, if_expression: &ast::ExprIf) -> Type<'db> { let ast::ExprIf { range: _, + node_index: _, test, body, orelse, @@ -5000,6 +5078,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_lambda_expression(&mut self, lambda_expression: &ast::ExprLambda) -> Type<'db> { let ast::ExprLambda { range: _, + node_index: _, parameters, body: _, } = lambda_expression; @@ -5088,6 +5167,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { ) -> Type<'db> { let ast::ExprCall { range: _, + node_index: _, func, arguments, } = call_expression; @@ -5733,6 +5813,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_starred_expression(&mut self, starred: &ast::ExprStarred) -> Type<'db> { let ast::ExprStarred { range: _, + node_index: _, value, ctx: _, } = starred; @@ -5748,13 +5829,21 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { } fn infer_yield_expression(&mut self, yield_expression: &ast::ExprYield) -> Type<'db> { - let ast::ExprYield { range: _, value } = yield_expression; + let ast::ExprYield { + range: _, + node_index: _, + value, + } = yield_expression; self.infer_optional_expression(value.as_deref()); todo_type!("yield expressions") } fn infer_yield_from_expression(&mut self, yield_from: &ast::ExprYieldFrom) -> Type<'db> { - let ast::ExprYieldFrom { range: _, value } = yield_from; + let ast::ExprYieldFrom { + range: _, + node_index: _, + value, + } = yield_from; let iterable_type = self.infer_expression(value); iterable_type.try_iterate(self.db()).unwrap_or_else(|err| { @@ -5767,7 +5856,11 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { } fn infer_await_expression(&mut self, await_expression: &ast::ExprAwait) -> Type<'db> { - let ast::ExprAwait { range: _, value } = await_expression; + let ast::ExprAwait { + range: _, + node_index: _, + value, + } = await_expression; self.infer_expression(value); todo_type!("generic `typing.Awaitable` type") } @@ -5794,6 +5887,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_name_load(&mut self, name_node: &ast::ExprName) -> Type<'db> { let ast::ExprName { range: _, + node_index: _, id: symbol_name, ctx: _, } = name_node; @@ -6160,6 +6254,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { value, attr, range: _, + node_index: _, ctx: _, } = attribute; @@ -6253,6 +6348,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { value, attr: _, range: _, + node_index: _, ctx, } = attribute; @@ -6276,6 +6372,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_unary_expression(&mut self, unary: &ast::ExprUnaryOp) -> Type<'db> { let ast::ExprUnaryOp { range: _, + node_index: _, op, operand, } = unary; @@ -6370,6 +6467,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { op, right, range: _, + node_index: _, } = binary; let left_ty = self.infer_expression(left); @@ -6765,6 +6863,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_boolean_expression(&mut self, bool_op: &ast::ExprBoolOp) -> Type<'db> { let ast::ExprBoolOp { range: _, + node_index: _, op, values, } = bool_op; @@ -6850,6 +6949,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_compare_expression(&mut self, compare: &ast::ExprCompare) -> Type<'db> { let ast::ExprCompare { range: _, + node_index: _, left, ops, comparators, @@ -7649,6 +7749,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { value, slice, range: _, + node_index: _, ctx, } = subscript; @@ -7676,6 +7777,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_subscript_load(&mut self, subscript: &ast::ExprSubscript) -> Type<'db> { let ast::ExprSubscript { range: _, + node_index: _, value, slice, ctx: _, @@ -8153,6 +8255,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { let ast::ExprSlice { range: _, + node_index: _, lower, upper, step, @@ -8188,6 +8291,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { fn infer_type_parameters(&mut self, type_parameters: &ast::TypeParams) { let ast::TypeParams { range: _, + node_index: _, type_params, } = type_parameters; for type_param in type_params { @@ -8494,6 +8598,7 @@ impl<'db> TypeInferenceBuilder<'db, '_> { slice, ctx: _, range: _, + node_index: _, } = subscript; let value_ty = self.infer_expression(value); @@ -9037,6 +9142,7 @@ impl<'db> TypeInferenceBuilder<'db, '_> { ) -> Type<'db> { let ast::ExprSubscript { range: _, + node_index: _, value: _, slice, ctx: _, diff --git a/crates/ty_python_semantic/src/types/narrow.rs b/crates/ty_python_semantic/src/types/narrow.rs index a0e4ce3624..9af855a100 100644 --- a/crates/ty_python_semantic/src/types/narrow.rs +++ b/crates/ty_python_semantic/src/types/narrow.rs @@ -605,6 +605,7 @@ impl<'db, 'ast> NarrowingConstraintsBuilder<'db, 'ast> { let ast::ExprCompare { range: _, + node_index: _, left, ops, comparators, @@ -656,12 +657,14 @@ impl<'db, 'ast> NarrowingConstraintsBuilder<'db, 'ast> { } ast::Expr::Call(ast::ExprCall { range: _, + node_index: _, func: callable, arguments: ast::Arguments { args, keywords, range: _, + node_index: _, }, }) if keywords.is_empty() => { let rhs_class = match rhs_ty { diff --git a/crates/ty_python_semantic/src/types/signatures.rs b/crates/ty_python_semantic/src/types/signatures.rs index 810a5a8a8e..bcaeb6be12 100644 --- a/crates/ty_python_semantic/src/types/signatures.rs +++ b/crates/ty_python_semantic/src/types/signatures.rs @@ -1097,6 +1097,7 @@ impl<'db> Parameters<'db> { kwonlyargs, kwarg, range: _, + node_index: _, } = parameters; let default_type = |param: &ast::ParameterWithDefault| { param