Split Constant to individual literal nodes (#8064)

## Summary

This PR splits the `Constant` enum as individual literal nodes. It
introduces the following new nodes for each variant:
* `ExprStringLiteral`
* `ExprBytesLiteral`
* `ExprNumberLiteral`
* `ExprBooleanLiteral`
* `ExprNoneLiteral`
* `ExprEllipsisLiteral`

The main motivation behind this refactor is to introduce the new AST
node for implicit string concatenation in the coming PR. The elements of
that node will be either a string literal, bytes literal or a f-string
which can be implemented using an enum. This means that a string or
bytes literal cannot be represented by `Constant::Str` /
`Constant::Bytes` which creates an inconsistency.

This PR avoids that inconsistency by splitting the constant nodes into
it's own literal nodes, literal being the more appropriate naming
convention from a static analysis tool perspective.

This also makes working with literals in the linter and formatter much
more ergonomic like, for example, if one would want to check if this is
a string literal, it can be done easily using
`Expr::is_string_literal_expr` or matching against `Expr::StringLiteral`
as oppose to matching against the `ExprConstant` and enum `Constant`. A
few AST helper methods can be simplified as well which will be done in a
follow-up PR.

This introduces a new `Expr::is_literal_expr` method which is the same
as `Expr::is_constant_expr`. There are also intermediary changes related
to implicit string concatenation which are quiet less. This is done so
as to avoid having a huge PR which this already is.

## Test Plan

1. Verify and update all of the existing snapshots (parser, visitor)
2. Verify that the ecosystem check output remains **unchanged** for both
the linter and formatter

### Formatter ecosystem check

#### `main`

| project | similarity index | total files | changed files |

|----------------|------------------:|------------------:|------------------:|
| cpython | 0.75803 | 1799 | 1647 |
| django | 0.99983 | 2772 | 34 |
| home-assistant | 0.99953 | 10596 | 186 |
| poetry | 0.99891 | 317 | 17 |
| transformers | 0.99966 | 2657 | 330 |
| twine | 1.00000 | 33 | 0 |
| typeshed | 0.99978 | 3669 | 20 |
| warehouse | 0.99977 | 654 | 13 |
| zulip | 0.99970 | 1459 | 22 |

#### `dhruv/constant-to-literal`

| project | similarity index | total files | changed files |

|----------------|------------------:|------------------:|------------------:|
| cpython | 0.75803 | 1799 | 1647 |
| django | 0.99983 | 2772 | 34 |
| home-assistant | 0.99953 | 10596 | 186 |
| poetry | 0.99891 | 317 | 17 |
| transformers | 0.99966 | 2657 | 330 |
| twine | 1.00000 | 33 | 0 |
| typeshed | 0.99978 | 3669 | 20 |
| warehouse | 0.99977 | 654 | 13 |
| zulip | 0.99970 | 1459 | 22 |
This commit is contained in:
Dhruv Manilawala 2023-10-30 12:13:23 +05:30 committed by GitHub
parent 78bbf6d403
commit 230c9ce236
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
268 changed files with 6663 additions and 6741 deletions

View file

@ -73,7 +73,12 @@ pub enum AnyNode {
ExprCall(ast::ExprCall),
ExprFormattedValue(ast::ExprFormattedValue),
ExprFString(ast::ExprFString),
ExprConstant(ast::ExprConstant),
ExprStringLiteral(ast::ExprStringLiteral),
ExprBytesLiteral(ast::ExprBytesLiteral),
ExprNumberLiteral(ast::ExprNumberLiteral),
ExprBooleanLiteral(ast::ExprBooleanLiteral),
ExprNoneLiteral(ast::ExprNoneLiteral),
ExprEllipsisLiteral(ast::ExprEllipsisLiteral),
ExprAttribute(ast::ExprAttribute),
ExprSubscript(ast::ExprSubscript),
ExprStarred(ast::ExprStarred),
@ -160,7 +165,12 @@ impl AnyNode {
| AnyNode::ExprCall(_)
| AnyNode::ExprFormattedValue(_)
| AnyNode::ExprFString(_)
| AnyNode::ExprConstant(_)
| AnyNode::ExprStringLiteral(_)
| AnyNode::ExprBytesLiteral(_)
| AnyNode::ExprNumberLiteral(_)
| AnyNode::ExprBooleanLiteral(_)
| AnyNode::ExprNoneLiteral(_)
| AnyNode::ExprEllipsisLiteral(_)
| AnyNode::ExprAttribute(_)
| AnyNode::ExprSubscript(_)
| AnyNode::ExprStarred(_)
@ -219,7 +229,12 @@ impl AnyNode {
AnyNode::ExprCall(node) => Some(Expr::Call(node)),
AnyNode::ExprFormattedValue(node) => Some(Expr::FormattedValue(node)),
AnyNode::ExprFString(node) => Some(Expr::FString(node)),
AnyNode::ExprConstant(node) => Some(Expr::Constant(node)),
AnyNode::ExprStringLiteral(node) => Some(Expr::StringLiteral(node)),
AnyNode::ExprBytesLiteral(node) => Some(Expr::BytesLiteral(node)),
AnyNode::ExprNumberLiteral(node) => Some(Expr::NumberLiteral(node)),
AnyNode::ExprBooleanLiteral(node) => Some(Expr::BooleanLiteral(node)),
AnyNode::ExprNoneLiteral(node) => Some(Expr::NoneLiteral(node)),
AnyNode::ExprEllipsisLiteral(node) => Some(Expr::EllipsisLiteral(node)),
AnyNode::ExprAttribute(node) => Some(Expr::Attribute(node)),
AnyNode::ExprSubscript(node) => Some(Expr::Subscript(node)),
AnyNode::ExprStarred(node) => Some(Expr::Starred(node)),
@ -334,7 +349,12 @@ impl AnyNode {
| AnyNode::ExprCall(_)
| AnyNode::ExprFormattedValue(_)
| AnyNode::ExprFString(_)
| AnyNode::ExprConstant(_)
| AnyNode::ExprStringLiteral(_)
| AnyNode::ExprBytesLiteral(_)
| AnyNode::ExprNumberLiteral(_)
| AnyNode::ExprBooleanLiteral(_)
| AnyNode::ExprNoneLiteral(_)
| AnyNode::ExprEllipsisLiteral(_)
| AnyNode::ExprAttribute(_)
| AnyNode::ExprSubscript(_)
| AnyNode::ExprStarred(_)
@ -429,7 +449,12 @@ impl AnyNode {
| AnyNode::ExprCall(_)
| AnyNode::ExprFormattedValue(_)
| AnyNode::ExprFString(_)
| AnyNode::ExprConstant(_)
| AnyNode::ExprStringLiteral(_)
| AnyNode::ExprBytesLiteral(_)
| AnyNode::ExprNumberLiteral(_)
| AnyNode::ExprBooleanLiteral(_)
| AnyNode::ExprNoneLiteral(_)
| AnyNode::ExprEllipsisLiteral(_)
| AnyNode::ExprAttribute(_)
| AnyNode::ExprSubscript(_)
| AnyNode::ExprStarred(_)
@ -509,7 +534,12 @@ impl AnyNode {
| AnyNode::ExprCall(_)
| AnyNode::ExprFormattedValue(_)
| AnyNode::ExprFString(_)
| AnyNode::ExprConstant(_)
| AnyNode::ExprStringLiteral(_)
| AnyNode::ExprBytesLiteral(_)
| AnyNode::ExprNumberLiteral(_)
| AnyNode::ExprBooleanLiteral(_)
| AnyNode::ExprNoneLiteral(_)
| AnyNode::ExprEllipsisLiteral(_)
| AnyNode::ExprAttribute(_)
| AnyNode::ExprSubscript(_)
| AnyNode::ExprStarred(_)
@ -614,7 +644,12 @@ impl AnyNode {
Self::ExprCall(node) => AnyNodeRef::ExprCall(node),
Self::ExprFormattedValue(node) => AnyNodeRef::ExprFormattedValue(node),
Self::ExprFString(node) => AnyNodeRef::ExprFString(node),
Self::ExprConstant(node) => AnyNodeRef::ExprConstant(node),
Self::ExprStringLiteral(node) => AnyNodeRef::ExprStringLiteral(node),
Self::ExprBytesLiteral(node) => AnyNodeRef::ExprBytesLiteral(node),
Self::ExprNumberLiteral(node) => AnyNodeRef::ExprNumberLiteral(node),
Self::ExprBooleanLiteral(node) => AnyNodeRef::ExprBooleanLiteral(node),
Self::ExprNoneLiteral(node) => AnyNodeRef::ExprNoneLiteral(node),
Self::ExprEllipsisLiteral(node) => AnyNodeRef::ExprEllipsisLiteral(node),
Self::ExprAttribute(node) => AnyNodeRef::ExprAttribute(node),
Self::ExprSubscript(node) => AnyNodeRef::ExprSubscript(node),
Self::ExprStarred(node) => AnyNodeRef::ExprStarred(node),
@ -2650,12 +2685,12 @@ impl AstNode for ast::ExprFString {
}
}
}
impl AstNode for ast::ExprConstant {
impl AstNode for ast::ExprStringLiteral {
fn cast(kind: AnyNode) -> Option<Self>
where
Self: Sized,
{
if let AnyNode::ExprConstant(node) = kind {
if let AnyNode::ExprStringLiteral(node) = kind {
Some(node)
} else {
None
@ -2663,7 +2698,7 @@ impl AstNode for ast::ExprConstant {
}
fn cast_ref(kind: AnyNodeRef) -> Option<&Self> {
if let AnyNodeRef::ExprConstant(node) = kind {
if let AnyNodeRef::ExprStringLiteral(node) = kind {
Some(node)
} else {
None
@ -2678,12 +2713,180 @@ impl AstNode for ast::ExprConstant {
AnyNode::from(self)
}
fn visit_preorder<'a, V>(&'a self, visitor: &mut V)
fn visit_preorder<'a, V>(&'a self, _visitor: &mut V)
where
V: PreorderVisitor<'a> + ?Sized,
{
}
}
impl AstNode for ast::ExprBytesLiteral {
fn cast(kind: AnyNode) -> Option<Self>
where
Self: Sized,
{
if let AnyNode::ExprBytesLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn cast_ref(kind: AnyNodeRef) -> Option<&Self> {
if let AnyNodeRef::ExprBytesLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn as_any_node_ref(&self) -> AnyNodeRef {
AnyNodeRef::from(self)
}
fn into_any_node(self) -> AnyNode {
AnyNode::from(self)
}
fn visit_preorder<'a, V>(&'a self, _visitor: &mut V)
where
V: PreorderVisitor<'a> + ?Sized,
{
}
}
impl AstNode for ast::ExprNumberLiteral {
fn cast(kind: AnyNode) -> Option<Self>
where
Self: Sized,
{
if let AnyNode::ExprNumberLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn cast_ref(kind: AnyNodeRef) -> Option<&Self> {
if let AnyNodeRef::ExprNumberLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn as_any_node_ref(&self) -> AnyNodeRef {
AnyNodeRef::from(self)
}
fn into_any_node(self) -> AnyNode {
AnyNode::from(self)
}
fn visit_preorder<'a, V>(&'a self, _visitor: &mut V)
where
V: PreorderVisitor<'a> + ?Sized,
{
}
}
impl AstNode for ast::ExprBooleanLiteral {
fn cast(kind: AnyNode) -> Option<Self>
where
Self: Sized,
{
if let AnyNode::ExprBooleanLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn cast_ref(kind: AnyNodeRef) -> Option<&Self> {
if let AnyNodeRef::ExprBooleanLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn as_any_node_ref(&self) -> AnyNodeRef {
AnyNodeRef::from(self)
}
fn into_any_node(self) -> AnyNode {
AnyNode::from(self)
}
fn visit_preorder<'a, V>(&'a self, _visitor: &mut V)
where
V: PreorderVisitor<'a> + ?Sized,
{
}
}
impl AstNode for ast::ExprNoneLiteral {
fn cast(kind: AnyNode) -> Option<Self>
where
Self: Sized,
{
if let AnyNode::ExprNoneLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn cast_ref(kind: AnyNodeRef) -> Option<&Self> {
if let AnyNodeRef::ExprNoneLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn as_any_node_ref(&self) -> AnyNodeRef {
AnyNodeRef::from(self)
}
fn into_any_node(self) -> AnyNode {
AnyNode::from(self)
}
fn visit_preorder<'a, V>(&'a self, _visitor: &mut V)
where
V: PreorderVisitor<'a> + ?Sized,
{
}
}
impl AstNode for ast::ExprEllipsisLiteral {
fn cast(kind: AnyNode) -> Option<Self>
where
Self: Sized,
{
if let AnyNode::ExprEllipsisLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn cast_ref(kind: AnyNodeRef) -> Option<&Self> {
if let AnyNodeRef::ExprEllipsisLiteral(node) = kind {
Some(node)
} else {
None
}
}
fn as_any_node_ref(&self) -> AnyNodeRef {
AnyNodeRef::from(self)
}
fn into_any_node(self) -> AnyNode {
AnyNode::from(self)
}
fn visit_preorder<'a, V>(&'a self, _visitor: &mut V)
where
V: PreorderVisitor<'a> + ?Sized,
{
let ast::ExprConstant { value, range: _ } = self;
visitor.visit_constant(value);
}
}
impl AstNode for ast::ExprAttribute {
@ -4124,7 +4327,12 @@ impl From<Expr> for AnyNode {
Expr::Call(node) => AnyNode::ExprCall(node),
Expr::FormattedValue(node) => AnyNode::ExprFormattedValue(node),
Expr::FString(node) => AnyNode::ExprFString(node),
Expr::Constant(node) => AnyNode::ExprConstant(node),
Expr::StringLiteral(node) => AnyNode::ExprStringLiteral(node),
Expr::BytesLiteral(node) => AnyNode::ExprBytesLiteral(node),
Expr::NumberLiteral(node) => AnyNode::ExprNumberLiteral(node),
Expr::BooleanLiteral(node) => AnyNode::ExprBooleanLiteral(node),
Expr::NoneLiteral(node) => AnyNode::ExprNoneLiteral(node),
Expr::EllipsisLiteral(node) => AnyNode::ExprEllipsisLiteral(node),
Expr::Attribute(node) => AnyNode::ExprAttribute(node),
Expr::Subscript(node) => AnyNode::ExprSubscript(node),
Expr::Starred(node) => AnyNode::ExprStarred(node),
@ -4451,9 +4659,39 @@ impl From<ast::ExprFString> for AnyNode {
}
}
impl From<ast::ExprConstant> for AnyNode {
fn from(node: ast::ExprConstant) -> Self {
AnyNode::ExprConstant(node)
impl From<ast::ExprStringLiteral> for AnyNode {
fn from(node: ast::ExprStringLiteral) -> Self {
AnyNode::ExprStringLiteral(node)
}
}
impl From<ast::ExprBytesLiteral> for AnyNode {
fn from(node: ast::ExprBytesLiteral) -> Self {
AnyNode::ExprBytesLiteral(node)
}
}
impl From<ast::ExprNumberLiteral> for AnyNode {
fn from(node: ast::ExprNumberLiteral) -> Self {
AnyNode::ExprNumberLiteral(node)
}
}
impl From<ast::ExprBooleanLiteral> for AnyNode {
fn from(node: ast::ExprBooleanLiteral) -> Self {
AnyNode::ExprBooleanLiteral(node)
}
}
impl From<ast::ExprNoneLiteral> for AnyNode {
fn from(node: ast::ExprNoneLiteral) -> Self {
AnyNode::ExprNoneLiteral(node)
}
}
impl From<ast::ExprEllipsisLiteral> for AnyNode {
fn from(node: ast::ExprEllipsisLiteral) -> Self {
AnyNode::ExprEllipsisLiteral(node)
}
}
@ -4693,7 +4931,12 @@ impl Ranged for AnyNode {
AnyNode::ExprCall(node) => node.range(),
AnyNode::ExprFormattedValue(node) => node.range(),
AnyNode::ExprFString(node) => node.range(),
AnyNode::ExprConstant(node) => node.range(),
AnyNode::ExprStringLiteral(node) => node.range(),
AnyNode::ExprBytesLiteral(node) => node.range(),
AnyNode::ExprNumberLiteral(node) => node.range(),
AnyNode::ExprBooleanLiteral(node) => node.range(),
AnyNode::ExprNoneLiteral(node) => node.range(),
AnyNode::ExprEllipsisLiteral(node) => node.range(),
AnyNode::ExprAttribute(node) => node.range(),
AnyNode::ExprSubscript(node) => node.range(),
AnyNode::ExprStarred(node) => node.range(),
@ -4780,7 +5023,12 @@ pub enum AnyNodeRef<'a> {
ExprCall(&'a ast::ExprCall),
ExprFormattedValue(&'a ast::ExprFormattedValue),
ExprFString(&'a ast::ExprFString),
ExprConstant(&'a ast::ExprConstant),
ExprStringLiteral(&'a ast::ExprStringLiteral),
ExprBytesLiteral(&'a ast::ExprBytesLiteral),
ExprNumberLiteral(&'a ast::ExprNumberLiteral),
ExprBooleanLiteral(&'a ast::ExprBooleanLiteral),
ExprNoneLiteral(&'a ast::ExprNoneLiteral),
ExprEllipsisLiteral(&'a ast::ExprEllipsisLiteral),
ExprAttribute(&'a ast::ExprAttribute),
ExprSubscript(&'a ast::ExprSubscript),
ExprStarred(&'a ast::ExprStarred),
@ -4866,7 +5114,12 @@ impl<'a> AnyNodeRef<'a> {
AnyNodeRef::ExprCall(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprFormattedValue(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprFString(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprConstant(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprStringLiteral(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprBytesLiteral(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprNumberLiteral(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprBooleanLiteral(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprNoneLiteral(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprEllipsisLiteral(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprAttribute(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprSubscript(node) => NonNull::from(*node).cast(),
AnyNodeRef::ExprStarred(node) => NonNull::from(*node).cast(),
@ -4958,7 +5211,12 @@ impl<'a> AnyNodeRef<'a> {
AnyNodeRef::ExprCall(_) => NodeKind::ExprCall,
AnyNodeRef::ExprFormattedValue(_) => NodeKind::ExprFormattedValue,
AnyNodeRef::ExprFString(_) => NodeKind::ExprFString,
AnyNodeRef::ExprConstant(_) => NodeKind::ExprConstant,
AnyNodeRef::ExprStringLiteral(_) => NodeKind::ExprStringLiteral,
AnyNodeRef::ExprBytesLiteral(_) => NodeKind::ExprBytesLiteral,
AnyNodeRef::ExprNumberLiteral(_) => NodeKind::ExprNumberLiteral,
AnyNodeRef::ExprBooleanLiteral(_) => NodeKind::ExprBooleanLiteral,
AnyNodeRef::ExprNoneLiteral(_) => NodeKind::ExprNoneLiteral,
AnyNodeRef::ExprEllipsisLiteral(_) => NodeKind::ExprEllipsisLiteral,
AnyNodeRef::ExprAttribute(_) => NodeKind::ExprAttribute,
AnyNodeRef::ExprSubscript(_) => NodeKind::ExprSubscript,
AnyNodeRef::ExprStarred(_) => NodeKind::ExprStarred,
@ -5045,7 +5303,12 @@ impl<'a> AnyNodeRef<'a> {
| AnyNodeRef::ExprCall(_)
| AnyNodeRef::ExprFormattedValue(_)
| AnyNodeRef::ExprFString(_)
| AnyNodeRef::ExprConstant(_)
| AnyNodeRef::ExprStringLiteral(_)
| AnyNodeRef::ExprBytesLiteral(_)
| AnyNodeRef::ExprNumberLiteral(_)
| AnyNodeRef::ExprBooleanLiteral(_)
| AnyNodeRef::ExprNoneLiteral(_)
| AnyNodeRef::ExprEllipsisLiteral(_)
| AnyNodeRef::ExprAttribute(_)
| AnyNodeRef::ExprSubscript(_)
| AnyNodeRef::ExprStarred(_)
@ -5104,7 +5367,12 @@ impl<'a> AnyNodeRef<'a> {
| AnyNodeRef::ExprCall(_)
| AnyNodeRef::ExprFormattedValue(_)
| AnyNodeRef::ExprFString(_)
| AnyNodeRef::ExprConstant(_)
| AnyNodeRef::ExprStringLiteral(_)
| AnyNodeRef::ExprBytesLiteral(_)
| AnyNodeRef::ExprNumberLiteral(_)
| AnyNodeRef::ExprBooleanLiteral(_)
| AnyNodeRef::ExprNoneLiteral(_)
| AnyNodeRef::ExprEllipsisLiteral(_)
| AnyNodeRef::ExprAttribute(_)
| AnyNodeRef::ExprSubscript(_)
| AnyNodeRef::ExprStarred(_)
@ -5218,7 +5486,12 @@ impl<'a> AnyNodeRef<'a> {
| AnyNodeRef::ExprCall(_)
| AnyNodeRef::ExprFormattedValue(_)
| AnyNodeRef::ExprFString(_)
| AnyNodeRef::ExprConstant(_)
| AnyNodeRef::ExprStringLiteral(_)
| AnyNodeRef::ExprBytesLiteral(_)
| AnyNodeRef::ExprNumberLiteral(_)
| AnyNodeRef::ExprBooleanLiteral(_)
| AnyNodeRef::ExprNoneLiteral(_)
| AnyNodeRef::ExprEllipsisLiteral(_)
| AnyNodeRef::ExprAttribute(_)
| AnyNodeRef::ExprSubscript(_)
| AnyNodeRef::ExprStarred(_)
@ -5313,7 +5586,12 @@ impl<'a> AnyNodeRef<'a> {
| AnyNodeRef::ExprCall(_)
| AnyNodeRef::ExprFormattedValue(_)
| AnyNodeRef::ExprFString(_)
| AnyNodeRef::ExprConstant(_)
| AnyNodeRef::ExprStringLiteral(_)
| AnyNodeRef::ExprBytesLiteral(_)
| AnyNodeRef::ExprNumberLiteral(_)
| AnyNodeRef::ExprBooleanLiteral(_)
| AnyNodeRef::ExprNoneLiteral(_)
| AnyNodeRef::ExprEllipsisLiteral(_)
| AnyNodeRef::ExprAttribute(_)
| AnyNodeRef::ExprSubscript(_)
| AnyNodeRef::ExprStarred(_)
@ -5393,7 +5671,12 @@ impl<'a> AnyNodeRef<'a> {
| AnyNodeRef::ExprCall(_)
| AnyNodeRef::ExprFormattedValue(_)
| AnyNodeRef::ExprFString(_)
| AnyNodeRef::ExprConstant(_)
| AnyNodeRef::ExprStringLiteral(_)
| AnyNodeRef::ExprBytesLiteral(_)
| AnyNodeRef::ExprNumberLiteral(_)
| AnyNodeRef::ExprBooleanLiteral(_)
| AnyNodeRef::ExprNoneLiteral(_)
| AnyNodeRef::ExprEllipsisLiteral(_)
| AnyNodeRef::ExprAttribute(_)
| AnyNodeRef::ExprSubscript(_)
| AnyNodeRef::ExprStarred(_)
@ -5507,7 +5790,12 @@ impl<'a> AnyNodeRef<'a> {
AnyNodeRef::ExprCall(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprFormattedValue(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprFString(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprConstant(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprStringLiteral(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprBytesLiteral(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprNumberLiteral(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprBooleanLiteral(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprNoneLiteral(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprEllipsisLiteral(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprAttribute(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprSubscript(node) => node.visit_preorder(visitor),
AnyNodeRef::ExprStarred(node) => node.visit_preorder(visitor),
@ -5888,9 +6176,39 @@ impl<'a> From<&'a ast::ExprFString> for AnyNodeRef<'a> {
}
}
impl<'a> From<&'a ast::ExprConstant> for AnyNodeRef<'a> {
fn from(node: &'a ast::ExprConstant) -> Self {
AnyNodeRef::ExprConstant(node)
impl<'a> From<&'a ast::ExprStringLiteral> for AnyNodeRef<'a> {
fn from(node: &'a ast::ExprStringLiteral) -> Self {
AnyNodeRef::ExprStringLiteral(node)
}
}
impl<'a> From<&'a ast::ExprBytesLiteral> for AnyNodeRef<'a> {
fn from(node: &'a ast::ExprBytesLiteral) -> Self {
AnyNodeRef::ExprBytesLiteral(node)
}
}
impl<'a> From<&'a ast::ExprNumberLiteral> for AnyNodeRef<'a> {
fn from(node: &'a ast::ExprNumberLiteral) -> Self {
AnyNodeRef::ExprNumberLiteral(node)
}
}
impl<'a> From<&'a ast::ExprBooleanLiteral> for AnyNodeRef<'a> {
fn from(node: &'a ast::ExprBooleanLiteral) -> Self {
AnyNodeRef::ExprBooleanLiteral(node)
}
}
impl<'a> From<&'a ast::ExprNoneLiteral> for AnyNodeRef<'a> {
fn from(node: &'a ast::ExprNoneLiteral) -> Self {
AnyNodeRef::ExprNoneLiteral(node)
}
}
impl<'a> From<&'a ast::ExprEllipsisLiteral> for AnyNodeRef<'a> {
fn from(node: &'a ast::ExprEllipsisLiteral) -> Self {
AnyNodeRef::ExprEllipsisLiteral(node)
}
}
@ -6091,7 +6409,12 @@ impl<'a> From<&'a Expr> for AnyNodeRef<'a> {
Expr::Call(node) => AnyNodeRef::ExprCall(node),
Expr::FormattedValue(node) => AnyNodeRef::ExprFormattedValue(node),
Expr::FString(node) => AnyNodeRef::ExprFString(node),
Expr::Constant(node) => AnyNodeRef::ExprConstant(node),
Expr::StringLiteral(node) => AnyNodeRef::ExprStringLiteral(node),
Expr::BytesLiteral(node) => AnyNodeRef::ExprBytesLiteral(node),
Expr::NumberLiteral(node) => AnyNodeRef::ExprNumberLiteral(node),
Expr::BooleanLiteral(node) => AnyNodeRef::ExprBooleanLiteral(node),
Expr::NoneLiteral(node) => AnyNodeRef::ExprNoneLiteral(node),
Expr::EllipsisLiteral(node) => AnyNodeRef::ExprEllipsisLiteral(node),
Expr::Attribute(node) => AnyNodeRef::ExprAttribute(node),
Expr::Subscript(node) => AnyNodeRef::ExprSubscript(node),
Expr::Starred(node) => AnyNodeRef::ExprStarred(node),
@ -6243,7 +6566,12 @@ impl Ranged for AnyNodeRef<'_> {
AnyNodeRef::ExprCall(node) => node.range(),
AnyNodeRef::ExprFormattedValue(node) => node.range(),
AnyNodeRef::ExprFString(node) => node.range(),
AnyNodeRef::ExprConstant(node) => node.range(),
AnyNodeRef::ExprStringLiteral(node) => node.range(),
AnyNodeRef::ExprBytesLiteral(node) => node.range(),
AnyNodeRef::ExprNumberLiteral(node) => node.range(),
AnyNodeRef::ExprBooleanLiteral(node) => node.range(),
AnyNodeRef::ExprNoneLiteral(node) => node.range(),
AnyNodeRef::ExprEllipsisLiteral(node) => node.range(),
AnyNodeRef::ExprAttribute(node) => node.range(),
AnyNodeRef::ExprSubscript(node) => node.range(),
AnyNodeRef::ExprStarred(node) => node.range(),
@ -6332,7 +6660,12 @@ pub enum NodeKind {
ExprCall,
ExprFormattedValue,
ExprFString,
ExprConstant,
ExprStringLiteral,
ExprBytesLiteral,
ExprNumberLiteral,
ExprBooleanLiteral,
ExprNoneLiteral,
ExprEllipsisLiteral,
ExprAttribute,
ExprSubscript,
ExprStarred,