ruff/crates
Dhruv Manilawala 97ae617fac
Introduce `LiteralExpressionRef` for all literals (#8339)
## Summary

This PR adds a new `LiteralExpressionRef` which wraps all of the literal
expression nodes in a single enum. This allows for a narrow type when
working exclusively with a literal node. Additionally, it also
implements a `Expr::as_literal_expr` method to return the new enum if
the expression is indeed a literal one.

A few rules have been updated to account for the new enum:
1. `redundant_literal_union`
2. `if_else_block_instead_of_dict_lookup`
3. `magic_value_comparison`

To account for the change in (2), a new `ComparableLiteral` has been
added which can be constructed from the new enum
(`ComparableLiteral::from(<LiteralExpressionRef>)`).

### Open Questions

1. The new `ComparableLiteral` can be exclusively used via the
`LiteralExpressionRef` enum. Should we remove all of the literal
variants from `ComparableExpr` and instead have a single
`ComparableExpr::Literal(ComparableLiteral)` variant instead?

## Test Plan

`cargo test`
2023-10-31 12:56:11 +00:00
..
flake8_to_ruff Bump version to v0.1.3 (#8259) 2023-10-26 18:57:05 +00:00
ruff_benchmark Bump codspeed-criterion-compat from 2.2.0 to 2.3.0 (#8128) 2023-10-23 10:04:19 +01:00
ruff_cache Introduce `FormatterSettings` (#7545) 2023-09-21 08:01:24 +02:00
ruff_cli Avoid duplicating linter-formatter compatibility warnings (#8292) 2023-10-30 19:32:55 -04:00
ruff_dev Bump tempfile from 3.8.0 to 3.8.1 (#8345) 2023-10-30 09:06:48 +00:00
ruff_diagnostics Add settings for promoting and demoting fixes (#7841) 2023-10-10 20:04:21 +00:00
ruff_formatter Rust 1.73 (#8007) 2023-10-23 02:12:25 +00:00
ruff_index Add unreachable code rule (#5384) 2023-07-04 14:27:23 +00:00
ruff_linter Introduce `LiteralExpressionRef` for all literals (#8339) 2023-10-31 12:56:11 +00:00
ruff_macros Add `#[automatically_derived]` to derived impls (#8080) 2023-10-20 00:12:27 +00:00
ruff_notebook Bump serde_with from 3.3.0 to 3.4.0 (#8130) 2023-10-23 09:05:52 +00:00
ruff_python_ast Introduce `LiteralExpressionRef` for all literals (#8339) 2023-10-31 12:56:11 +00:00
ruff_python_codegen Split `Constant` to individual literal nodes (#8064) 2023-10-30 12:13:23 +05:30
ruff_python_formatter Delete redundant branch in `NeedsParentheses` (#8377) 2023-10-31 12:06:17 +00:00
ruff_python_index Consider unterminated f-strings in `FStringRanges` (#8154) 2023-10-27 11:11:44 +00:00
ruff_python_literal Implement our own small-integer optimization (#7584) 2023-09-25 15:13:21 +00:00
ruff_python_parser Fix panic with 8 in octal escape (#8356) 2023-10-30 14:42:15 +01:00
ruff_python_resolver Bump tempfile from 3.8.0 to 3.8.1 (#8345) 2023-10-30 09:06:48 +00:00
ruff_python_semantic Split `Constant` to individual literal nodes (#8064) 2023-10-30 12:13:23 +05:30
ruff_python_stdlib Improvements to RUF015 (#7848) 2023-10-08 14:49:45 +00:00
ruff_python_trivia Preserve trailing statement semicolons when using `fmt: skip` (#8273) 2023-10-30 00:07:14 +00:00
ruff_shrinking Bump version to v0.1.3 (#8259) 2023-10-26 18:57:05 +00:00
ruff_source_file Add `cell` field to JSON output format (#7664) 2023-10-13 01:06:02 +00:00
ruff_text_size Unify line size settings between ruff and the formatter (#6873) 2023-08-28 06:44:56 +00:00
ruff_wasm Rename `tab-size` to `indent-width` (#8082) 2023-10-24 10:01:24 -04:00
ruff_workspace Bump tempfile from 3.8.0 to 3.8.1 (#8345) 2023-10-30 09:06:48 +00:00